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
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>

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 !
0
PS : attention tu as nommé ta variable $pasw et ensuite tu fais un contrôle sur une variable $psw .

++
0
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
Ok je vais rectifier la ligne et je te dirais ce que ca a donné
0
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
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à.
0

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 :)
0
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
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>
0
Question bête, ton login et ton password ils viennent d'où ? d'un formulaire ? ou ils sont dans ta session ?
0
Nixial > Nixial
7 janv. 2009 à 22:27
Si ca vient de ton formulaire, dans ta balise form de ton formulaire tu as mis method="GET" ou method="POST"?
0
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
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.
0
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...
0
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
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.
0
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
Est-ce que quelqu'un peut m'aider.
0
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
<?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>

0
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
Ok merci je vais essayer si ca marche
0
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
Mille merci Lewis34 ca marche maintenant
0
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
de rien c'est avec plaisir
0