PHP ouverture session + identification
Résolu/Fermé
A voir également:
- PHP ouverture session + identification
- Entrer les informations d'identification reseau - Guide
- Easy php - Télécharger - Divers Web & Internet
- Page d'ouverture google - Guide
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
- Identification instagram ne s' affiche pas - Guide
15 réponses
Merci, j'ai corriger le problème, mais ça ne fonctionne toujours pas...
J'ai pourtant bien insérer dans ma base un "toto" avec pour mot de passe "mdp" (md5 = aa36dc6e81e2ac7ad03e12fedcb6a2c0 )
Et lorsque j'essais de me connecter avec ce user, ça ne marche pas !
J'ai pourtant bien insérer dans ma base un "toto" avec pour mot de passe "mdp" (md5 = aa36dc6e81e2ac7ad03e12fedcb6a2c0 )
Et lorsque j'essais de me connecter avec ce user, ça ne marche pas !
J'ai fait un test, je commente le test de l'authentification pour aller quoi qu'il arrive sur l'accueil :
J'arrive donc bien sur ma page d'accueil. Voici la page d'accueil :
Et là, problème aussi : il m'affiche :
Bienvenue votre login est : et votre mot de passe est : .
Donc les valeurs $_SESSION['pseudo'], $_SESSION['login'] et $_SESSION['pwd'] ne sont pas la...
Je ne comprend pas du tout ce qu'il se passe !
Si quelqu'un à une idée..
if (isset($_POST['login']) && isset($_POST['pwd'])) { // requete sur la table $statement = "SELECT * FROM tbl_user WHERE (login='" . addslashes($_POST['login']) . "' AND pwd='" . addslashes(md5($_POST['pwd'])) . "');"; $verif = mysql_query($statement) or die(mysql_error()); $utilisateur = mysql_num_rows($verif); //on compte le nombre d'enregistrements trouvés $row_verif=mysql_fetch_array($verif); // on parcourt les enregistrements trouvés // if($utilisateur != 0) // { // enregistrement de la session session_register("authentification"); $_SESSION['pseudo'] = $row_verif['pseudo']; $_SESSION['login'] = $row_verif['login']; $_SESSION['pwd'] = $row_verif['pwd']; header("Location:accueil.php"); // redirection si OK // } // else // { // header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu // } }
J'arrive donc bien sur ma page d'accueil. Voici la page d'accueil :
<?php require_once('connexion.php'); session_start(); // On relaye la session if (session_is_registered("authentification")) { // vérification sur la session authentification (la session est elle enregistrée ?) //continue; } else { header("Location:index.php?erreur=intru"); // redirection en cas d'echec } ?> <html> <head> <title>ESPACE PRIVE - DBProtect</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="styles.css" rel="stylesheet" type="text/css"> </head> <body> <p align="center" class="titre"><strong>- : : : VOTRE ESPACE PRIVE : : : -</strong></p> <?php echo "<p>Bienvenue " . $_SESSION['pseudo'] . " votre login est : " . $_SESSION['login'] . " et votre mot de passe est : " . $_SESSION['pwd'] . "."; ?> <p align="center"><a href="index.php?erreur=logout"><strong>Vous déconnecter</strong></a></p> </body> </html>
Et là, problème aussi : il m'affiche :
Bienvenue votre login est : et votre mot de passe est : .
Donc les valeurs $_SESSION['pseudo'], $_SESSION['login'] et $_SESSION['pwd'] ne sont pas la...
Je ne comprend pas du tout ce qu'il se passe !
Si quelqu'un à une idée..
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 sept. 2008 à 11:40
26 sept. 2008 à 11:40
Essaye de mettre un echo en bloquant ensuite le header pour voir:
............ $utilisateur = mysql_num_rows($verif); //on compte le nombre d'enregistrements trouvés if($utilisateur > 0) { $row_verif=mysql_fetch_array($verif); // on parcourt les enregistrements trouvés seulement si il y en a !! // enregistrement de la session echo "Pseudo lu dans base: ".$row_verif['pseudo']; $_SESSION['pseudo'] = $row_verif['pseudo']; $_SESSION['login'] = $row_verif['login']; $_SESSION['pwd'] = $row_verif['pwd']; // header("Location:accueil.php"); // redirection si OK // en commentaire provisoirement } else ......................
Bon j'ai fais un autre test, j'ai vider le chiffrement MD5 :
Et j'ai crée un utilisateur "toto" avec pour mot de passe "toto" dans ma base.
Et là ça marche !
J'ai donc des soucis avec le chiffrement en MD5...
if (isset($_POST['login']) && isset($_POST['pwd'])) { // $login = addslashes($_POST['login']); // $pwd = addslashes(md5($_POST['pwd'])); $login = $_POST['login']; $pwd = $_POST['pwd']; // requete sur la table $statement = "SELECT * FROM tbl_user WHERE (login='" . $login . "' AND pwd='" . $pwd . "');"; $verif = mysql_query($statement) or die(mysql_error()); $utilisateur = mysql_num_rows($verif); //on compte le nombre d'enregistrements trouvés $row_verif=mysql_fetch_array($verif); // on parcourt les enregistrements trouvés if($utilisateur != 0) { // enregistrement de la session session_register("authentification"); $_SESSION['pseudo'] = $row_verif['pseudo']; $_SESSION['login'] = $row_verif['login']; $_SESSION['pwd'] = $row_verif['pwd']; header("Location:accueil.php"); // redirection si OK } else { header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu } }
Et j'ai crée un utilisateur "toto" avec pour mot de passe "toto" dans ma base.
Et là ça marche !
J'ai donc des soucis avec le chiffrement en MD5...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon ça marche toujours pas...
Voila ce que j'ai fais :
Dans ma base j'ai insérer :
aa36dc6e81e2ac7ad03e12fedcb6a2c0 correspond à "mdp" en md5.
Ensuite voici le code de connexion à la base de données :
Et voici finalement le code de la page de login :
Lorsque j'essaie de me connecter avec le login "toto" et le mot de passe "mdp" il me jette !
Voila ce que j'ai fais :
Dans ma base j'ai insérer :
INSERT INTO `testphp`.`tbl_user` ( `id` , `pseudo` , `login` , `pwd` ) VALUES ( NULL , 'toto', 'toto', 'aa36dc6e81e2ac7ad03e12fedcb6a2c0' );
aa36dc6e81e2ac7ad03e12fedcb6a2c0 correspond à "mdp" en md5.
Ensuite voici le code de connexion à la base de données :
<?php // Paramètres de connexion $DB_SERVEUR = "localhost"; $SERVER_USER = "root"; $SERVER_PASSWORD = ""; $DB_DATABASE = "testphp"; mysql_connect($DB_SERVEUR, $SERVER_USER, $SERVER_PASSWORD); mysql_select_db($DB_DATABASE) or die ('impossible de joindre la base de données...'); ?>
Et voici finalement le code de la page de login :
<?php require_once('connexion.php'); session_start(); // on demare la session if (isset($_POST['login']) && isset($_POST['pwd'])) { // requete sur la table $statement = "SELECT * FROM tbl_user WHERE (login='" . addslashes($_POST['login']) . "' AND pwd='" . addslashes(md5($_POST['pwd'])) . "');"; $verif = mysql_query($statement) or die(mysql_error()); $utilisateur = mysql_num_rows($verif); //on compte le nombre d'enregistrements trouvés $row_verif=mysql_fetch_array($verif); // on parcourt les enregistrements trouvés if($utilisateur != 0) { // enregistrement de la session $_SESSION['pseudo'] = $row_verif['pseudo']; $_SESSION['login'] = $row_verif['login']; $_SESSION['pwd'] = $row_verif['pwd']; header("Location:accueil.php"); // redirection si OK } else { header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu } } // Gestion de la déconnexion if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout') { $nom = $_SESSION['pseudo']; session_unset("authentification"); header("Location:index.php?erreur=delog"); } ?> <html> <head> <title>AUTHENTIFICATION - DBProtect</title> <link href="styles.css" rel="stylesheet" type="text/css"> </head> <body> <?php echo "<form action=\"./index.php\" method=\"post\" name=\"connect\">"; echo "<p align=\"center\" class=\"titre\"><strong>- : : : ESPACE SECURISE PAR DBProtect : : : -</strong></p>"; if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { echo "<strong>Echec d'authentification -> login ou mot de passe incorrect</strong>"; } if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { echo "<strong>Veuillez vous identifier avant de pouvoir accéder à cette page.</strong>"; } ?> </p> <table width="300" border="0" align="center" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" class="tableaux"> <tr> <td width="50%"><div align="right">Login</div></td> <td width="50%"><input name="login" type="text" id="login"></td> </tr> <tr> <td width="50%"><div align="right">Mot de passe</div></td> <td width="50%"><input name="pwd" type="password" id="pwd"></td> </tr> <tr> <td height="34" colspan="2"><div align="center"> <input type="submit" name="Submit" value="Se connecter"> </div> </td> </tr> </table> </form> </body> </html>
Lorsque j'essaie de me connecter avec le login "toto" et le mot de passe "mdp" il me jette !
J'ai fais un autre test :
Il m'afficher bien les données que j'ai dans ma base....
login lu dans base: toto
pwd lu dans base: f71dbe52628a3f83a77ab494817525c6
Et dans ma base j'ai :
A n'y rien comprendre !
else { echo "login lu dans base: " . $login; echo "<br>"; echo "pwd lu dans base: " . $pwd; //header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu }
Il m'afficher bien les données que j'ai dans ma base....
login lu dans base: toto
pwd lu dans base: f71dbe52628a3f83a77ab494817525c6
Et dans ma base j'ai :
ID login pseudo pwd 11 toto toto f71dbe52628a3f83a77ab494817525c6
A n'y rien comprendre !
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
26 sept. 2008 à 11:58
26 sept. 2008 à 11:58
Ok ça c'est dans la base
Mais du coup si tu fait ça
$login = addslashes($_POST['login']);
$pwd = addslashes(md5($_POST['pwd']));
echo $login;
echo $pwd;
T'a bien les même valeur que ta base ? (surtout pour le $pwd)
Mais du coup si tu fait ça
$login = addslashes($_POST['login']);
$pwd = addslashes(md5($_POST['pwd']));
echo $login;
echo $pwd;
T'a bien les même valeur que ta base ? (surtout pour le $pwd)
J'ai trouvé l'erreur, mais je n'arrive pas à la corriger !
Voici le code :
J'ai affiché la requete pour voir ce qu'il essai de comparer et voici ce que ça donne :
SELECT * FROM tbl_user WHERE (login='toto' AND pwd='');
Il ne reçoit donc pas de mot de passe, ça doit être $pwd = addslashes(md5($_POST['pwd'])); qui ne marche pas... Mais pourquoi ?
Faut-il lui indiquer quelque chose pour utiliser la fonction md5 ??
Voici le code :
if (isset($_POST['login'])) { $login = addslashes($_POST['login']); $pwd = addslashes(md5($_POST['pwd'])); // $login = $_POST['login']; // $pwd = $_POST['pwd']; // requete sur la table $statement = "SELECT * FROM tbl_user WHERE (login='" . $login . "' AND pwd='" . $pwd2 . "');"; echo $statement . "<br>"; $verif = mysql_query($statement) or die(mysql_error());
J'ai affiché la requete pour voir ce qu'il essai de comparer et voici ce que ça donne :
SELECT * FROM tbl_user WHERE (login='toto' AND pwd='');
Il ne reçoit donc pas de mot de passe, ça doit être $pwd = addslashes(md5($_POST['pwd'])); qui ne marche pas... Mais pourquoi ?
Faut-il lui indiquer quelque chose pour utiliser la fonction md5 ??
Oui voila Mimiste, j'avais pas eu le temps de voir ta réponse, ça revient à la même chose...
Donc je ne sais pas trop comment faire...
Donc je ne sais pas trop comment faire...
J'ai honte... Voila l'erreur :
// $login = $_POST['login'];
// $pwd = $_POST['pwd'];
// requete sur la table
$statement = "SELECT * FROM tbl_user WHERE (login='" . $login . "' AND pwd='" . $pwd2 . "');";
echo $statement . "<br>";
$verif = mysql_query($statement) or die(mysql_error());</code>
Lorsque j'ai voulu faire un test, j'au changer $pwd en $pwd2...
J'ai renommé $pwd2 en $pwd et tout fonctionne...
Merci à vous pour votre aide !!
if (isset($_POST['login'])) { $login = addslashes($_POST['login']); <code>$pwd= addslashes(md5($_POST['pwd']));
// $login = $_POST['login'];
// $pwd = $_POST['pwd'];
// requete sur la table
$statement = "SELECT * FROM tbl_user WHERE (login='" . $login . "' AND pwd='" . $pwd2 . "');";
echo $statement . "<br>";
$verif = mysql_query($statement) or die(mysql_error());</code>
Lorsque j'ai voulu faire un test, j'au changer $pwd en $pwd2...
J'ai renommé $pwd2 en $pwd et tout fonctionne...
Merci à vous pour votre aide !!
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
26 sept. 2008 à 10:57
26 sept. 2008 à 10:57
Bonjour
Je sais pas si l'erreur d'authentification est la mais en tout cas commence par corriger ceci :
if(mysql_num_rows($verif) != "0")
il faut enlever les guillemets, c'est un numerique qui est retourné et non pas une chaine
if(mysql_num_rows($verif) != 0)
Je sais pas si l'erreur d'authentification est la mais en tout cas commence par corriger ceci :
if(mysql_num_rows($verif) != "0")
il faut enlever les guillemets, c'est un numerique qui est retourné et non pas une chaine
if(mysql_num_rows($verif) != 0)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 sept. 2008 à 11:03
26 sept. 2008 à 11:03
salut
essayes comme ça:
essayes comme ça:
<?php require_once('connexion.php'); session_start(); // on demare la session if (isset($_POST['login']) && isset($_POST['pwd'])) { // requete sur la table $statement = "SELECT * FROM tbl_user WHERE (login='" . addslashes($_POST['login']) . "' AND pwd='" . addslashes(md5($_POST['pwd'])) . "');"; $verif = mysql_query($statement) or die(mysql_error()); $utilisateur = mysql_num_rows($verif); if($utilisateur == 1){ // on suppose qu'il n'y en a qu'un $row_verif=mysql_fetch_array($verif); //ton $row_verif venait d'ou ? // enregistrement de la session $_SESSION['pseudo'] = $row_verif['pseudo']; $_SESSION['login'] = $row_verif['login']; $_SESSION['pwd'] = $row_verif['pwd']; header("Location:accueil.php"); // redirection si OK } else { header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu } } // Gestion de la déconnexion if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout') { $nom = $_SESSION['pseudo']; session_unset("authentification"); header("Location:index.php?erreur=delog"); } ?> <html> <head> <title>AUTHENTIFICATION - DBProtect</title> <link href="styles.css" rel="stylesheet" type="text/css"> </head> <body> <?php echo "<form action=\"\" method=\"post\" name=\"connect\">"; echo "<p align=\"center\" class=\"titre\"><strong>- : : : ESPACE SECURISE PAR DBProtect : : : -</strong></p>"; if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { echo "<strong>Echec d'authentification -> login ou mot de passe incorrect</strong>"; } if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { echo "<strong>Veuillez vous identifier avant de pouvoir accéder à cette page.</strong>"; } ?> </p> <table width="300" border="0" align="center" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" class="tableaux"> <tr> <td width="50%"><div align="right">Login</div></td><!-- la tu avait une erreur un " en trop --> <td width="50%"><input name="login" type="text" id="login"></td> </tr> <tr> <td width="50%""><div align="right">Mot de passe</div></td> <td width="50%"><input name="pwd" type="password" id="pwd"></td> </tr> <tr> <td height="34" colspan="2"><div align="center"> <input type="submit" name="Submit" value="Se connecter"> </div> </td> </tr> </table> </form> </body> </html>
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
26 sept. 2008 à 12:04
26 sept. 2008 à 12:04
essai d'enlever le addslashes, de toute manière il ne sert a rien la ou il est vu que t'a passé ta variable en MD5
(et met $pwd et pas $pwd2)
(et met $pwd et pas $pwd2)