Page 1 sur 1

probleme de regex

Posté : 26 sept. 2005, 19:42
par VaN
<?php
$pattern2 = "#^[_a-zA-Z0-9-]$#";
// on verifie si les champs obligatoires sont remplis
	if(isset($_POST['login']) && $_POST['login']!="")
	{	
		if (!preg_match($pattern2,$_POST['login']))
		{
			echo "<center><font class=\"warning\">Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.</font></center><br /><br />";
		}
		else
		{
			$login = $_POST['login'];
		}
	}?>
un login de type 'gfgg' ou 'sqfqdfq' me renvoie le mesage d'erreur "Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.". je ne comprends pas. probleme dans mon if() ou dans ma regex ?

Posté : 26 sept. 2005, 20:08
par Truc
salut, essaie sans la négation
if (preg_match($pattern2,$_POST['login']))

Posté : 26 sept. 2005, 20:48
par VaN
il ne marque pas le message d'erreur, mais il accepte les caractères du genre <, tous les caracteres a interdire dans des champs texte , ce que je veux éviter. Il y'a peut etre un moyen plus simple sinon ?

Posté : 26 sept. 2005, 21:07
par rami
Solution plus simple ? euh.. appeler Ripat ;)

Plus sérieusement, connais tu a fonction ctype_alnum?

Posté : 26 sept. 2005, 21:16
par Truc
euh.. récuperation de la doc preg_match
$pattern2 = "/^[a-z0-9][\w.-]*$/i";
if (!preg_match($pattern2,$_POST['login']))
        {
            echo "<center><font class=\"warning\">Le login comporte des caractères interdits.<br />Veuillez le saisir à nouveau.</font></center><br /><br />";
        }
        else
        {
            $login = $_POST['login'];
        }