J'ai fais un formulaire, jusqu'ici pas de problème, les données sont traitées par du PHP et envoyées correctement dans ma base de donnée. Mais j'ai essayé de faire une vérification des champs de saisies (au début j'avais fais en JavaScript mais ça restreint des possibilités et c'est pas pratique) en PHP cependant ça ne marche pas je dois mal mis prendre
Voici mon formulaire :
<form id="myForm" method="post" action="traitements.php">
<p>
<label class="form_col" for="login">Pseudo :</label><br />
<input name="login" id="login" type="text" tabindex="10" />
<br /><br />
<label class="form_col" for="pwd1">Mot de passe :</label><br />
<input name="pwd1" id="pwd1" type="password" tabindex="20" />
<br />
<label class="form_col" for="pwd2">Mot de passe (confirmation) :</label><br />
<input name="pwd2" id="pwd2" type="password" tabindex="30" />
<br />
<label class="form_col" for="email">Addresse e-mail :</label><br />
<input name="email" id="email" type="text" tabindex="40"/>
<br />
</p>
<p>
<span class="form_col"></span>
<input name="valider" type="submit" value="M'inscrire" /> <input name="reset" type="reset" value="Réinitialiser" />
</p>
</form>
Et voici la page traitements.php qui traite mon formulaire :<?php
$affiche_formulaire=TRUE;
if (isset($_POST['valider']))
{
$affiche_formulaire=FALSE;
try
{
$options = array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION);
//connexion à la base de données
$bdd = new PDO('mysql:host=localhost;dbname=ffa', 'root', '', $options);
//hachage du mot de passe et définition des variables
$pass_hache = sha1($_POST['pwd1']);
$login = $_POST['login'];
$email = $_POST['email'];
$mdp = $_POST['pwd1'];
$mdp2 = $_POST['pwd2'];
//VERIFICATIONS BANALES
if(!$mdp || !$mdp2 || strlen($mdp) < 5)
{
echo'Votre mot de passe ou sa confirmation est inexistant ou votre mot de passe fait moins de 5 caracteres<br />';
return FALSE;
}
if($mdp!=$mdp2)
{
echo'Votre mot de passe n\'est pas le meme que sa confirmation<br />';
return FALSE;
}
if(!$login || strlen($login) > 10)
{
echo'Votre pseudo est inexistant ou fait plus de 10 caractères<br />';
return FALSE;
}
if(!$email)
{
echo'Votre e-mail est inexistant.<br />';
return FALSE;
}
//VERIFICATIONS DES EXISTENCES
$reponse_mail=mysql_query("SELECT email FROM membre WHERE email='$email'") or die ('Erreur : '.mysql_error()); //verification si e-mail existe déjà
$count_mail=mysql_num_rows($reponse_mail);
if($count_mail == 1)
{
echo'Cet e-mail existe déjà.<br />';
return FALSE;
}
$reponse_pseudo=mysql_query("SELECT login FROM membre WHERE login='$login'") or die ('Erreur : '.mysql_error()); //verification si pseudo existe déjà
$count_pseudo=mysql_num_rows($reponse_pseudo);
if($count_pseudo == 1)
{
echo 'Ce pseudo existe déjà.<br />';
return FALSE;
}
//Insertion des données du formulaire
$req = $bdd->prepare('INSERT INTO membre(login, pass, email, date_inscription) VALUES(:login, :pwd1, :email, CURDATE())');
$req->bindValue(':login',$login,PDO::PARAM_STR);
$req->bindValue(':pwd1',$pass_hache,PDO::PARAM_STR);
$req->bindValue(':email',$email,PDO::PARAM_STR);
$req->execute();
$bdd=NULL;
}
catch(PDOException $e)
{
// génération du message d'erreur
$message = sprintf('Erreur MySQL %d<br />%s', $e->getCode(), $e->getMessage());
}
}
?>
Donc les parties qui ne marchent pas sont '//VERIFICATIONS BANALES' et '//VERIFICATIONS DES EXISTENCES', sinon c'est correctement enregistré dans ma base. Je ne comprends pourquoi, pourriez vous m'aidez ?