Problème d'ouverture de session

Répondre
bender
le 11/04/2008 à 15:24
bender
Bonjour,

Après avoir suivis le "Comment faire" à propos de la création d'un espace membre, j'ai un petit soucis au niveau de l'ouverture de session.
En effet, une fois avoir créer un nouveau compte (Inscription.php), j'accède directement à l'espace membre (membre.php) sans aucun soucis mais quand je me déconnecte et essaye de me reconnecter avec le pseudo et le mot de passe que je viens de créer rien ne ce passe et je reste sur la page d'accueil...

Je vous met ci-dessous mes codes php :

Accueil.php

<?php
// test : si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('mysql', $base);
// teste si une entrée de la base contient le login et le pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: Membre.php');
exit();
}
// si aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu !';
}
// sinon, il y a un problème
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Il manque un champs !';
}
}
?>


Inscription.php

<?php
// test : si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// teste de l'existence de nos variables et si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// test des deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('mysql', $base);
// recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: Membre.php');
exit();
}
else {
$erreur = 'Login déjà pris !';
}
}
}
else {
$erreur = 'Il manque un champs !';
}
}
?>


Membre.php

<?php
session_start();
if (!isset($_SESSION['login'])){
header('Location: Accueil.php');
exit();
}
?>


Merci de bien vouloir m'éclairer sur mon problème.
:-: BenDeR :-:
LA GLOBULE
le 11/04/2008 à 15:31
LA GLOBULE
Il faudrait débuguer et afficher ce que retourne la requete SQL concernant la partie "login".
Pour cela, tu peux t'aider de la fonction print_r mais aussi de echo.
Vire aussi les header, c'est plus simple pour débuguer ce genre de cas (page qui se refresh sans modification "apparente" de l'environnement).

Tu n'as aucun message d'erreur qui s'affiche ?
bender
le 11/04/2008 à 15:37
bender
Non je n'ai aucun message d'erreur ! J'ai utilisé un programme de débugage qui m'a retourné des erreurs, je les ais corrigés mais j'ai toujours le même problème !

Je vais essayer de faire ce que tu m'as dit.
:-: BenDeR :-:
bender
le 11/04/2008 à 15:42
bender
Désolé j'au un peu de difficulté pour placer le print_r. Il faut que je le mette où exactement ?
:-: BenDeR :-:
LA GLOBULE
le 11/04/2008 à 16:37
LA GLOBULE
Après le mysql_fetch_array, fais un print_r($data); pour voir ce que contient $data par exemple.
bender
le 14/04/2008 à 15:42
bender
J'ai placé le print_r après le mysql_fetch_array mais il ne ce passe rien de spécial !

Je ne dois pas m'y prendre comme il faut...

Help me please !
:-: BenDeR :-:
Keika
le 14/04/2008 à 15:51
Keika
on pourrait aussi voir la tete du formulaire de login please ? Histoire de voir s'il n'y pas de confusion avec les values.
Le PHP --> C'est dur !
bender
le 14/04/2008 à 16:39
bender
Oui biensûr Keika !

Voilà...

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Futur-PC</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>
<body Link="#FF6F00" alink="#FF6F00" vlink="#FF6F00">
<form action="Membre.php" method="post">
<font size="2">Login : </font><br><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br>
<font size="2">Mot de passe : </font><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br><br>
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="Inscription.php"><font size="2" color="#000000">S'inscrire</font></a>
<?php
if (isset($erreur)) echo '<br><br>',$erreur;
?>
</body>
</html>
:-: BenDeR :-:
Keika
le 14/04/2008 à 18:07
Keika
ton formulaire envoit les donnees a la page Membre.php, et de ce qu'on voit plus hat, ta page membre ne fait que rediriger vers la page d'accueil SI $_SESSION['login'] est declare. Or ca ne l'est pas. Enfin je pense et j'espere que tu as autre chose dnas ta page membre... sinon je ne vois pas l'interet de renvoyer la balle entre pages...
Le PHP --> C'est dur !
bender
le 16/04/2008 à 16:04
bender
Oui moi non plus je ne vois pas l'intérêt ! J'ai suivis le tuto de "PHPFACILE" mais apparement je m'en suis mal servis...

Nieveau php je n'ai que ça dans Membre.php, le reste ce sont des balises php qui affichent des tableaux.

Du coup il faut que je fasse quoi pour être dirigé vers Membre.php lorsque je tape le bon login et le bon mot de passe ?
:-: BenDeR :-:
Répondre
LoadingChargement en cours