Page 1 sur 1

Probleme d'authentification

Posté : 25 févr. 2006, 00:12
par bastien71
Salut à tout.
J'ai un problème avec un script, ca fait plusieurs heures que je cherches, et je vois vraiment pas de quoi ca peut venir...
Les symptomes :
J'ai un formulaire d'identification. Une fois identifié, le script place un cookies pour dire que l'on est identifié, et un ou deux autres pour des histoires relatives à cette identification (pseudo, et rang).
Seulement voila... au début, il fallait que je m'identifie 2 fois de suite. pourquoi? je n'en sais rien. E maintenant, lorsque le mdp/login sont corrects, cela réaffiche le formulaire de connexion, et ne place pas de cookies... et je ne comprends pas pourquoi. Je fais donc appel à vous. je place ici la partie que je pense incriminée, et vous met un lien vers le script complet.

Code : Tout sélectionner

<?php $pagedem = $_GET['page']; $bienvenue = "Veuillez entrer vos identifiants de connection"; if (isset($_POST['name']) || isset($_POST['pass'])) { // formulaire recu // verifie les valeurs if (empty($_POST['name'])) { die ("ERREUR: Entrez un nom d'utilisateur!"); } if (empty($_POST['pass'])) { die ("ERREUR: Veuillez entrer un mot de passe!"); } // Defini les variable d'acces au serveur mySQL $host = "xxx"; $user = "dxxx"; $pass = "xxx"; $db = "xxx5"; // Ouvre la connexion $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); // Selectionne la base mysql_select_db($db) or die ("Unable to select database!"); // Construit la requete $query = "SELECT statut FROM membre WHERE pseudo = '" . $_POST['name'] . "' AND pass = '" . $_POST['pass'] . "' "; // Execute la requete $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); $tableau = mysql_fetch_array($result); $_SESSION['statut'] = $tableau['statut']; $statut = $tableau['statut']; // Regarde les valeurs retournees par la base if (mysql_num_rows($result) == 1) { session_start(); $_SESSION['auth'] = 1; setcookie("username", $_POST['name'], time()+(10080)); setcookie("session", 1, time()+(10080)); setcookie("statut", $tableau['statut'], time()+(10080)); } else { // pas de résultat // authentification impossible $bienvenue = "Login ou mot de passe incorrect"; } // Libere le resultat mysql_free_result($result); // Ferme la connexion mysql_close($connection) ?>
La page entiere :
http://fusee-eau.info/perso/script.txt

Merci beaucoup si vous pouvez me tirer de la ;-)

Posté : 25 févr. 2006, 00:15
par HD
tu as vérifie que ton navigateur ne bloque pas les cookies sur ton site/page ?

Posté : 25 févr. 2006, 00:22
par bastien71
oui, j'ai vérifié... et c'est malheureusement pas ca
http://fusee-eau.info/essaispan/1/index.php
voici l'adresse, vous pouvez utiliser membre membre come logins / mdp

Re: Probleme d'authentification

Posté : 25 févr. 2006, 00:23
par mario
le script place un cookies pour dire que l'on est identifié, et un ou deux autres pour des histoires relatives à cette identification (pseudo, et rang).
Est ce une bonne idée ? :-k

Posté : 25 févr. 2006, 00:25
par bastien71
Je ne sais pas si c'est bien, mais en fait, je voudrais surtout que ca fonctionne ;-) ou alors si vous avez une autre solution...

Posté : 25 févr. 2006, 00:30
par mario
Je ne sais pas si c'est bien, mais en fait, je voudrais surtout que ca fonctionne ;-) ou alors si vous avez une autre solution...
Personnellement, j'aurai stocké username, session et status dans des variables de session.
Sachant que si le rang est stocké dans un cookie, il n'est pas impossible qu'une personne mal intensionnée change son rang en administrateur (si nous parlons du même terme 'Rang')

Posté : 25 févr. 2006, 00:30
par HD
conseil : met des echo un peu partout pour suivre pas à pas ton code
et la prochaine fois utilise la balise "php" au lieu de "code"
essaie le code suivant puis montre nous ce que ca affiche :
    <?php 
    $pagedem = $_GET['page']; 
    $bienvenue = "Veuillez entrer vos identifiants de connection"; 
    if (isset($_POST['name']) || isset($_POST['pass'])) { 
    echo "formulaire recu <br>"; 
    // verifie les valeurs 
    if (empty($_POST['name'])) { 
    die ("ERREUR: Entrez un nom d'utilisateur!"); 
    } 
    if (empty($_POST['pass'])) { 
    die ("ERREUR: Veuillez entrer un mot de passe!"); 
    } 

    // Defini les variable d'acces au serveur mySQL 
    $host = "xxx"; 
    $user = "dxxx"; 
    $pass = "xxx"; 
    $db = "xxx5"; 

    // Ouvre la connexion 
    $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 

    // Selectionne la base 
    mysql_select_db($db) or die ("Unable to select database!"); 

    // Construit la requete 
    $query = "SELECT statut FROM membre WHERE pseudo = '" . $_POST['name'] . "' AND pass = '" . $_POST['pass'] . "' "; 
    echo "$query <br>";
    // Execute la requete 
    $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); 
    $tableau = mysql_fetch_array($result); 
       $_SESSION['statut'] = $tableau['statut']; 
       $statut = $tableau['statut']; 
    // Regarde les valeurs retournees par la base 

    if (mysql_num_rows($result) == 1) { 
    echo "session demarrée <br>";

    session_start(); 
    $_SESSION['auth'] = 1; 
    setcookie("username", $_POST['name'], time()+(10080)); 
    setcookie("session", 1, time()+(10080));    
    setcookie("statut", $tableau['statut'], time()+(10080));    
       } 
    else { 
    // pas de résultat 
    // authentification impossible 
	echo "echec demarrage session ! <br>";
    $bienvenue = "Login ou mot de passe incorrect"; 
    } 

    // Libere le resultat 
    mysql_free_result($result); 

    // Ferme la connexion 
    mysql_close($connection) 
      
    ?> 

Posté : 25 févr. 2006, 00:33
par bastien71
Ok, merci pour les conseils

formulaire recu
SELECT statut FROM membre WHERE pseudo = 'membre' AND pass = 'membre'
session demarrée

Posté : 25 févr. 2006, 00:37
par bastien71
A mario
ouais, c'est vrai... mais comment tu fais pour que ce soit stocké en var de session ?

A tt le monde
a noter que je n'ai pas de cookies présent ... donc il ne les places pas.

Posté : 25 févr. 2006, 00:39
par HD
tu affiche le formulaire que l'utilisateur soit identifié ou pas :!:

Posté : 25 févr. 2006, 00:40
par HD
pour les sessions et variables de sessions :
http://www.phpdebutant.org/article69.php