Probléme session PHP
Résolu
fodiaze
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
lewis34 Messages postés 2557 Date d'inscription Statut Membre Dernière intervention -
lewis34 Messages postés 2557 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde je suis nouveua en PHP et j'ai un exercice à rendre sur les sessions. Au fait j'ai créer une base de données avec wamp 5 qui s'intitule personnel avec des tables, le probléme rencontré est que jusqu'à présent si j'ouvre la page login.html qui me permet d'entrer mon login et mon mot de passe si je renseigne les champs sur ceux-ci à partir des données des identifiants login et motpasse de la table persotech le script login.php qui s'occupe de la session n'en tient pas compte même si je renseigne pas les champs login et mot de passe et que je clique sur entrer j'ai directement accées à la session. Voilà le script est-ce que quelqu'un pourrait m'aider à le corriger :
<?php
session_start();
if(isset($_POST['login']) && isset($_POST['password']))
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','','');
mysql_select_db('personnel', $con);
if( mysql_select_db( 'personnel' ) == True )
echo 'Sélection de la base réussie' ;
else
echo 'Sélection de la base impossible' ;
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
}
else
{
echo "<center>Veuillez vérifier vos données</center>";
}
?>
<html>
<body>
<TABLE boder="0" width="100%" CELLPADDING="0" CELLSPACING="0" FRAME="rows" bgcolor="#caca12"ALIGN=center>
<tr>
<td><STRONG><H1><U><font face="comic sans ms"><center>PERSONNEL</center></font></U></H1></STRONG><br></td>
</tr>
</TABLE>
<TABLE border="0" width="1000" align="center"CELLPADDING="0" CELLSPACING="0" bgcolor="#cacaca">
<table width="1000" bgcolor="#0a0f0b" align="center" CELLSPACING="0" BORDER="1">
<TR>
<TD><a href="personnel.html"><STRONG><CENTER>PERSONNEL</CENTER></STRONG></a></td>
<TD><a href="centre.html"><STRONG><CENTER>CENTRE</CENTER></STRONG></a></td>
<TD><a href="fonction.html"><STRONG><CENTER>FONCTION</CENTER></STRONG></a></td>
</TR>
</TABLE>
</TABLE>
</body>
</html>
<?php
session_start();
if(isset($_POST['login']) && isset($_POST['password']))
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','','');
mysql_select_db('personnel', $con);
if( mysql_select_db( 'personnel' ) == True )
echo 'Sélection de la base réussie' ;
else
echo 'Sélection de la base impossible' ;
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
}
else
{
echo "<center>Veuillez vérifier vos données</center>";
}
?>
<html>
<body>
<TABLE boder="0" width="100%" CELLPADDING="0" CELLSPACING="0" FRAME="rows" bgcolor="#caca12"ALIGN=center>
<tr>
<td><STRONG><H1><U><font face="comic sans ms"><center>PERSONNEL</center></font></U></H1></STRONG><br></td>
</tr>
</TABLE>
<TABLE border="0" width="1000" align="center"CELLPADDING="0" CELLSPACING="0" bgcolor="#cacaca">
<table width="1000" bgcolor="#0a0f0b" align="center" CELLSPACING="0" BORDER="1">
<TR>
<TD><a href="personnel.html"><STRONG><CENTER>PERSONNEL</CENTER></STRONG></a></td>
<TD><a href="centre.html"><STRONG><CENTER>CENTRE</CENTER></STRONG></a></td>
<TD><a href="fonction.html"><STRONG><CENTER>FONCTION</CENTER></STRONG></a></td>
</TR>
</TABLE>
</TABLE>
</body>
</html>
A voir également:
- Probléme session PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
- Teamviewer code de session expiré ✓ - Forum logiciel systeme
- Session invalide ou obsolète ✓ - Forum finances
13 réponses
Bonsoir,
Il te manque une ligne après l'éxecution de ta requête :
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
// ICI, tu as la variable $res mais il faut que l'utilise parce en dessous tu as mis $row alors qu'elle n'existe pas.
// Mets ceci $row = mysql_fetch_array($res)
// Ca devrait aller un peu mieux déjà
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
Allez bonne chance !
Il te manque une ligne après l'éxecution de ta requête :
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
// ICI, tu as la variable $res mais il faut que l'utilise parce en dessous tu as mis $row alors qu'elle n'existe pas.
// Mets ceci $row = mysql_fetch_array($res)
// Ca devrait aller un peu mieux déjà
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
Allez bonne chance !
PS : attention tu as nommé ta variable $pasw et ensuite tu fais un contrôle sur une variable $psw .
++
++
Bon je suis u peu perdu la, ou est-ce que je dois placer
$row = mysql_fetch_array($res)
si c'est dans la déclaration des variables tout juste aprés mysql_select_db('innova', $con); j'ai cette erreur :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\AGL\login.php on line 9.
Et pour la variable $pasw aussi je vois pas ce que tu veux dire par là.
$row = mysql_fetch_array($res)
si c'est dans la déclaration des variables tout juste aprés mysql_select_db('innova', $con); j'ai cette erreur :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\AGL\login.php on line 9.
Et pour la variable $pasw aussi je vois pas ce que tu veux dire par là.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon,
Une fois que tu as écris :
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
ICI, tu mets exactement :
$row = mysql_fetch_array($res);
(n'oublis pas le point virgule, l'erreur c'est que tu as oublié le point virgule à la fin)
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
Après l'histoire de ta variable, c'est que tu as mis :
$pasw=$row['motpasse'];
Donc là tu as mis dans la variable $pasw le mot de passe qui vient de ta base de données.
Ensuite tu fais un contrôle si ta variable $pass est égale à $psw. ( or tu n'as pas de variable $psw, je pense que tu voulais faire le test entre $pasw ( ton mot de passe de la base de données ) et $pass ( celui saisi par l'utilisateur) .
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
Solution: soit tu mets --> $psw=$row['motpasse']; au lieu de $pasw=$row['motpasse'];
soit tu mets -->
if($pseudo==$login && $pasw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
au lieu de :
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
En espérant que ca va t'aider :)
Une fois que tu as écris :
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
ICI, tu mets exactement :
$row = mysql_fetch_array($res);
(n'oublis pas le point virgule, l'erreur c'est que tu as oublié le point virgule à la fin)
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
Après l'histoire de ta variable, c'est que tu as mis :
$pasw=$row['motpasse'];
Donc là tu as mis dans la variable $pasw le mot de passe qui vient de ta base de données.
Ensuite tu fais un contrôle si ta variable $pass est égale à $psw. ( or tu n'as pas de variable $psw, je pense que tu voulais faire le test entre $pasw ( ton mot de passe de la base de données ) et $pass ( celui saisi par l'utilisateur) .
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
Solution: soit tu mets --> $psw=$row['motpasse']; au lieu de $pasw=$row['motpasse'];
soit tu mets -->
if($pseudo==$login && $pasw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
au lieu de :
if($pseudo==$login && $psw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
En espérant que ca va t'aider :)
Bon j'ai fait une nouvelle rectification avec ce que tu m'as dit de faire et j'ai toujours le même probléme même si j'entre pas de login et mot de passe et k je clique sur entrer ca se connecte directement, je t'envoie le code entier et tu me le corrige en le copiant et en rectifiant les erreurs, merci d'avance :
<?php
session_start();
if(isset($_POST['login']) && isset($_POST['password']))
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','','');
mysql_select_db('personnel', $con);
if( mysql_select_db( 'personnel' ) == True )
echo 'Sélection de la base réussie' ;
else
echo 'Sélection de la base impossible' ;
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
if($pseudo==$login && $pasw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
}
else
{
echo "<center>Veuillez vérifier vos données</center>";
}
?>
<html>
<body>
<TABLE boder="0" width="100%" CELLPADDING="0" CELLSPACING="0" FRAME="rows" bgcolor="#caca12"ALIGN=center>
<tr>
<td><STRONG><H1><U><font face="comic sans ms"><center>PERSONNEL</center></font></U></H1></STRONG><br></td>
</tr>
</TABLE>
<TABLE border="0" width="1000" align="center"CELLPADDING="0" CELLSPACING="0" bgcolor="#cacaca">
<table width="1000" bgcolor="#0a0f0b" align="center" CELLSPACING="0" BORDER="1">
<TR>
<TD><a href="personnel.html"><STRONG><CENTER>PERSONNEL</CENTER></STRONG></a></td>
<TD><a href="centre.html"><STRONG><CENTER>CENTRE</CENTER></STRONG></a></td>
<TD><a href="fonction.html"><STRONG><CENTER>FONCTION</CENTER></STRONG></a></td>
</TR>
</TABLE>
</TABLE>
</body>
</html>
<?php
session_start();
if(isset($_POST['login']) && isset($_POST['password']))
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','','');
mysql_select_db('personnel', $con);
if( mysql_select_db( 'personnel' ) == True )
echo 'Sélection de la base réussie' ;
else
echo 'Sélection de la base impossible' ;
$sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' ";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];
if($pseudo==$login && $pasw==$pass)
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
}
}
else
{
echo "<center>Veuillez vérifier vos données</center>";
}
?>
<html>
<body>
<TABLE boder="0" width="100%" CELLPADDING="0" CELLSPACING="0" FRAME="rows" bgcolor="#caca12"ALIGN=center>
<tr>
<td><STRONG><H1><U><font face="comic sans ms"><center>PERSONNEL</center></font></U></H1></STRONG><br></td>
</tr>
</TABLE>
<TABLE border="0" width="1000" align="center"CELLPADDING="0" CELLSPACING="0" bgcolor="#cacaca">
<table width="1000" bgcolor="#0a0f0b" align="center" CELLSPACING="0" BORDER="1">
<TR>
<TD><a href="personnel.html"><STRONG><CENTER>PERSONNEL</CENTER></STRONG></a></td>
<TD><a href="centre.html"><STRONG><CENTER>CENTRE</CENTER></STRONG></a></td>
<TD><a href="fonction.html"><STRONG><CENTER>FONCTION</CENTER></STRONG></a></td>
</TR>
</TABLE>
</TABLE>
</body>
</html>
Salut j'ai utilisé POST et le login et le password viennent sont des champs du formaulaire et pas de la session. Chaque utilisatuer a son login et son motpasse dans la table persotech de la base de données sous phpmyadmin.
Merci d'avance.
Merci d'avance.
Bonjour
Normal qu'il t'affiche bienvenue.
Quand le login et le mot de passe ne sont pas trouvés, le résultat de la requête est une ressource vide
Donc mysql_fetch_array($res); te rend FALSE et non pas un tableau.
Mais ça ne dérange pas PHP qui considère que $row['pseudo']; et $row['motpasse'] comme des chaînes vides.
Donc tes comparaisons avec logoin et pass sont OK.
De toutes manières, c'était déjà illogique de faire une comparaison alors que tu avais un WHERE dans ta requête : elle ne te rend que les bons résultats. Il te suffisait de tester mysql_num_rows($row)
De plus, tel qu'est écrit ton script actuellement, en cas d'identifiants incorrects, tu ne vas pas afficher "Veuillez vérifier vos données". Tu ne vas l'afficher que si le formulaire n'a pas encore été saisi (else du if (isset ($_POST...)))
De plus, tu écris ces diagnostics avant la balise <HTML>, ce qui est très fâcheux...
Normal qu'il t'affiche bienvenue.
Quand le login et le mot de passe ne sont pas trouvés, le résultat de la requête est une ressource vide
Donc mysql_fetch_array($res); te rend FALSE et non pas un tableau.
Mais ça ne dérange pas PHP qui considère que $row['pseudo']; et $row['motpasse'] comme des chaînes vides.
Donc tes comparaisons avec logoin et pass sont OK.
De toutes manières, c'était déjà illogique de faire une comparaison alors que tu avais un WHERE dans ta requête : elle ne te rend que les bons résultats. Il te suffisait de tester mysql_num_rows($row)
De plus, tel qu'est écrit ton script actuellement, en cas d'identifiants incorrects, tu ne vas pas afficher "Veuillez vérifier vos données". Tu ne vas l'afficher que si le formulaire n'a pas encore été saisi (else du if (isset ($_POST...)))
De plus, tu écris ces diagnostics avant la balise <HTML>, ce qui est très fâcheux...
Au fait est-ce que vous pouvez me corriger le dernier script que j'ai posté en un faisant copie-coller-modif chez vous et me le poster car là je désespére grave vu que c'est mon premier exo sur PHP.
<?php session_start(); if(!isset($_POST['login']) || !isset($_POST['password'])) { //un des 2 champs sont vides on ferme echo'vous n\'avez pas correctement rempli le formulaire' ; exit(); } else { // mot de passe et login existe on continue $login=$_POST['login']; $pass=$_POST['password']; $con = mysql_connect('localhost','',''); mysql_select_db('personnel', $con); /* je commente ça if( mysql_select_db( 'personnel' ) == True ) echo 'Sélection de la base réussie' ; else echo 'Sélection de la base impossible' ; */ $sql = "SELECT * FROM persotech WHERE login='".$login."' and motpasse='".$pass."' "; $res = mysql_query($sql); $row = mysql_fetch_array($res); $pseudo=$row['pseudo']; $pasw=$row['motpasse']; if($pseudo!=$login && $pasw!=$pass) { echo "<center>mot de passe ou login iconnu veuillez reccomencer</center>"; exit(); //la tu peut faire une redirection sur la page de login } else { //mot de passe et login correct on affcihe la page ?> <html> <body> <caption> <center>Bienvenue sur votre espace membre :<?PHP echo $login; ?></center> </caption> <TABLE boder="0" width="100%" CELLPADDING="0" CELLSPACING="0" FRAME="rows" bgcolor="#caca12"ALIGN=center> <tr> <td><STRONG><H1><U><font face="comic sans ms"><center>PERSONNEL</center></font></U></H1></STRONG><br></td> </tr> </TABLE> <TABLE border="0" width="1000" align="center"CELLPADDING="0" CELLSPACING="0" bgcolor="#cacaca"> <table width="1000" bgcolor="#0a0f0b" align="center" CELLSPACING="0" BORDER="1"> <TR> <TD><a href="personnel.html"><STRONG><CENTER>PERSONNEL</CENTER></STRONG></a></td> <TD><a href="centre.html"><STRONG><CENTER>CENTRE</CENTER></STRONG></a></td> <TD><a href="fonction.html"><STRONG><CENTER>FONCTION</CENTER></STRONG></a></td> </TR> </TABLE> </TABLE> <?PHP } }// if($pseudo!=$login && $pasw!=$pass) fin de la condition ?> </body> </html>