[PHP] probleme avec preg_replace
Fermé
Lorient
-
16 mars 2010 à 17:46
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 mars 2010 à 08:53
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 mars 2010 à 08:53
A voir également:
- [PHP] probleme avec preg_replace
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
5 réponses
Archeus01
Messages postés
1571
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2022
450
16 mars 2010 à 17:59
16 mars 2010 à 17:59
return true;
}
return false;
}
il manque pas un else et deux{ ?
{return true;
} else {
return false;
}
Après tes deux return cités , vu que tu fais un return les lignes
if (testIP($ip)){
echo "Bienvenue";
}
else {
echo "Accés refusé";
}
ne sont jamais executées. Qui plus est, ni a-t-il pas une erreur dans ton regex sur le .* ???
}
return false;
}
il manque pas un else et deux{ ?
{return true;
} else {
return false;
}
Après tes deux return cités , vu que tu fais un return les lignes
if (testIP($ip)){
echo "Bienvenue";
}
else {
echo "Accés refusé";
}
ne sont jamais executées. Qui plus est, ni a-t-il pas une erreur dans ton regex sur le .* ???
En faite j'ai besoin de laisser l'accès à quelques chose dans mon site seulement à des IPs et des plages précis, s'il vous plait n'hésitez pas de me sauver ! si vous avez de solution, c'est très urgent..
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
16 mars 2010 à 19:25
16 mars 2010 à 19:25
<?php //allowable IP addresses for admin login. $ip = array(); $ip[] = '10.10.3.*'; $ip[] = '211.109.238.74'; $ip[] = '254.254.254.2'; function testIP($ip){ //testing that correct IP address used in order //to access admin area... for($i=0, $i<$sizeof($ip); $i++) { $ipregex = preg_replace("/./", "\.", $ip[$i]); $ipregex = preg_replace("/*/", ".*", $ipregex); if(preg_match('/'.$ipregex.'/', $_SERVER[REMOTE_ADDR])){ return true; }else{ return false; } } } if (testIP($ip)){ echo "Bienvenue"; }else { echo "Accés refusé"; } ?>
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
>
Lorient
16 mars 2010 à 20:36
16 mars 2010 à 20:36
D'une part, la fonction d'origine devrait fonctionner, le else n'est pas nécessaire, il corrompt même le fonctionnement, voila l'indentation correcte du script :
Pour le débogage ajoute cette ligne entre preg_replace("/*/", ".*", $ipregex); et if (preg_match(
<? //allowable IP addresses for admin login. $ip = array(); $ip[] = '10.10.3.*'; $ip[] = '211.109.238.74'; $ip[] = '254.254.254.2'; function testIP($ip){ //testing that correct IP address used in order //to access admin area... for($i=0, $cnt=count($ip); $i<$cnt; $i++) { $ipregex = preg_replace("/./", "\.", $ip[$i]); $ipregex = preg_replace("/*/", ".*", $ipregex); if (preg_match('/'.$ipregex.'/', $_SERVER[REMOTE_ADDR]) return true; } return false; } if (testIP($ip)) echo "Bienvenue"; else echo "Accès refusé"; ?>
Pour le débogage ajoute cette ligne entre preg_replace("/*/", ".*", $ipregex); et if (preg_match(
echo 'Test de correspondance de '.$ipregex.' avec '.$_SERVER[REMOTE_ADDR].' <br />';
Merci, mais toujours le même erreur
Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in C:\AppServ\www\text.php on line 13
Test de correspondance de avec 127.0.0.1
Bienvenue
Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in C:\AppServ\www\text.php on line 13
Test de correspondance de avec 127.0.0.1
Bienvenue
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
17 mars 2010 à 08:53
17 mars 2010 à 08:53
je ne vois pas a quoi sert ton preg_replace
tu modifies les valeurs de ton array $ip ?
hors il suffirait que dans cet array tu saisisses les valeurs ad ok
$ipregex = preg_replace("/./", "\.", $ip[$i]); // tu remplaces . par \.
$ipregex = preg_replace("/*/", ".*", $ipregex); // tu remplaces * par .*
essayes en supprimant les preg_replace:
tu modifies les valeurs de ton array $ip ?
hors il suffirait que dans cet array tu saisisses les valeurs ad ok
$ipregex = preg_replace("/./", "\.", $ip[$i]); // tu remplaces . par \.
$ipregex = preg_replace("/*/", ".*", $ipregex); // tu remplaces * par .*
essayes en supprimant les preg_replace:
<?php //allowable IP addresses for admin login. $ip = array(); $ip[] = '10.10.3.*'; $ip[] = '211.109.238.74'; $ip[] = '254.254.254.2'; function testIP($ip){ //testing that correct IP address used in order //to access admin area... for($i=0, $i<$sizeof($ip); $i++) { $ipregex = $ip[$i]); if(preg_match('/'.$ipregex.'/', $_SERVER[REMOTE_ADDR])){ return true; }else{ return false; } } } if (testIP($ip)){ echo "Bienvenue"; }else { echo "Accés refusé"; } ?>
16 mars 2010 à 18:11
(et aprés l'ajout de else avant le return false; je reçois cet erreur : Parse error: syntax error, unexpected $end in C:\AppServ\www\text.php on line 28 )