Page 1 sur 1

Fonction pour calculer le nombre d'occurence dans une chaine

Posté : 12 nov. 2005, 05:26
par Elie
Voila.

Je fais une verification d'ip pour l'acces a mon site.

Genre si le mec est en 124.24.15.254 et que son mask est 124.24.*.*
Je veux que l'ip verifie soit juste 124.24

J'ai dev ce petit bout de code mais qui reste du bricolage pourri.
J'ai pas reussi mieux car je n'ai pas trouvé de fonction pour calculer le nombre d'occurence dans une chaine !

Qu'en pensez vous ?
<?php

				$ip = $_SERVER['REMOTE_ADDR'];
				$row['ip_autorise'] = "127.*.*.*";
				
				
				// Calcul du mask
				$count = explode('.*', $row['ip_autorise']);
				$explode = explode('.', $ip);
				$ip_mask = "";
				for($i=0;$i<5-count($count);$i++) {
				$ip_mask .= $explode[$i].".";
				 }

Posté : 12 nov. 2005, 10:26
par nicolas
Si ton masque d'ip est 124.124 alors une petite vérification de ce type fonctionne:

Code : Tout sélectionner

<?php if (ereg('^124\.124\.', $_SERVER['REMOTE_ADDR'])) { // ip autorisée } else { // ip non autorisée } ?>

Posté : 12 nov. 2005, 23:32
par Xenon_54
Fonction permettant de vérifier si une adresse IP est "autorisée" par le masque fournie.

La fonction vérifie également si les adresses IP fournies en paramètre sont valides. Si une des adresses IP est invalide, la fonction retourne FALSE.

Si l'adresse IP est autorisée, la fonction retourne TRUE.
<?php
/*
 * $ip = 192.168.2.1
 * $mask = 192.168.0.0
*/
function authorizeIP($ip, $mask) {

	// Changement de l'adresse IP en format long
	// Adresse IP invalide retourne FALSE
	if (FALSE === ($ip = ip2long($ip))) { return FALSE; }

	// Changement de l'adresse IP mask en format long
	// Adresse IP invalide retourne FALSE
	if (FALSE === ($mask = ip2long($mask))) { return FALSE; }
	
	// Vérification de la concordance
	return $mask === ($ip & $mask);
}

if (TRUE === authorizeIP('192.168.2.1', '192.168.0.0') ) {
	echo 'Adresse IP autorisée';
} else {
	echo 'Adresse IP interdite';
}
?>