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
- Code d'identification - Guide
- Associez chaque situation à l’action la plus appropriée en matière de sécurité informatique : verrouiller la session, quitter la session, ne rien faire ou éteindre l'ordinateur. - Forum MacOS
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)