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
si tu veux compter le nombre de caractere il faut utiliser strlen comme pour le prenom
Salut,
essayes dans ta condition de faire un count plutôt que sha1 : count($_POST'password'])==0
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>
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>
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