Page 1 sur 1
Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 12:29
par jacfev
Bonjour,
Je voudrais Valider afficher un message en cas d'erreur de login/mot de passe non renseigné dans la zone du formulaire.
Voici mon code, en tête, dans le page courante compte.php
<?php
if (isset($_POST['submit1'])) {
$login = isset($_POST['login'])? $_POST['login']:'';
$pass = isset($_POST['pass'])? $_POST['pass']:'';
$message = '';
if ($login =='') {
$message .= 'Le login est obligatoire.';
}
if ($pass =='') {
$message .= 'Le mot de passe est obligatoire.';
}
if ($message == '') {
header("Location: client.php");
exit;
} else { //erreur
header("Location: compte.php");
echo $message;
exit;
}
} else {
$login = '';
$pass = '';
}
?>
Le formulaire est à la suite
<HTML>...<FORM>...
Est-ce possible de faire cela ?
Le message ne s'affiche pas.
Où est mon erreur ?
Cordialement
jf.
Re: Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 12:49
par xTG
Le header() s'exécute instantanément donc pas possible en PHP.
Cependant tu peux faire cela avec une fonction javascript s'exécutant après un certain délai.
Regardes du côté de setTimeout().
Re: Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 12:54
par Mazarini
Bonjour,
Après la fonction header(), ton script s'arrête, donc ce qui est derrière ne fonctionne pas.
Remplacer
header("Location: compte.php");
echo $message;
Par
header("Location: compte.php?message=$message");
et dans compte.php traiter $_post['message']
Edit : Après un peut de réflexion, le mieux serai de mettre ton code en début de compte.php (en supprimant la redirection vers compte.php).
Tu pourrais ainsi outre le message remettre facilement le login.
Re: Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 12:57
par macgawel
Bonjour.
Je te conseille de revoir la fonction
header()...
if ($message == '') {
header("Location: client.php");
exit;
}
else { //erreur
header("Location: compte.php");
echo $message;
exit;
}
En fait, ce que tu fais là, c'est :
Code : Tout sélectionner
SI $message est vide (pas d'erreur)
Rediriger sur la page client.php
SINON (erreur)
Rediriger sur la page compte.php (et donc quitter le script en cours)
afficher $message (ce n'est pas exécuté vu qu'on est parti sur la page compte.php)
Vu que tu es déjà sur la page compte.php, il n'y a pas besoin de faire une redirection.
Le début (où tu crées ton message) est correct.
Tu peux dégager la redirection inutile vers compte.php, et il suffira ensuite de l'afficher dans le formulaire (ou ailleurs) :
<form>
<?php
if ( $message != '' ) {
echo "<span id='erreur'>$message</span>";
}
?>
Re: Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 13:01
par jacfev
merci xTG de t'intéresser à mon sujet.
Je ne veux pas de JavaScript.
J'ai trouvé: il suffit de mettre un echo $message dans un paragraphe du formulaire.
Mais autre Pb :
après le header en cas d'erreur je voudrais que le login OU mot de passe déjà saisi reste affiché dans les zones correspondantes du formulaire.
Comment faire ceci ?
Re: Afficher un message si Login/Mot de passe
Posté : 31 janv. 2011, 13:05
par macgawel
après le header en cas d'erreur je voudrais que le login OU mot de passe déjà saisi reste affiché dans les zones correspondantes du formulaire.
Comment faire ceci ?
Vu que tu as récupéré ce qui as été saisi dans dans
$login et
$pass, il suffit de demander à les aficher :
<input type='text' id='login' value='<?php
if (!empty ($login) ) {
echo $login;
}?>' />
Re: Afficher un message si Login/Mot de passe
Posté : 01 févr. 2011, 00:07
par Invité
Merci à tous de vos conseils, que j'ai adaptés à ma configuration.
jf.
Re: Afficher un message si Login/Mot de passe
Posté : 01 févr. 2011, 00:22
par AB
merci xTG de t'intéresser à mon sujet.
Je ne veux pas de JavaScript.
Il faut faire la vérification de toutes façon en php mais rien ne t'empêche de doubler par un contrôle javascript ce qui éviterait une requête au serveur pour rien. Enfin bon c'est juste une option. Si ça t'intéresse j'ai fait un exemple
assez complet ici mais il y a beaucoup plus simple.