souci de session

Répondre
Helmi1
le 18/11/2010 à 20:16
Helmi1
Bonjour à tous !!

J'ai un pb session.

En remplissant un formulaire qui contient un pseudo et un mot de passe tout se passe normalement.

J'enregistre grâce à un bouton dans une BD, tout est ok.

mais lorsque je veux utiliser ces identifiant pour accèder à ma page, ça ne veut pas.

On a accépté le tout 1er pseudo et password que j'ai inséré dans la BD, ensuite plus aucun pseudo.

voici les codes que j'utilise, je me suis reféré à votre cour de session sur votre site, je me suis planté en utilisant la BD.

Voici les codes :

page proprietaires.php :

proprietaires.php
<form method = "POST" action = "a1.php"  enctype = 'multipart/form-data'>

<label for = "login"> Nom d'utilisateur </label>
<input type = "text" name = "login" id = "login" size = "25"/> <br /><br />

<label for = "pwd" class = "mdp"> Mot de passe </label>
<input type = "password" name = "pwd" id = "pwd" size = "25"/> <br /><br />

<a href = "inscri.php"> S'inscrire </a>
<input type = "submit" value = "Valider" class = "val"/>

</form>


a1.php
<?php

include ('cnx.php');

$a = 'select pseudo,mot_de_passe from proprietaire;';

$b = mysql_query ($a) or die('Erreur SQL !!<br />'.$a.'<br />'.mysql_error());

while($c = mysql_fetch_array($b))
{

extract ($_POST,EXTR_OVERWRITE);

if (isset($login) && isset($pwd))

{

if (($login == $c['pseudo']) && ($pwd == $c['mot_de_passe']))
{

session_start();
$_SESSION['login'] = $login;
$_SESSION['pwd'] = $pwd;

header('location: menu_prop.php');
}
else
{
echo '<body onLoad = "alert(\'Membre non reconnu ...\')">';
echo '<meta http-equiv = "refresh" content = "0;URL="1.php">';
}
}
else
echo 'Les variables du formulaires ne sont pas déclarées';
}
mysql_free_result($b);
mysql_close();

?>


Page menu_prop.php

ce qui nous intéresse dans cette page c'est le lien tout en bas du code <a href = "logout.php">
menu_prop.php
<?php

session_start();

if(isset($_SESSION['login']) && isset($_SESSION['pwd']))
{
echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>

<title>Bienvenu à la page des menus propriétaires</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel = "stylesheet" media = "screen" type = "text/CSS" title = "menu_prop" href = "menu_prop.css" />
</head>
<body>

<div id = "en_tete">
</div>

<div id = "corp">

Bienvenue Mr '.$_SESSION['login'].'

<table >

<tr>
<td class = "cell1"> <a href = "list_annonce.html">Liste de vos annonces </a></td>
<td class = "cell2"> <a href = "Depo_annonce.html">Déposer une annonce</a> </td>
</tr>
<tr>
<td class = "cell3"> <a href = "list_reponse.html">Liste des réponses </a></td>
<td class = "cell4"> <a href = "inscri.html">Editer profil </a></td>
</tr>

</table>
<a href = "logout.php" id = "logout"> Logout </a>

</div>
</body>
</html>';
}
?>


Et enfin la page logout.php
logout.php
<?php

session_start();

session_unset();

session_destroy();

header("location: acueil.php");

?>


Merci d'avance !

Edit modo : les balise bbcode c'est avec des [] pas des <, tu aurais aussi pu utiliser le wall
Helmi
moogli
le 18/11/2010 à 20:48
moogli
salut,

c'est ta page a1.php qui va pas.
A quoi peut bien servir la requête SQL ?

a aucun moment tu ne fait d'insertion dans la base de donnée.

extract c'est le mal, c'est pas pour rien que les register_globals sont à off (et en voie de disparition)

la bonne démarche c'est
1/ rechercher le couple pseudo / mot de passe dans la base, s'il y a un et seul retour on connecte le membre (session est tout le tremblement).

tu pourrais avoir un truc dans le genre
<?php
include ('cnx.php');
if (!empty($_POST['login']) && !empty($_POST['pwd'])) {
$a = 'select count(pseudo) as nb from proprietaire where pseudo=\''.mysql_real_escape_string($_POST['login']).'\' and mot_de_passe='\.mysql_real_escape_string($_POST['pwd'].'\';';
$b = mysql_query ($a) or die('Erreur SQL !!<br />'.$a.'<br />'.mysql_error());
$data = mysql_fetch_assoc($b);
if ($data['nb'] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
$_SESSION['pwd'] = $_POST['pwd'];
header('location: menu_prop.php');
}
else {
echo '<body onLoad = "alert(\'Membre non reconnu ...\')">';
echo '<meta http-equiv = "refresh" content = "0;URL="1.php">';
}
mysql_free_result($b);
mysql_close();
}
else {
//faut tout remplir
}

?>


@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours