Bonjour,

Suite au TP espace membres, j'ai voulu rendre obligatoire le password comme pour l’émail et le prénom.
Ne connaissant pas suffisamment le php j'y suis allé à taton.

J'ai aucune erreur à l'affichage, mais le message qui devrait s'afficher n'ayant pas rentré de pass à l'inscription ne s'affiche pas. Voici ce que j'ai mis dans mon fichier register.php.

<?php require_once 'cnx.php'; ?>
<?php
if (!empty($_POST) && strlen ($_POST'prenom']) >4 && filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) && sha1 ($_POST'password']) >5 )
{
    //$prenom et $email protection contre les injections sql
    //$password et $token protection sha1
    $prenom = strip_tags ($_POST'prenom']);
    $email = strip_tags ($_POST'email']);
    $password = sha1 ($_POST'password']);
    $token = sha1 (uniqid (rand()));
// ici l'envoi du mail

else
{
    if (!empty($_POST) && strlen ($_POST'prenom']) <4)
        {
            $error_prenom = ' Votre prénom doit comporter au minimum 4 caractères !';
        }
    if (!empty($_POST) && !filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) )
        {
            $error_email = ' Votre email n\'est pas valide !';
        }
    if (!empty($_POST) && sha1 ($_POST'password']) >5)
        {
            $error_password = ' Vous n\'avez pas indiqué votre mot de passe !';
        }
// ci-dessous la partie HTML du formulaire
<form action="register.php" method="POST">

                    <label for="prenom">Prenom : </label><br>
                    <input type="text" name="prenom"><br>
                    <div class="error"><?php if(isset($error_prenom)) { echo $error_prenom; } ?></div>
                    <label for="email">Email : </label><br>
                    <input type="text" name="email"><br>
                    <div class="error"><?php if(isset($error_email)) { echo $error_email; } ?></div>
                    <label for="password">Mot de passe : </label><br >
                    <input type="password" name="password" value="" ><br><br>
                    <div class="error"><?php if(isset($error_password)) { echo $error_password; } ?></div>

                    <input type="submit" value="S'inscrire" >

                </form><br>

Merci pour votre correction je n'ai pas mis tout le code et remplacé les parties manquantes par des commentaires pour faire plus court.

Bruno

8 réponses


Gregory
Réponse acceptée

si tu veux compter le nombre de caractere il faut utiliser strlen comme pour le prenom

SnoT
Réponse acceptée

Oui tu mets exactement comme ça =)

Salut,
essayes dans ta condition de faire un count plutôt que sha1 : count($_POST'password'])==0

Bruno
Auteur

Merci pour avoir répondu. Mais toujours rien même problème

Tu l'as bien remplacé dans tes deux conditions?
Essayes avec ces modifications (lignes 3 et 25)

<?php require_once 'cnx.php'; ?>
<?php
if (!empty($_POST) && strlen ($_POST'prenom']) >4 && filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) && count($_POST'password'])!=0 )
{
    //$prenom et $email protection contre les injections sql
    //$password et $token protection sha1
    $prenom = strip_tags ($_POST'prenom']);
    $email = strip_tags ($_POST'email']);
    $password = sha1 ($_POST'password']);
    $token = sha1 (uniqid (rand()));

// ici l'envoi du mail

else
{
    if (!empty($_POST) && strlen ($_POST'prenom']) <4)
        {
            $error_prenom = ' Votre prénom doit comporter au minimum 4 caractères !';
        }
    if (!empty($_POST) && !filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) )
        {
            $error_email = ' Votre email n\'est pas valide !';
        }
    if (!empty($_POST) && count($_POST'password'])==0)
        {
            $error_password = ' Vous n\'avez pas indiqué votre mot de passe !';
        }

// ci-dessous la partie HTML du formulaire

<form action="register.php" method="POST">

                    <label for="prenom">Prenom : </label><br>
                    <input type="text" name="prenom"><br>
                    <div class="error"><?php if(isset($error_prenom)) { echo $error_prenom; } ?></div>
                    <label for="email">Email : </label><br>
                    <input type="text" name="email"><br>
                    <div class="error"><?php if(isset($error_email)) { echo $error_email; } ?></div>
                    <label for="password">Mot de passe : </label><br >
                    <input type="password" name="password" value="" ><br><br>
                    <div class="error"><?php if(isset($error_password)) { echo $error_password; } ?></div>

                    <input type="submit" value="S'inscrire" >

                </form><br>
Bruno
Auteur

Bonjour,
Oui j'ai bien changé les deux lignes voici

<?php require_once 'cnx.php'; ?>
<?php
if (!empty($_POST) && strlen ($_POST'prenom']) >4 && filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) && count($_POST'password'])!=0 )
{
    //$prenom et $email protection contre les injections sql
    //$password et $token protection sha1
    $prenom = strip_tags ($_POST'prenom']);
    $email = strip_tags ($_POST'email']);
    $password = sha1 ($_POST'password']);
    $token = sha1 (uniqid (rand()));

    $q = array('prenom' => $prenom, 'email' => $email, 'password' => $password, 'token' => $token );
    $sql = 'INSERT INTO users (prenom, email, password, token) VALUES (:prenom, :email, :password, :token)';
    $req = $cnx->prepare($sql);
    $reg->execute($q);

    // ici l'envoi du mail
        // message d'erreur des champs mal remplis
}
else
{
    if (!empty($_POST) && strlen ($_POST'prenom']) <4)
        {
            $error_prenom = ' Vous devez mettre votre prénom minimum 4 caractères !';
        }
    if (!empty($_POST) && !filter_var ($_POST'email'], FILTER_VALIDATE_EMAIL) )
        {
            $error_email = ' Votre email n\'est pas valide !';
        }
    if (!empty($_POST) && count($_POST'password'])==0)
        {
            $error_password = ' Vous n\'avez pas indiqué votre mot de passe !';
        }
}
?>
        // partie html du formulaire

<h2>Formulaire d'inscription :</h2>
                <form action="register.php" method="POST">

                    <label for="prenom">Prénom : </label><br>
                    <input type="text" name="prenom"><br>
                    <div class="error"><?php if(isset($error_prenom)) { echo $error_prenom; } ?></div>
                    <label for="email">Email : </label><br>
                    <input type="text" name="email"><br>
                    <div class="error"><?php if(isset($error_email)) { echo $error_email; } ?></div>
                    <label for="password">Mot de passe : </label><br >
                    <input type="password" name="password" value="" ><br><br>
                    <div class="error"><?php if(isset($error_password)) { echo $error_password; } ?></div>

                    <input type="submit" value="S'inscrire" >

                </form><br>
Bruno
Auteur

Je mets comme ça dans les deux ligne ?

// Dans la deuxième ligne je mets ceci ?
&& strlen ($_POST'password']) >5
//Et ceci dans l'autre condition ?
if (!empty($_POST) && strlen($_POST'password'])<5)

Si c'est le cas je le ferais dès mon retour chez moi.

Je te tiens au courant.
Et encore merci

Bruno
Auteur

@Gregory et @SnoT
Merci, sa marche nickel chrome ;-)