Probleme : creer une page de connexion php
catsu
-
catsu -
catsu -
Bonjour,
Je suis entrain de créer un site dynamique pour un projet. J'ai ma base de donnée sur PhpMyAdmin et je voudrais qu'on puisse se connecter sur mon site (soit un admin soit un membre). Mais voila, quand je rentre les logins ou mots de passe, il me revoit sur la page de connexion dù surement aux "header" dans mes "else". Mais ça veut dire qu'un "if" ne se fait pas, et je vois pas du tout lequel c'est ni comment résoudre cela =(
.
.
Voila mon formulaire de connexion sur ma page d'accueil (index.php) :
<body>
...
<form method="post" action="pages/login.php">
Login : <input type="text" name="login" /><br/>
Mot de passe : <input type="password" name="pass" /><br/>
<input id="connecter" type="submit" value="connecter" />
</form>
...
</body>
.
.
et ma page de vérification de connexion (login.php) :
<?php
session_start();
if (isset($_POST)) {
$login = $_POST['login'];
$password = $_POST['pass'];
require("connect.php");
$connexion=mysql_pconnect(SERVEUR,NOM,PASSE);
if((strlen($login)!=0) && (strlen($password)!=0)) {
$q_login = mysql_query("SELECT * FROM Adherents WHERE login='".$login."' AND mdp ='".$password."'");
if ($q_login) {
$_SESSION["m_login"] = $login; }
else {header("Location: ../index.php");exit();}}
else {header("Location: ../index.php"); exit();}}
else {header("Location: ../index.php");exit();}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>...</head>
<body>
<a href="MesDonnes.php">Voir Mes données</a>
<a href="MesCompets.php">Voir Mes Competitions</a>
<a href= "Deconnect.php">Me deconnecter</a>
</body>
</html>
.
.
Voila, si quelqu'un à une idée d'où vient le problème, parce que ça fait plusieurs heures que je suis la dessus en tournant en rond XD
Merci
Je suis entrain de créer un site dynamique pour un projet. J'ai ma base de donnée sur PhpMyAdmin et je voudrais qu'on puisse se connecter sur mon site (soit un admin soit un membre). Mais voila, quand je rentre les logins ou mots de passe, il me revoit sur la page de connexion dù surement aux "header" dans mes "else". Mais ça veut dire qu'un "if" ne se fait pas, et je vois pas du tout lequel c'est ni comment résoudre cela =(
.
.
Voila mon formulaire de connexion sur ma page d'accueil (index.php) :
<body>
...
<form method="post" action="pages/login.php">
Login : <input type="text" name="login" /><br/>
Mot de passe : <input type="password" name="pass" /><br/>
<input id="connecter" type="submit" value="connecter" />
</form>
...
</body>
.
.
et ma page de vérification de connexion (login.php) :
<?php
session_start();
if (isset($_POST)) {
$login = $_POST['login'];
$password = $_POST['pass'];
require("connect.php");
$connexion=mysql_pconnect(SERVEUR,NOM,PASSE);
if((strlen($login)!=0) && (strlen($password)!=0)) {
$q_login = mysql_query("SELECT * FROM Adherents WHERE login='".$login."' AND mdp ='".$password."'");
if ($q_login) {
$_SESSION["m_login"] = $login; }
else {header("Location: ../index.php");exit();}}
else {header("Location: ../index.php"); exit();}}
else {header("Location: ../index.php");exit();}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>...</head>
<body>
<a href="MesDonnes.php">Voir Mes données</a>
<a href="MesCompets.php">Voir Mes Competitions</a>
<a href= "Deconnect.php">Me deconnecter</a>
</body>
</html>
.
.
Voila, si quelqu'un à une idée d'où vient le problème, parce que ça fait plusieurs heures que je suis la dessus en tournant en rond XD
Merci
4 réponses
Je pencherais pour une connexion à MySQL déficiente et/ou une requête avec une erreur de syntaxe. A modifier comme ceci pour débuguer le script :
<?php session_start(); if (isset($_POST['login'] && isset($_POST['pass'])) { // Penser à protéger les données provenant du formulaire en évitant // une injection SQL par vérification des magic quotes activés ou désactivés $login = trim($_POST['login']); $password = trim($_POST['pass']); if((strlen($login)!=0) && (strlen($password)!=0)) { require("connect.php"); // A eviter absolument sauf si necessaire la connexion persistante a MySQL avec mysql_pconnect() $connexion=mysql_pconnect(SERVEUR,NOM,PASSE)or die('Impossible de se connecter à MySQL!'); // Pas necessaire de faire une requete sur TOUS les champs, on a juste besoin de verifier sur login et mot de passe $q_login = mysql_query("SELECT login,mdp FROM Adherents WHERE login='".$login."' AND mdp ='".$password."'")or die('Erreur dans la requête SQL : '.mysql_error()); if (mysql_num_rows($q_login) != 0) { $_SESSION["m_login"] = $login; } else { header("Location: ../index.php"); exit(); } } else { // Ici il vaudrait mieux rediriger sur le formulaire d'identification car erreur dans login et/ou mot de passe header("Location: ../index.php"); exit(); } } else { header("Location: ../index.php"); exit(); } ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head>...</head> <body> <a href="MesDonnes.php">Voir Mes données</a> <a href="MesCompets.php">Voir Mes Competitions</a> <a href= "Deconnect.php">Me déconnecter</a> </body> </html>
Merci de ta réponse, j'ai fais les quelques modifications mais rien n'a changé :'(
page login.php :
et toujours dans ma page pour se connecter, index.php :
Mais même en mettant les "or die" il ne m'affiche aucune erreur et me revoie a ma page de connexion (index)... pourquoi ne veut il pas me renvoyer sur ma page admin ou membre ? :'(
En plus, quand j'enlève le header index (que j'enlève les else du coup), il me met que le chemin vers index n'existes pas O.o même sans les headers, il veut me retourner vers index ! :O
.
J'ai tenté de mettre des echo avec des nombres pour voir jusqu'à ou il allé, et il n'allait pas au delà de if (mysql_num_rows($q_login) != 0) :/
Pourtant quand je fais ma requête sur ma base de donnée, j'ai bien une ligne. Du coup, je sais plus quoi faire :(
page login.php :
<?php session_start(); if (isset($_POST['login']) && isset($_POST['pass'])) { $login = trim($_POST['login']); $password = trim($_POST['pass']); if((strlen($login)!=0) && (strlen($password)!=0)) { require("connect.php"); mysql_connect(SERVEUR,NOM,PASSE); mysql_select_db(BASE); $q_login = mysql_query("SELECT login, mdp FROM Adherents WHERE login=\".$login.\" AND mdp=\".$password.\" "); if (mysql_num_rows($q_login) != 0) { $_SESSION["login"] = $login; if ($_SESSION['login'] = "ADMIN") {header('Location: admin.php'); exit();} else {header('Location: membre.php'); exit();}} else {header("Location: ../index.php");exit();}} else {header("Location: ../index.php"); exit();}} else {header("Location: ../index.php");exit();} ?>
et toujours dans ma page pour se connecter, index.php :
<form method="post" action="pages/login.php"> Login : <input type="text" name="login"/> Mot de passe : <input type="password" name="pass"/> <input id="connecter" type="submit" value="connecter"/> </form>
Mais même en mettant les "or die" il ne m'affiche aucune erreur et me revoie a ma page de connexion (index)... pourquoi ne veut il pas me renvoyer sur ma page admin ou membre ? :'(
En plus, quand j'enlève le header index (que j'enlève les else du coup), il me met que le chemin vers index n'existes pas O.o même sans les headers, il veut me retourner vers index ! :O
.
J'ai tenté de mettre des echo avec des nombres pour voir jusqu'à ou il allé, et il n'allait pas au delà de if (mysql_num_rows($q_login) != 0) :/
Pourtant quand je fais ma requête sur ma base de donnée, j'ai bien une ligne. Du coup, je sais plus quoi faire :(
Salut ...
Pour débugger, tu dois mettre les header en commentaire, et mettre un echo a la place, pour savoir dans quel else il entre, et ainsi, connaitre la condition qui n'est pas vérifié ...
Mettez en résolu quand c'est résolu -.- ...
Pour débugger, tu dois mettre les header en commentaire, et mettre un echo a la place, pour savoir dans quel else il entre, et ainsi, connaitre la condition qui n'est pas vérifié ...
Mettez en résolu quand c'est résolu -.- ...
Salut JooS, oui c'est ce que j'avais fais et c'est comme cela que j'ai vu que c'était mon dernier if qui ne se faisait pas =)
Mais finalement, j'ai tout repris a zéro, et cela fonctionne ^^
Par contre, je sais pas comment j'ai fait XD
Ma page index qui me sert de page de connexion :
et ma page login, qui permet de vérifier les identifiants :
Voila, si sa sert à quelqu'un, en tout cas de cette manière, pour moi, ça marche ^^
Mais finalement, j'ai tout repris a zéro, et cela fonctionne ^^
Par contre, je sais pas comment j'ai fait XD
Ma page index qui me sert de page de connexion :
<?php session_start();?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head>...</head> <body> <?php if( $_SESSION["login"] == ""){echo " <form method=\"post\" action=\"pages/login.php\"> <p class=\"milieu\"> Login : <input type=\"text\" name=\"login\"/> Mot de passe : <input type=\"password\" name=\"pass\"/> <input id=\"connecter\" type=\"submit\" value=\"connecter\"/> </p> </form> ";} ?> <?php if( $_SESSION["login"] == "ADMIN"){echo "<p class=\"gauche\"> <a href=\"pages/competition.php\"> Compétitions </a><br/> <a href=\"pages/deconnexion.php\"> Deconnexion </a></p> <p class=\"efface\"> </p>"; } ?> </body> </html>
et ma page login, qui permet de vérifier les identifiants :
<?php session_start(); if (isset($_POST['login']) && isset($_POST['pass'])) { $login = trim($_POST['login']); $password = trim($_POST['pass']); if((strlen($login)!=0) && (strlen($password)!=0)) { require("connect.php"); mysql_connect(SERVEUR,NOM,PASSE); mysql_select_db(BASE); $q_login = mysql_query("SELECT login, mdp FROM Adherents WHERE login=\".$login.\" AND mdp=\".$password.\" "); if ($q_login) { $_SESSION["login"] = $login;}} header("Location: ../index.php");exit();} ?>
Voila, si sa sert à quelqu'un, en tout cas de cette manière, pour moi, ça marche ^^
J'ai remarqué hier soir, que j'avais pas totalement réglé le problème, le truc c'est qu'en mettant n'importe quoi comme mdp et login, il me connecte quand même :/
Pourtant ma requête est bonne, quand je la fait dans ma base de donnée, il me ressort une ligne avec le login et le mdp...
Du coup je pense qu'en faisant if ($q_login) il me connecte vu qu'il y a une réponse et que le reste se fait alors qu'avec le (mysql_num_rows($q_login) != 0) il me bloc la et me renvoi direct sur la page index sans se connecter.... pourtant il y a une ligne a ma requête ! :O
Pourtant ma requête est bonne, quand je la fait dans ma base de donnée, il me ressort une ligne avec le login et le mdp...
Du coup je pense qu'en faisant if ($q_login) il me connecte vu qu'il y a une réponse et que le reste se fait alors qu'avec le (mysql_num_rows($q_login) != 0) il me bloc la et me renvoi direct sur la page index sans se connecter.... pourtant il y a une ligne a ma requête ! :O
Problème réglé (enfin, cette fois j'espère ^^)
<?php session_start(); if (isset($_POST['login']) && isset($_POST['mdp'])) { $login = trim($_POST['login']); $mdp = trim($_POST['mdp']); if((strlen($login)!=0) and (strlen($mdp)!=0)) { require("connect.php"); mysql_connect(SERVEUR,NOM,PASSE); mysql_select_db(BASE); $result = mysql_query("SELECT NumAdherent, login, mdp FROM Adherents WHERE login = \"$login\" "); if ($result){ if (mysql_num_rows($result) != false) { $row = mysql_fetch_array($result); if ($_POST["mdp"] == $row["mdp"]){ $_SESSION["mdp"] = $mdp; $_SESSION["login"] = $login;}}}}} header("Location: ../index.php"); exit(); ?>