Bonsoir,

je suis entrain de tenter de valider mon formulaire avant saisie dans la base de donnees je fais une verification des champs en javascript et maintenant je cherche a la faire coté php mais je rencontre un soucis avec une regex, je voudrai que dans le la variable name on ne puisse saisir que des caractere de a à z en majuscules et minuscules ainsi que des nombres et je ne voudrai aucun caracteres comme des virgules ou point-virgules mais lorsque je saisi dans mon formulaire un nom et une virgule cela me le prends alors qu'il ne faudrai pas! là je seche... auriez vous une petite idee a me soumettre

merci d'avance

Gilles

if(preg_match("^-. a-zA-Z0-9]{3,}$")){
        echo 'Le nom' . $name. ' est <strong>valide</strong> !';
    }else{
        echo 'Le nom' . $name . ' n\'est pas valide, recommencez !';
    }
}

5 réponses


PhiSyX
Réponse acceptée

Salut. C'est normal que ça ne fonctionne pas.
Tu fais un $db->quote($name) et je te laisse deviner, la méthode quote (de $db) ajoute des 'quotes' au début et à la fin de la chaîne de caractères.
Place ta condition (if (pre..)) avant tes variables quotées? ^^

Hi,

Il faut revoir l'expression et la fonction preg_match attend qu'on lui donne/passe 2 paramètres au minimum (obligatoires).

preg_match('/^[a-zA-Z0-9]{3,}$/', $name)
gilles40
Auteur

Salut,
j avais oublier de mettre le parametre mais dans mon code il y est et la validation ne passe toujours pas
je mets ci dessous le code qui doit gerer la verif et la sauvegarde
merci d'avance pour votre aide

Gilles

if(isset($_POST'name'])){
    checkCsrf();
        $name = /*strtoupper*/($db->quote($_POST'name']));
        //$slug = $db->quote(Slug($_POST'name']));
        $add1 = $db->quote($_POST'add1']);
        $add2 = $db->quote($_POST'add2']);
        $cp = $db->quote($_POST'cp']);
        $ville = $db->quote($_POST'ville']);
        $phone = $db->quote($_POST'phone']);
        $fax = $db->quote($_POST'fax']);
        $email = $db->quote($_POST'email']);
        $tarifvl = $db->quote($_POST'tarifvl']);
        $tarifvu = $db->quote($_POST'tarifvu']);
        $clocal = $db->quote($_POST'clocal']);
        $agence_id = $db->quote($_POST'agence_id']);
        $comment = $db->quote($_POST'comment']);

    if(preg_match('/^[a-zA-Z0-9]{3,}$/', $name)){

            /**
         * Sauvegarde du client
         */
        if(isset($_GET'id'])){
            $id = $db->quote($_GET'id']);
            $db->query("UPDATE customers SET name=$name, add1=$add1, add2=$add2, cp=$cp, ville=$ville, phone=$phone, fax=$fax, email=$email, tarifvl=$tarifvl, tarifvu=$tarifvu, clocal=$clocal, agence_id=$agence_id, comment=$comment, updated=NOW() WHERE id=$id");
        }else{
            $db->query("INSERT INTO customers SET name=$name, add1=$add1, add2=$add2, cp=$cp, ville=$ville, phone=$phone, fax=$fax, email=$email, tarifvl=$tarifvl, tarifvu=$tarifvu, clocal=$clocal, agence_id=$agence_id, comment=$comment, created=NOW()");
            $_GET'id'] = $db->lastInsertId();
        }
        setFlash('Le client a bien été ajouté');
        header('Location:customer.php');
        die();
    }else{
        setFlash("erreur dans les donnees saisies", 'danger');
    }
}

Bonjour,

Je peux avoir un debug de $name ?

En gros savoir ce que tu match

Cordialement

gilles40
Auteur

merci PhySiX ca fonctionne je vais pouvoir continuer....