Formulaire et traitement dans une seule page php

Résolu
cs_NouhaS Messages postés 2 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 3 août 2010 - 29 juil. 2010 à 15:26
cs_NouhaS Messages postés 2 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 3 août 2010 - 3 août 2010 à 13:20
Bonjour à tous,

Je veux réaliser une page d'authentification dans un site. J'ai procédé de la minière suivante: avec deux php, j'ai mis dans le premier le formulaire et dans un deuxième le traitement sauf que dans les cas erreurs(mot de passe incorrect et /ou login incorrect) je me retrouve dans une autre page! Or ce que je désire c'est après l'affichage de la boite de dialogue dans le cas d'erreur je veux que ça soit dans le formulaire afin de pouvoir retaper ...login ...!

Voilà donc j'ai essayé de rassemble mon code mais c'eest le même résultat que j'obtiens que ça soit avant ou après...

Je voudrai bien que vous m'aidez si vous le pouvez!
Merci

Vous trouverez juste en dessous mon code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Authentification</title>
</head>


<!--------------------------------->
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=catalogue', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
<!--------------------------------->


<?php
if ( isset($_POST['login']) && !empty($_POST['login']) ) // Si un formulaire a déjà été envoyé, si ceci ne marche pas, essaie avec !empty($_POST['Champ'])
{
// Code de traitement du formulaire, celui qui est normalement sur ta page externe

$reponse $bdd->prepare('SELECT * FROM utilisateur WHERE Login_Utilisateur ?');
$reponse->execute(array($_POST['login']));

if ($donnees = $reponse->fetch())
{
?>

<?php

if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] == $donnees['Mot_De_Passe_Utilisateur']) // Si le mot de passe est bon
{
// On affiche les codes
?>
Votre Session


<script language="javascript" > alert('Authentification réussie');</script>
Vous pouvez effectué vos opérations souhaitées!!


<?php
}
else // Sinon, on affiche un message d'erreur
{
?>
<script language ="javascript" > alert('Mot de passe incorrect');</script>
<?php
}
}

else{
?>
<script language="javascript" > alert('login incorrect');</script>
<?php
}
}
else
{
?>
<!-- Et ici le formulaire -->

Veuillez vous authentifiez


<form action="auto.php" method="post">

<label>Login</label>,
,

----

<label>mot de Passe</label>,






</form>

<?php
}
?>



</html>

4 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
29 juil. 2010 à 22:04
Salut,

je me retrouve dans une autre page!

Ah bon ? Laquelle ?


Cordialement,

Kohntark -
3
RaftY Messages postés 56 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 12 août 2010
30 juil. 2010 à 13:31
Si le code que tu as envoyé est bien dans la script auto.php, il n'y a pas de raison que tu change de page.

mais souvent pour éviter cette ecueil, on met :
<form action="<?=$_SERVER["PHP_SELF"] ?>" method="post"> 


au lieu de

<form action="auto.php" method="post"> 


______oOOO________OOOo________

RaftY, du code C commode!
0
narkos2 Messages postés 10 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 août 2010 à 12:09
Hello,

Voici un petit exemple de code pour un formulaire avec traitement sur la meme page, prend exemple dessus pour rassembler tes pages en une seule:
(Bon on imagine que t'as déjà ton session_start() et tout le tsoin-tsoin dans ton index...)
<?php
// Le si form a été envoyé, on traite
if(!empty($_POST['mon_form']))
{
// Divers traitements
if(!empty($_POST['nom']))
{
// Form OK
$form_ok = 1;
}
else
{
$form_erreur = "Le nom doit être rempli! Non mais!
";
}
}

if($form_ok != 1)
{
// S'il y a une erreur on l'affiche
if(!empty($form_erreur))
{
print "".$form_erreur."

";
}

// Mon formulaire
print "<form method='post' action=''>
Votre nom!




</form>";
}
else
{
// Message de confirmation => le formulaire a été traité et tout est cool! (lol)
print "Trop cool!";
}
?>
0
cs_NouhaS Messages postés 2 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 3 août 2010
3 août 2010 à 13:20
Merci à vous tous!!

C'est bon j'ai réglé le problème
0
Rejoignez-nous