gestion d'une session

catalan
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 12:35

bonjour à tous,
pouvez vous SVP apporter quelque chose de plus ou corriger mon code?
je veux qu'après la saisie du login et mot de passe, qu' il y est une vérification si ce mot de passe et login existent bien dans la base de donnée. Donc je n 'arrive pas à mettre en place le code permettant de verifier.
merci d'avance à tous.

code
<?php session_start ();?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//session_register("id");
//session_register("Password");
$id=$_POST['id'];
$Password=$_POST['Password'];

$id=$_SESSION['id'];
$Password=$_SESSION['Password'];
	
//connexion à la base de donnée:
$connexion = mysql_connect("localhost","root") or die("erreur");
mysql_select_db("Client",$connexion);
  
 if (empty($_POST['id'])==true || empty($_POST['Password'])==true)
	 {
    echo "Echec de l'ouverture de session, vous devez saisir votre login et votre mot de passe";
  	 }		
// on crée la requête SQL, pour ensuite l'envoyer
	 else
	    {
	    $requete = "SELECT id, Password FROM client WHERE id ='".$id."' AND Prenom='".$Password."'";
		$test = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());	
	    $lignes = mysql_num_rows($test); 
					
		 if ($lignes<1) 
		  { 
		  $erreur="Erreur Login ou Mot de Passe incorrect"; 
		  $Password=""; 
		  return false; 
		  } 
		  else  
			 { 
			  $res=mysql_fetch_row($result); 
			  if ($res[0]==$id && $res[1]==$Password) 
   	        { 
     		   return true; 
    		   } 
    		   else 
        		  { 
      		      $erreur="Erreur Login ou Mot de Passe incorrect"; 
				  $Password=""; 
       		      return false; 
        		  }
 			 } //fin du deuxième "else" 
		}//fin du premier "else"		
?> 
</body>
</html>

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 juin 2005, 12:38

Elle est bizarre ta colonne "Prenom" qui est censée contenir le mot de passe :?
Tu es bien sûr de la structure de ta table ?

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 12:43

Bien vu :wink: ta bien raison. mais j croi que c est pas ça le probleme.
merci.

Mammouth du PHP | 19672 Messages

13 juin 2005, 12:44

[Résolu] alors :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 12:48

Non j crois pas.j ai un message d'erreur.
le voila, je ne comprends pas car je pense que les variables sont bien déclarées.

Code : Tout sélectionner

Notice: Undefined index: id in c:\program files\easyphp1-8\www\php\login.php on line 15 Notice: Undefined index: Password in c:\program files\easyphp1-8\www\php\login.php on line 1
merci.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 juin 2005, 12:48

Au lieu de
 if (empty($_POST['id'])==true || empty($_POST['Password'])==true)
     {
    echo "Echec de l'ouverture de session, vous devez saisir votre login et votre mot de passe";
       }        
// on crée la requête SQL, pour ensuite l'envoyer
     else
        {
        $requete = "SELECT id, Password FROM client WHERE id ='".$id."' AND Prenom='".$Password."'";
        $test = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());    
        $lignes = mysql_num_rows($test);
                    
         if ($lignes<1)
          {
          $erreur="Erreur Login ou Mot de Passe incorrect";
          $Password="";
          return false;
          }
          else  
             {
              $res=mysql_fetch_row($result);
              if ($res[0]==$id && $res[1]==$Password)
               {
                return true;
               }
               else
                  {
                    $erreur="Erreur Login ou Mot de Passe incorrect";
                  $Password="";
                     return false;
                  }
             } //fin du deuxième "else"
        }//fin du premier "else"         
Déjà, je ferais plutôt
if (!isset($_POST['id']) || !isset($_POST['Password']) || empty($_POST['id']) || empty($_POST['Password'])) {
   echo "Echec de l'ouverture de session, vous devez saisir votre login et votre mot de passe";
}
// on crée la requête SQL, pour ensuite l'envoyer
else {
   $requete = "SELECT id, Password FROM client WHERE id ='".$id."' AND Prenom='".$Password."'";
   $test = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());
   $res = mysql_fetch_row($result);
   if ($res && $res[0]==$id && $res[1]==$Password) {
      return true;
   }
   else {
      $erreur="Erreur Login ou Mot de Passe incorrect";
      return false;
   }
}
Et je dirais que c'est bien suffisant. La personne qui se trompe n'a pas à savoir si le login existe ou non, elle a juste besoin de savoir que ce mot de passe ne correspond pas à ce login. Savoir si le login existe ou non, c'est une première information pour hacker un compte ;)

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 13:00

merci j testé ton code, mais malheureusement pas résolu. et c'est vraiment de la merde le php.

Code : Tout sélectionner

excusez moi de parler comme ça
:)

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 juin 2005, 13:02

merci j testé ton code, mais malheureusement pas résolu. et c'est vraiment de la merde le php.

Code : Tout sélectionner

excusez moi de parler comme ça
:)
Ben si demain je prends un langage, et que je décide de faire un programme alors même que je ne maitrise pas le langage, il y a peu de chances que ça marche... Sauf que moi j'aurai la présence d'esprit de dire "je ne suis pas pret, je devrais encore bosser les bases", plutot que de critiquer le langage...

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 13:11

C'est pas faut ce que tu dis mais quand on y a passer un moment pour le faire et que ca ne marche pas, je te dis pas ah............
merci bcp pour tes réponses naholyr :wink:

Mammouth du PHP | 19672 Messages

13 juin 2005, 13:12

merci j testé ton code, mais malheureusement pas résolu. et c'est vraiment de la merde le php.

Code : Tout sélectionner

excusez moi de parler comme ça
:)
Ça, ou je me trompe fort, ou tu es habitué à coder dans un autre langage avec lequel tu es très familier mais qui a une syntaxe un peu différente du PHP. Relaxe, si tes algos donnent des codes qui fonctionne avec ton autre langage, ça fonctionnera tout aussi bien en PHP. Sois simplement patient avec toi-même, on apprend pas un nouveau langage en claquant des doigts.

Petite suggestion:
    $requete = "SELECT id, Password FROM client WHERE id ='".$id."' AND Prenom='".$Password."'";
    $test = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());
    $res = mysql_fetch_row($result);
    if ($res && $res[0]==$id && $res[1]==$Password)
    {
        /* Retourner vers où ??? */
        return true;
        /* Et si tu initialisais plutôt ici tes variables de session identifiant ton internaute ?? */
    }
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

14 juin 2005, 13:41

merci a tous c resolu

Eléphant du PHP | 260 Messages

14 juin 2005, 14:00

Petite suggestion:
    $requete = "SELECT id, Password FROM client WHERE id ='".$id."' AND Prenom='".$Password."'";
    $test = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());
    $res = mysql_fetch_row($result);
    if ($res && $res[0]==$id && $res[1]==$Password)
    {
        /* Retourner vers où ??? */
        return true;
        /* Et si tu initialisais plutôt ici tes variables de session identifiant ton internaute ?? */
    }
Tu le prends où ton $result dans mysql_fetch_row ?? :?
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)