Probleme d'authentification

bastien71
Invité n'ayant pas de compte PHPfrance

25 févr. 2006, 00:12

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

HD
Mammouth du PHP | 1181 Messages

25 févr. 2006, 00:15

tu as vérifie que ton navigateur ne bloque pas les cookies sur ton site/page ?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

bastien71
Invité n'ayant pas de compte PHPfrance

25 févr. 2006, 00:22

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

Mammouth du PHP | 768 Messages

25 févr. 2006, 00:23

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
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

bastien71
Invité n'ayant pas de compte PHPfrance

25 févr. 2006, 00:25

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

Mammouth du PHP | 768 Messages

25 févr. 2006, 00:30

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')
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

HD
Mammouth du PHP | 1181 Messages

25 févr. 2006, 00:30

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) 
      
    ?> 
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

bastien71
Invité n'ayant pas de compte PHPfrance

25 févr. 2006, 00:33

Ok, merci pour les conseils

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

bastien71
Invité n'ayant pas de compte PHPfrance

25 févr. 2006, 00:37

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.

HD
Mammouth du PHP | 1181 Messages

25 févr. 2006, 00:39

tu affiche le formulaire que l'utilisateur soit identifié ou pas :!:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

25 févr. 2006, 00:40

pour les sessions et variables de sessions :
http://www.phpdebutant.org/article69.php
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]