Probléme session PHP
Résolu/Fermé
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
-
7 janv. 2009 à 18:43
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 10 janv. 2009 à 17:00
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 10 janv. 2009 à 17:00
A voir également:
- Probléme session PHP
- Easy php - Télécharger - Divers Web & Internet
- Session expirée facebook piratage ✓ - Forum Facebook
- Estelle vient de verrouiller sa session d'ordinateur. que peut-on dire ? ✓ - Forum Windows 7
- Estelle vient de verrouiller sa session d’ordinateur. que peut-on dire ? ✓ - Forum Windows
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Jeux vidéo
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 .
++
++
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
7 janv. 2009 à 19:08
7 janv. 2009 à 19:08
Ok je vais rectifier la ligne et je te dirais ce que ca a donné
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
7 janv. 2009 à 19:17
7 janv. 2009 à 19:17
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 :)
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
7 janv. 2009 à 20:20
7 janv. 2009 à 20:20
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>
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
8 janv. 2009 à 13:09
8 janv. 2009 à 13:09
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...
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
8 janv. 2009 à 14:15
8 janv. 2009 à 14:15
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.
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
8 janv. 2009 à 21:04
8 janv. 2009 à 21:04
Est-ce que quelqu'un peut m'aider.
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
8 janv. 2009 à 22:01
8 janv. 2009 à 22:01
<?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>
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
8 janv. 2009 à 22:13
8 janv. 2009 à 22:13
Ok merci je vais essayer si ca marche
fodiaze
Messages postés
33
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
1 mars 2009
1
10 janv. 2009 à 11:55
10 janv. 2009 à 11:55
Mille merci Lewis34 ca marche maintenant
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
10 janv. 2009 à 17:00
10 janv. 2009 à 17:00
de rien c'est avec plaisir