Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Calimero
wrote:
Je voudrais tester la validité d'une adrese IP saisie
Je pensais le faire comme ça, mais cela ne fonctionne pas
J'en déduis que par "c'est pas bon", ca laisse passer des IP mal-formées ?
Si tu espères des réponses, il est nécessaire de fournir les infos pertinentes à la résolution du problème: messages d'erreur, exemples qui fonctionnent ou ne fonctionnent pas, ... Dans le cas présent, on peut comprendre/deviner, mais bon...
if (!(ereg("([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})",$ip))){ }
Le . est un caractère spécial dans un pattern de regexp. Il signifie "n'importe quel caractère". Avec cette expression, en toute logique, la saisie suivante: 1x2x3x4 passe.
Il faut inhiber le point pour qu'il soit considéré simplement comme un point.
Je propose: if (ereg('([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',$ip)) { echo "c'est bonn"; } else { echo "c'est pas bonn"; }
Pour rire: quid de l'IPv6 ? ;-)
-- @+ Calimero
news1@charlet.ch wrote:
Je voudrais tester la validité d'une adrese IP saisie
Je pensais le faire comme ça, mais cela ne fonctionne pas
J'en déduis que par "c'est pas bon", ca laisse passer des IP mal-formées ?
Si tu espères des réponses, il est nécessaire de fournir les infos
pertinentes à la résolution du problème: messages d'erreur, exemples
qui fonctionnent ou ne fonctionnent pas, ...
Dans le cas présent, on peut comprendre/deviner, mais bon...
if
(!(ereg("([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})",$ip))){
}
Le . est un caractère spécial dans un pattern de regexp. Il signifie
"n'importe quel caractère".
Avec cette expression, en toute logique, la saisie suivante:
1x2x3x4
passe.
Il faut inhiber le point pour qu'il soit considéré simplement comme un
point.
Je propose:
if (ereg('([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',$ip))
{
echo "c'est bonn";
}
else
{
echo "c'est pas bonn";
}
Je voudrais tester la validité d'une adrese IP saisie
Je pensais le faire comme ça, mais cela ne fonctionne pas
J'en déduis que par "c'est pas bon", ca laisse passer des IP mal-formées ?
Si tu espères des réponses, il est nécessaire de fournir les infos pertinentes à la résolution du problème: messages d'erreur, exemples qui fonctionnent ou ne fonctionnent pas, ... Dans le cas présent, on peut comprendre/deviner, mais bon...
if (!(ereg("([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})",$ip))){ }
Le . est un caractère spécial dans un pattern de regexp. Il signifie "n'importe quel caractère". Avec cette expression, en toute logique, la saisie suivante: 1x2x3x4 passe.
Il faut inhiber le point pour qu'il soit considéré simplement comme un point.
Je propose: if (ereg('([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',$ip)) { echo "c'est bonn"; } else { echo "c'est pas bonn"; }
Pour rire: quid de l'IPv6 ? ;-)
-- @+ Calimero
Olivier Miakinen
Je voudrais tester la validité d'une adrese IP saisie Je pensais le faire comme ça, mais cela ne fonctionne pas
Cette expression semble pouvoir répondre vrai pour une adresse IP syntaxiquement correcte, mais elle le fera aussi pour plein d'autres chaînes.
Quelques exemples : - "999.999.999.999" (alors que les valeurs vont de 0 à 255) - "127#0{0^1" (le « . » remplace n'importe quel caractère) - "Téléphone : 29.57.43.99.32 (le soir)" (manquent des ancres)
Peut-on le faire avec la fonction ereg
Oui, sans doute, mais personnellement je préfère preg_match(). Par exemple un truc comme ce qui suit (non testé) :
Cette expression semble pouvoir répondre vrai pour une adresse IP
syntaxiquement correcte, mais elle le fera aussi pour plein d'autres
chaînes.
Quelques exemples :
- "999.999.999.999" (alors que les valeurs vont de 0 à 255)
- "127#0{0^1" (le « . » remplace n'importe quel caractère)
- "Téléphone : 29.57.43.99.32 (le soir)" (manquent des ancres)
Peut-on le faire avec la fonction ereg
Oui, sans doute, mais personnellement je préfère preg_match().
Par exemple un truc comme ce qui suit (non testé) :
Cette expression semble pouvoir répondre vrai pour une adresse IP syntaxiquement correcte, mais elle le fera aussi pour plein d'autres chaînes.
Quelques exemples : - "999.999.999.999" (alors que les valeurs vont de 0 à 255) - "127#0{0^1" (le « . » remplace n'importe quel caractère) - "Téléphone : 29.57.43.99.32 (le soir)" (manquent des ancres)
Peut-on le faire avec la fonction ereg
Oui, sans doute, mais personnellement je préfère preg_match(). Par exemple un truc comme ce qui suit (non testé) :