Garder les informations bonnes dans le formulaire après controle
Résolukherox Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
Je développe actuellement un formulaire. Sur ce formulaire, je fais plusieurs contrôle sur chaque champ.
Toute cette partie fonctionne parfaitement sauf que je voudrais améliorer mon code en gardant la valeur des champs qui sont correctes tout en effaçant les valeurs des champs qui sont fausses.
Il me semble que c'est une petite ligne PHP a ajouter sur chaque champ du formulaire mais je m'y casse les dents !
Merci d'avance
- Garder les informations bonnes dans le formulaire après controle
- Whatsapp formulaire opposition - Guide
- Whatsapp contrôle parental - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Entrer les informations d'identification reseau - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
11 réponses
Le problème porte sur la conservation des valeurs des champs d'un formulaire et l'effacement des valeurs des champs invalides tout en préservant celles correctes, en cas d'erreur. Des éléments de réponse proposent d'utiliser une session PHP pour réafficher les données saisies lorsque l'utilisateur revient après une vérification, en remplissant les attributs value et les options sélectionnées. Concrètement, on stocke les valeurs valides en session et on teste isset pour réinsérer les valeurs dans les champs et pour marquer les options comme sélectionnées lorsque leur valeur correspond. D'autres approches recommandent aussi d'associer une remise à zéro des valeurs des champs invalides et de nettoyer les sessions partielles après affichage des messages d'erreur.
fichier form.php
<?php session_start(); ?> <form action="form_traitement.php" action="post"> <input type="text" name="pseudo" value="<?php echo isset($_SESSION['pseudo'])? $_SESSION['pseudo'] : " "?> placeholder="pseudo"> <form>
fichier form_traitement.php
<?php
session_start();
if(isset($_POST) && !empty($_POST)){
$_SESSION['pseudo'] = $_POST['pseudo']
}
?>
quand tu faite tes verification , une fois que il ya une erreur tu vide la session correspondante en faissant $_SESSION['pseudo'] = ""; comme xa a ton retour sur la page du formulaire ce sera les champs qui auront des erreurs qui seront vide .
test et informe
S'il s'agit en faite de remettre les données stockées en session dans votre formulaire, vous pouvez faire comme ça pour les balises de type <input />:
Pour les balises <option></option> dans les balises <select></select>:
<input value="<?php if (isset($_SESSION['Pseudo'])) echo $_SESSION['Pseudo']; else echo ''; ?>" />
<select style="float:right" name="Statut">
<option name="Statut" value="Administrateur" <?php if (isset($_SESSION['Statut']) && $_SESSION['Statut'] == "Administrateur") echo "selected='selected'"; else echo ""; ?> >Administrateur</option><br />
<option name="Statut" value="Membre" <?php if (isset($_SESSION['Statut']) && $_SESSION['Statut'] == "Membre") echo "selected='selected'"; else echo ""; ?> >Membre</option><br />
</select>
Appliquez ces exemples dans vos balises de formulaire, ça devrait le faire ! :)
N'oubliez pas de remplir les variables de session pour pouvoir effectuer ces tests.
Était-ce bien cela que vous vouliez savoir ? :)
Cordialement.
dans ton post tu n'utlise pas les bon name je crois regarde ce :
<?php <input type="text" name="Pseudo" id="Pseudo" size="30" value="<?php echo isset($_SESSION['pseudo_info'])? $_SESSION['pseudo_info'] : " "?>" placeholder="Pseudo" /> ?>
le name du input c'est : "Pseudo" et la session du appelle $_SESSION['pseudo_info']
donc donne le code du fichier :verif_inscription.php et n 'oublie pas de passe "" post" en "POST" ce la peut cuasez quelque probleme.
j 'attends
Voici le code :
<body bgcolor="#64748B">
<?php
include('fonctions.php');
//connection au serveur
$cnx = mysql_connect( "localhost", "root", "azerty" );
//sélection de la base de données:
$db = mysql_select_db( "azerty" );
$_SESSION['erreurs'] = 0;
//Pseudo
if(isset($_POST['Pseudo']))
{
$pseudo = trim($_POST['Pseudo']);
$pseudo_result = checkpseudo($pseudo);
if($pseudo_result == 'tooshort')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop court, vous devez en choisir un plus long (minimum 3 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'toolong')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop long, vous devez en choisir un plus court (maximum 32 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'exists')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'ok')
{
$_SESSION['pseudo_info'] = '';
$_SESSION['form_pseudo'] = $pseudo;
}
else if($pseudo_result == 'empty')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Vous n\'avez pas entré de pseudo.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
}
else
{
header('Location: index.php');
exit();
}
//Mot de passe
if(isset($_POST['Mdp']))
{
$mdp = trim($_POST['Mdp']);
$mdp_result = checkmdp($mdp, '');
if($mdp_result == 'tooshort')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entré est trop court, changez-en pour un plus long (minimum 4 caractères).</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'toolong')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entré est trop long, changez-en pour un plus court. (maximum 50 caractères)</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'nofigure')
{
$_SESSION['mdp_info'] = '<span class="erreur">Votre mot de passe doit contenir au moins un chiffre.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'noupcap')
{
$_SESSION['mdp_info'] = '<span class="erreur">Votre mot de passe doit contenir au moins une majuscule.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'ok')
{
$_SESSION['mdp_info'] = '';
$_SESSION['form_mdp'] = $mdp;
}
else if($mdp_result == 'empty')
{
$_SESSION['mdp_info'] = '<span class="erreur">Vous n\'avez pas entré de mot de passe.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
}
else
{
header('Location: index.php');
exit();
}
//Mot de passe suite
if(isset($_POST['Mdp_verif']))
{
$mdp_verif = trim($_POST['Mdp_verif']);
$mdp_verif_result = checkmdpS($mdp_verif, $mdp);
if($mdp_verif_result == 'different')
{
$_SESSION['mdp_verif_info'] = '<span class="erreur">Le mot de passe de vérification diffère du mot de passe.</span><br/>';
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
if(isset($_SESSION['form_mdp'])) unset($_SESSION['form_mdp']);
}
else
{
if($mdp_verif_result == 'ok')
{
$_SESSION['form_mdp_verif'] = $mdp_verif;
$_SESSION['mdp_verif_info'] = '';
}
else
{
$_SESSION['mdp_verif_info'] = str_replace('passe', 'passe de vérification', $_SESSION['mdp_info']);
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
}
}
}
else
{
header('Location: index.php');
exit();
}
//mail
if(isset($_POST['Mail']))
{
$mail = trim($_POST['Mail']);
$mail_result = checkmail($mail);
if($mail_result == 'isnt')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' n\'est pas valide.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
else if($mail_result == 'exists')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' est déjà pris.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
else if($mail_result == 'ok')
{
$_SESSION['mail_info'] = '';
$_SESSION['form_mail'] = $mail;
}
else if($mail_result == 'empty')
{
$_SESSION['mail_info'] = '<span class="erreur">Vous n\'avez pas entré de mail.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
}
else
{
header('Location: index.php');
exit();
}
//mail suite
if(isset($_POST['Mail_verif']))
{
$mail_verif = trim($_POST['Mail_verif']);
$mail_verif_result = checkmailS($mail_verif, $mail);
if($mail_verif_result == 'different')
{
$_SESSION['mail_verif_info'] = '<span class="erreur">Le mail de vérification diffère du mail.</span><br/>';
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}
else
{
if($mail_result == 'ok')
{
$_SESSION['mail_verif_info'] = '';
$_SESSION['form_mail_verif'] = $mail_verif;
}
else
{
$_SESSION['mail_verif_info'] = str_replace(' mail', ' mail de vérification', $_SESSION['mail_info']);
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}
}
}
else
{
header('Location: index.php');
exit();
}
//date de naissance
if(isset($_POST['Date_naissance']))
{
$date_naissance = trim($_POST['Date_naissance']);
$date_naissance_result = birthdate($date_naissance);
if($date_naissance_result == 'format')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Date de naissance au mauvais format ou invalide.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'tooyoung')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Agagagougougou areuh ? (Vous êtes trop jeune pour vous inscrire ici.)</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'tooold')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Plus de 135 ans ? Mouais...</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'invalid')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Le '.htmlspecialchars($date_naissance, ENT_QUOTES).' n\'existe pas.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'ok')
{
$_SESSION['date_naissance_info'] = '';
$_SESSION['form_date_naissance'] = $date_naissance;
}
else if($date_naissance_result == 'empty')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Vous n\'avez pas entré de date de naissance.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
}
//statut
if(isset($_POST['Statut']))
{
$statut = ($_POST['Statut']);
$statut_result = ($statut);
if($statut_result == 'ok')
{
$_SESSION['statut_info'] = '';
$_SESSION['form_statut'] = $statut;
}
}
else
{
header('Location: index.php');
exit();
}
?>
<!--Test des erreurs et envoi-->
<?php
if($_SESSION['erreurs'] == 0)
{
$insertion = "INSERT INTO inscription (Pseudo, Mdp, Mdp_verif, Mail, Mail_verif, Date_naissance, Statut) VALUES
('$pseudo','$mdp','$mdp_verif','$mail','$mail_verif','$date_naissance', '$statut')";
if(mysql_query($insertion))
{
$queries++;
vidersession();
$_SESSION['inscrit'] = $pseudo;
//echo $_SESSION['erreurs'];
/*informe qu'il s'est déjà inscrit s'il actualise, si son navigateur
bugue avant l'affichage de la page et qu'il recharge la page, etc.*/
?>
<h1>Inscription validée !</h1>
<p>Nous vous remercions de vous être inscrit sur notre site, votre inscription a été validée !<br/>
Vous pouvez vous connecter avec vos identifiants <a href="console_admin.php">ici</a>.
</p>
<?php
}
else
{
if(stripos(mysql_error(), $_SESSION['form_pseudo']) !== FALSE) // recherche du pseudo
{
unset($_SESSION['form_pseudo']);
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
if(stripos(mysql_error(), $_SESSION['form_mail']) !== FALSE) //recherche du mail
{
unset($_SESSION['form_mail']);
unset($_SESSION['form_mail_verif']);
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' est déjà pris.</span><br/>';
$_SESSION['mail_verif_info'] = str_replace('mail', 'mail de vérification', $_SESSION['mail_info']);
$_SESSION['erreurs']++;
$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
if($_SESSION['erreurs'] == 0)
{
$sqlbug = true; //plantage SQL.
//$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
}
}
?>
<?php
if(!empty($_SESSION['erreurs']))
{
if($_SESSION['erreurs'] == 1) $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu 1 erreur.</span><br/>';
else $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu '.$_SESSION['erreurs'].' erreurs.</span><br/>';
?>
<h1>Inscription non validée.</h1>
<p>Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons
pas pu valider votre inscription, en voici les raisons :<br/>
<?php
echo $_SESSION['nb_erreurs'];
echo $_SESSION['pseudo_info'];
echo $_SESSION['mdp_info'];
echo $_SESSION['mdp_verif_info'];
echo $_SESSION['mail_info'];
echo $_SESSION['mail_verif_info'];
echo $_SESSION['date_naissance_info'];
//echo $_SESSION['statut_info'];
$sqlbug = '';
if($sqlbug !== true)
{
?>
Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs.</p>
<div class="center"><a href="inscription.php">Retour</a></div>
<?php
}
else
{
?>
Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>
<?php
}
}
?>
</div>
<!--fin-->
Merci
et maintenant pour les erreurs creer un tableau qui va les contenir ce t'evitera de sortir a chaque erreur.
essaie le style
<?php
erreur = array();
erreur['pseudo'] = <span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop court, vous devez en choisir un plus long (minimum 3 caractères).</span><br/>';
ainsi de suite par exemple pour le mot de passe
erreur['pseudo'] = '<span class="erreur">Le mot de passe entré est trop court, changez-en pour un plus long (minimum 4 caractères).</span><br/>';
$_SESSION['form_mdp'] = '';
?>
et a la fin tu test
<?php
if( !empty($erreur)){
$_SESSION['erreur'] = $erreur
header(....);
exit();
}
?>
comme cela tu sort une seule fois et tu prend toutes les erreurs
et maintenant arriver sur la page du formulaire
tu faire pour le pseudo
<?php
session_start();
<input type="text" name="Pseudo" id="Pseudo" size="30" value="<?php echo isset($_SESSION['pseudo_info'])? $_SESSION['erreur']['pseudo'] : " "?>" placeholder="Pseudo" />
?>
essaie xa aussi et posts les erreurs en meme temps ok
on va trouver ce petit probleme
Sinon, je pourrais mettre tout sur la même page en affichant les erreurs juste après les éléments 'text' sauf qu'il faudrait melanger le code PHP avec du HTML et la je vais clairement m'embrouiller :(
Qu'en penses tu?
Merci d'avance Kherox !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question*Primo : mets toutes les erreurs dans un tableau d'erreurs ok
*secondo : tu verifier si le tableau n est pas vide et tu faire la suite des traitements d'insertion ok
*tiercio: dans ton fichier verif_inscription.php :
je ne comprends a qoui sert tes varibles du style $_SESSION['form_pseudo'] = '';
pourqoui faire cela ? alors que tu as la possiblité de le mettre directement dans une session qui s'appelearis pseudo comme par exemple $_SESSION['pseudo'] = $pseudo; et erreur['pseudo'] = "l'erreur en question" ;
et aussi comme tu fais plusieurs traitement sur les valeurs je te conseils d'utiliser du jquery pour faire ces verification comme cela ton code php sera moins loin et facilement maintenable ok. car comme cela tu va detecter les problemes directement a la source. donc si tu veux utiliser du jquery, alors cela va bien te simplifier la vie. croire moi. maintenant si tu compte utiliser toujours ,ok ya pas de soucis mais on sera obliger de coder tout a partir du debut pour comprend le probleme ok
pourqoui ne pas mettre directement <?php if($sqlbug == " ") ?>
je pense que cela poura t'aider. essaie ca aussi.
et au lieu de faire cela comme ca :
<?php
if($sqlbug !== true)
{
?>
// Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs.</p>
<div class="center"><a href="inscription.php">Retour</a></div>
<?php
}
?>
faire comme cela :
<?php
if($sqlbug == "")
header("location:inscription.php");
?>
essaiyons cela
<?php
if(isset($_POST['Pseudo'])){
}else{
header('Location: index.php');
exit();
}
?>
quand il ya un probleme sur le pseudo du style le $_post['pseudo'] est vide il sort directement sans tenir compte des autre qui sont en bas.
tu comprends? donc essaie de bien remplir le pseudo et laisser les autres champs mal remplir tu comprendra
<ahref="index.php">Accueil</a> <a href="console_admin.php">Connexion</a>
<?php
session_start();
$_SESSION['erreurs'] = '';
if($_SESSION['erreurs'] > 0)
{
?>
<h1>Note :</h1>
<p>
Lors de votre dernière tentative d'inscription, des erreurs sont survenues, en voici la liste :<br/>
<?php
echo $_SESSION['nb_erreurs'];
echo $_SESSION['pseudo_info'];
echo $_SESSION['mdp_info'];
echo $_SESSION['mdp_verif_info'];
echo $_SESSION['mail_info'];
echo $_SESSION['mail_verif_info'];
echo $_SESSION['date_naissance_info'];
//echo $_SESSION['statut_info'];
?>
Nous vous avons pré-rempli les champs qui étaient corrects.<br/>
<?php
}
?>
<h1>Formulaire d'inscription</h1>
<p>Bienvenue sur la page d'inscription de mon site !<br/>
Merci de remplir ces champs pour continuer.</p>
<body bgcolor="#64748B">
<form action="verif_inscription.php" method="POST" name="Inscription">
<fieldset><legend>Identifiants</legend>
<label for="Pseudo" class="float">Pseudo :</label> <input type="text" name="Pseudo" id="Pseudo" size="30" placeholder="Pseudo" value="<?php echo isset($_SESSION['pseudo_info'])? $_SESSION['pseudo_info'] : " "?>" /> <em>(compris entre 3 et 32 caracteres)</em><br />
<label for="Mdp" class="float">Mot de passe :</label> <input type="password" name="Mdp" id="Mdp" size="30" placeholder="Mot de passe" value="<?php echo isset($_SESSION['mdp_info'])? $_SESSION['mdp_info'] : " "?>" /> <em>(compris entre 4 et 50 caracteres)</em><br />
<label for="Mdp_verif" class="float">Mot de passe (verification) :</label> <input type="password" name="Mdp_verif" id="Mdp_verif" size="30" placeholder="Confirmation mot de passe" value="<?php echo isset($_SESSION['mdp_verif_info'])? $_SESSION['mdp_verif_info'] : " "?>" /><br />
<label for="Mail" class="float">Mail :</label> <input type="text" name="Mail" id="Mail" size="30" placeholder="Mail" value="<?php echo isset($_SESSION['mail_info'])? $_SESSION['mail_info'] : " "?>" /><br />
<label for="Mail_verif" class="float">Mail (verification) :</label> <input type="text" name="Mail_verif" id="Mail_verif" size="30" placeholder="Confirmation mail" value="<?php echo isset($_SESSION['mail_verif_info'])? $_SESSION['mail_verif_info'] : " "?>" /><br />
<label for="Date_naissance" class="float">Date de naissance :</label> <input type="text" name="Date_naissance" id="Date_naissance" size="30" placeholder="Date de naissance" value="<?php echo isset($_SESSION['date_naissance_info'])? $_SESSION['date_naissance_info'] : " "?>" /> <em>(format JJ/MM/AAAA)</em><br/>
<label for="Statut" class="float">Statut : </label><select name="Statut">
<option name="Statut" value="Administrateur" selected="selected">Administrateur</option>
<option name="Statut" value="Membre">Membre</option></select><br />
<div class="center"><input type="submit" value="Inscription" /></div>
</fieldset>
</form>
</tbody>
Et voici le code de la page verif_inscription.php :
<body bgcolor="#64748B">
<?php
session_start();
include('fonctions.php');
//connection au serveur
$cnx = mysql_connect( "localhost", "root", "azerty" );
//sélection de la base de données:
$db = mysql_select_db( "azerty" );
$_SESSION['erreurs'] = 0;
//Pseudo
if(isset($_POST['Pseudo']))
{
$pseudo = trim($_POST['Pseudo']);
$pseudo_result = checkpseudo($pseudo);
if($pseudo_result == 'tooshort')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop court, vous devez en choisir un plus long (minimum 3 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'toolong')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop long, vous devez en choisir un plus court (maximum 32 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'exists')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
else if($pseudo_result == 'ok')
{
$_SESSION['pseudo_info'] = '';
$_SESSION['form_pseudo'] = $pseudo;
}
else if($pseudo_result == 'empty')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Vous n\'avez pas entre de pseudo.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
}
//Mot de passe
if(isset($_POST['Mdp']))
{
$mdp = trim($_POST['Mdp']);
$mdp_result = checkmdp($mdp, '');
if($mdp_result == 'tooshort')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entre est trop court, changez-en pour un plus long (minimum 4 caracteres).</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'toolong')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entre est trop long, changez-en pour un plus court. (maximum 50 caracteres)</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'nofigure')
{
$_SESSION['mdp_info'] = '<span class="erreur">Votre mot de passe doit contenir au moins un chiffre.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'noupcap')
{
$_SESSION['mdp_info'] = '<span class="erreur">Votre mot de passe doit contenir au moins une majuscule.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
else if($mdp_result == 'ok')
{
$_SESSION['mdp_info'] = '';
$_SESSION['form_mdp'] = $mdp;
}
else if($mdp_result == 'empty')
{
$_SESSION['mdp_info'] = '<span class="erreur">Vous n\'avez pas entre de mot de passe.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}
}
//Mot de passe suite
if(isset($_POST['Mdp_verif']))
{
$mdp_verif = trim($_POST['Mdp_verif']);
$mdp_verif_result = checkmdpS($mdp_verif, $mdp);
if($mdp_verif_result == 'different')
{
$_SESSION['mdp_verif_info'] = '<span class="erreur">Le mot de passe de verification differe du mot de passe.</span><br/>';
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
if(isset($_SESSION['form_mdp_verif'])) unset($_SESSION['form_mdp_verif']);
}
else
{
if($mdp_verif_result == 'ok')
{
$_SESSION['form_mdp_verif'] = $mdp_verif;
$_SESSION['mdp_verif_info'] = '';
}
else
{
$_SESSION['mdp_verif_info'] = str_replace('passe', 'passe de verification', $_SESSION['mdp_info']);
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
}
}
}
//mail
if(isset($_POST['Mail']))
{
$mail = trim($_POST['Mail']);
$mail_result = checkmail($mail);
if($mail_result == 'isnt')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' n\'est pas valide.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
else if($mail_result == 'exists')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' est déjà pris.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
else if($mail_result == 'ok')
{
$_SESSION['mail_info'] = '';
$_SESSION['form_mail'] = $mail;
}
else if($mail_result == 'empty')
{
$_SESSION['mail_info'] = '<span class="erreur">Vous n\'avez pas entre de mail.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
}
//mail suite
if(isset($_POST['Mail_verif']))
{
$mail_verif = trim($_POST['Mail_verif']);
$mail_verif_result = checkmailS($mail_verif, $mail);
if($mail_verif_result == 'different')
{
$_SESSION['mail_verif_info'] = '<span class="erreur">Le mail de verification differe du mail.</span><br/>';
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}
else
{
if($mail_result == 'ok')
{
$_SESSION['mail_verif_info'] = '';
$_SESSION['form_mail_verif'] = $mail_verif;
}
else
{
$_SESSION['mail_verif_info'] = str_replace(' mail', ' mail de verification', $_SESSION['mail_info']);
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}
}
}
//date de naissance
if(isset($_POST['Date_naissance']))
{
$date_naissance = trim($_POST['Date_naissance']);
$date_naissance_result = birthdate($date_naissance);
if($date_naissance_result == 'format')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Date de naissance au mauvais format ou invalide.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'tooyoung')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Agagagougougou areuh ? (Vous êtes trop jeune pour vous inscrire ici.)</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'tooold')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Plus de 135 ans ? Mouais...</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'invalid')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Le '.htmlspecialchars($date_naissance, ENT_QUOTES).' n\'existe pas.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
else if($date_naissance_result == 'ok')
{
$_SESSION['date_naissance_info'] = '';
$_SESSION['form_date_naissance'] = $date_naissance;
}
else if($date_naissance_result == 'empty')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Vous n\'avez pas entre de date de naissance.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
}
//statut
if(isset($_POST['Statut']))
{
$statut = trim($_POST['Statut']);
$statut_result = ($statut);
if ($statut_result == 'ok')
{
$_SESSION['statut_info'] = '';
$_SESSION['form_statut'] = $statut;
}
}
else
{
header('Location: index.php');
exit();
}
?>
<!--Test des erreurs et envoi-->
<?php
if($_SESSION['erreurs'] == 0)
{
$insertion = "INSERT INTO inscription (Pseudo, Mdp, Mdp_verif, Mail, Mail_verif, Date_naissance, Statut) VALUES
('$pseudo','$mdp','$mdp_verif','$mail','$mail_verif','$date_naissance', '$statut')";
if(mysql_query($insertion))
{
$queries++;
vidersession();
$_SESSION['inscrit'] = $pseudo;
//echo $_SESSION['erreurs'];
/*informe qu'il s'est déjà inscrit s'il actualise, si son navigateur
bugue avant l'affichage de la page et qu'il recharge la page, etc.*/
?>
<h1>Inscription validée !</h1>
<p>Nous vous remercions de vous être inscrit sur notre site, votre inscription a été validee !<br/>
Vous pouvez vous connecter avec vos identifiants <a href="console_admin.php">ici</a>.
</p>
<?php
}
else
{
if(stripos(mysql_error(), $_SESSION['form_pseudo']) !== FALSE) // recherche du pseudo
{
unset($_SESSION['form_pseudo']);
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
if(stripos(mysql_error(), $_SESSION['form_mail']) !== FALSE) //recherche du mail
{
unset($_SESSION['form_mail']);
unset($_SESSION['form_mail_verif']);
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mail, ENT_QUOTES).' est déjà pris.</span><br/>';
$_SESSION['mail_verif_info'] = str_replace('mail', 'mail de vérification', $_SESSION['mail_info']);
$_SESSION['erreurs']++;
$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
if($_SESSION['erreurs'] == 0)
{
$sqlbug = true; //plantage SQL.
//$_SESSION['erreurs']++;
echo $_SESSION['erreurs'];
}
}
}
?>
<?php
if(!empty($_SESSION['erreurs']))
{
if($_SESSION['erreurs'] == 1) $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu 1 erreur.</span><br/>';
else $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu '.$_SESSION['erreurs'].' erreurs.</span><br/>';
?>
<h1>Inscription non validée.</h1>
<p>Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons
pas pu valider votre inscription, en voici les raisons :<br/>
<?php
echo $_SESSION['nb_erreurs'];
echo $_SESSION['pseudo_info'];
echo $_SESSION['mdp_info'];
echo $_SESSION['mdp_verif_info'];
echo $_SESSION['mail_info'];
echo $_SESSION['mail_verif_info'];
echo $_SESSION['date_naissance_info'];
//echo $_SESSION['statut_info'];
if($sqlbug == "")
header("location:inscription.php");
?>
Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs.</p>
<?php
}
else
{
?>
Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>
<?php
}
?>
</div>
<!--fin-->
Dis moi si tu vois qui peut faire bugger !
Oui il faudrait que je te fasse une copie d'écran pour te montrer !
En gros tu as 'Mail' : <span class= au lieu du placeholder="Mail".
Tu vois?
<input type="" ... value=""> tu ne peut pas afficher un span dans un attr value, tu comprend, donc affiche seulement le valeur sans les span pour voir ce que cela donne et apres on va faire une autre chose pour afficher la classe erreur
exemple :
.erreur{
boder : 1px solid red;
}
et maintenant dans le code tu
<input type="text" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?>>
pour voir
Parse error: syntax error, unexpected '?', expecting ',' or ')' in C:\wamp\www\Formulaire\inscription.php on line 27
Voici le code de ma page :
<a href="index.php">Accueil</a> <a href="console_admin.php">Connexion</a>
<?php
session_start();
?>
<h1>Note :</h1>
<p>
Lors de votre derniere tentative d'inscription, des erreurs sont survenues, en voici la liste :<br/>
<?php
echo $_SESSION['nb_erreurs'];
echo $_SESSION['pseudo_info'];
echo $_SESSION['mdp_info'];
echo $_SESSION['mdp_verif_info'];
echo $_SESSION['mail_info'];
echo $_SESSION['mail_verif_info'];
echo $_SESSION['date_naissance_info'];
echo isset($_SESSION['statut_info']) ? $_SESSION['statut_info'] : " "
?>
.erreur{
boder : 1px solid red;
}
<h1>Formulaire d'inscription</h1>
<p>Bienvenue sur la page d'inscription de mon site !<br/>
Merci de remplir ces champs pour continuer.</p>
<body bgcolor="#64748B">
<form action="verif_inscription.php" method="POST" name="Inscription">
<fieldset><legend>Identifiants</legend>
<label for="Pseudo" class="float">Pseudo :</label> <input type="text" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Pseudo" required id="Pseudo" size="30" placeholder="Pseudo" value="<?php if($_SESSION['pseudo_info'] !== '') echo htmlspecialchars($_SESSION['form_pseudo'], ENT_QUOTES); ?>" /> <em>(compris entre 3 et 32 caracteres)</em><br />
<label for="Mdp" class="float">Mot de passe :</label> <input type="password" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Mdp" required id="Mdp" size="30" placeholder="Mot de passe" value="<?php if($_SESSION['mdp_info'] !== '') echo htmlspecialchars($_SESSION['form_mdp'], ENT_QUOTES); ?>" /> <em>(compris entre 4 et 50 caracteres)</em><br />
<label for="Mdp_verif" class="float">Mot de passe (verification) :</label> <input type="password" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Mdp_verif" required id="Mdp_verif" size="30" placeholder="Confirmation mot de passe" value="<?php if($_SESSION['mdp_verif_info'] !== '') echo htmlspecialchars($_SESSION['form_mdp_verif'], ENT_QUOTES); ?>" /><br />
<label for="Mail" class="float">Mail :</label> <input type="text" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Mail" required id="Mail" size="30" placeholder="Mail" value="<?php if($_SESSION['mail_info'] !== '') echo htmlspecialchars($_SESSION['form_mail'], ENT_QUOTES); ?>" /><br />
<label for="Mail_verif" class="float">Mail (verification) :</label> <input type="text" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Mail_verif" required id="Mail_verif" size="30" placeholder="Confirmation mail" value="<?php if($_SESSION['mail_verif_info'] !== '') echo htmlspecialchars($_SESSION['form_mail_verif'], ENT_QUOTES); ?>" /><br />
<label for="Date_naissance" class="float">Date de naissance :</label> <input type="text" <?php echo isset($_SESSION['erreur']['pseudo'] ? "class=erreur") ?> name="Date_naissance" required id="Date_naissance" size="30" placeholder="Date de naissance" value="<?php if($_SESSION['date_naissance_info'] !== '') echo htmlspecialchars($_SESSION['form_date_naissance'], ENT_QUOTES); ?>" /> <em>(format JJ/MM/AAAA)</em><br/>
<label for="Statut" class="float">Statut : </label><select name="Statut">
<option name="Statut" value="Administrateur" <?php if (isset($_SESSION['statut_info']) && $_SESSION['statut_info'] == "Administrateur") echo "selected='selected'"; else echo ""; ?> >Administrateur</option><br />
<option name="Statut" value="Membre" <?php if (isset($_SESSION['statut_info']) && $_SESSION['statut_info'] == "Membre") echo "selected='selected'"; else echo ""; ?> >Membre</option><br />
</select> <br />
<div class="center"><input type="submit" value="Inscription" /></div>
</fieldset>
</form>
</tbody>
Mon code css est mal placé aussi non?
Merci
Et au lieu de créer un nouveau code php dans chaque champs de formulaire ?
Genre :
<label for="Pseudo" class="float">Pseudo :</label> <input type="text" name="Pseudo" required id="Pseudo" size="30" placeholder="Pseudo" value="<?php if($_SESSION['pseudo_info'] !== '') echo htmlspecialchars($_SESSION['form_pseudo'], ENT_QUOTES) ? "class=erreur"; ?>" /> <em>(compris entre 3 et 32 caracteres)</em><br />
Merci
<label for="Pseudo" class="float">Pseudo :</label> <input type="text" name="Pseudo" id="Pseudo" size="30" placeholder="Pseudo" value="<?php echo isset($_SESSION['pseudo_info'] )? htmlspecialchars($_SESSION['form_pseudo'], ENT_QUOTES) : "" ;?>" class="<?php echo isset($_SESSION['erreur']['pseudo']) ? "erreur" ;?>" /><em>(compris entre 3 et 32 caracteres)</em><br />
<label for="Pseudo" class="float">Pseudo :</label> <input type="text" name="Pseudo" id="Pseudo" size="30" placeholder="Pseudo" value="<?php echo isset($_SESSION['pseudo_info'] )? $_SESSION['form_pseudo'] : "" ;?>" class="<?php echo isset($_SESSION['erreur']['pseudo']) ? "erreur" ;?>" /><em>(compris entre 3 et 32 caracteres)</em><br />
Je te conseil de...
définir une variable $inputs['current']['pseudo'] (information original) et $inputs['erreur']['pseudo'] qui contient la valeur par défaut des champs du formulaire ainsi qu'un deuxième tableau qui contient éventuellement des erreurs en cas de saisie.
à la validation tu rempli le tableau erreur au besoin...
et sur le front coté formulaire et fait directement des echo $inputs['erreur']['pseudo'] <= par defaut la valeur est vide donc y'a rien à afficher et si y 'a une erreur alors elle s'affiche...
Tu peux même t'amuser à mettre
$inputs['erreur']['pseudo']['value']= '<span class="error">c pas bon blabla..</span>';
$inputs['erreur']['pseudo']['class'] = 'une class à mettre dans l'input concerné';
...
Je te conseil vraiment pas les sessions ... Tu dois retransmettre les données du $_POST à une variable qui sera utilisé sur le front...
Je vais tester tout ça et je te tiens au courant.
Je n'y arrive toujours pas ! J'ai fait ce que tu m'as dit Kherox mais encore une fois sans succès !
C'est peut être le lien vers ma page qui n'est pas bon?
Voici mon code :
Peux tu me dire si tu vois quelque chose de pas normal stp.
Pour info, j'ai une autre page qui gère les erreurs, le nombre d'erreur et les controles sur chaque champs.
Les erreurs s'affichent sur une autre page et du coup, il faut que je clic sur un lien pour revenir sur la page du formulaire.
Merci d'avance