IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Authentification fonctionne partiellement


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Par défaut [Sécurité] Authentification fonctionne partiellement
    Bonsoir

    j'effectue une authentification. Et je ne comprend pas pourquoi lorsque j'insere des valeurs fausse je suis redirigé vers une page blanche.
    En revanche lorsque j'insere les bonnes valeurs je redirigais vers la bonne page.

    formulaire authentification
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
    <head>
    	<title>Authentification </title>
    </head>
     
    <body>
     
     
      <form  name="formulaire" action="verif.php" method="post" > 
      <label > Nom : </label>  <input type="Text" name="nomPers" value="identifiant" />
      <label > mot de passe : </label>  <input type="password" name="mdpPers" value="********" />
     
      <input type="reset" name="annuler" value="annuler" />
      <input type="submit" name="Envoyer" value="envoyer" />   
      </form>
     
     
    </body>
    </html>
    page de verification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?
    $Serveur_db ="localhost";
    $User_db ="root";
    $Passe_db ="";
    $Base_name="courrier";
    $Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);// fonction qui permet d'etablir la connexion a un BDD mysql 
    mysql_select_db($Base_name,$Connect_db)or die('erreur de connexion'.mysql_error());
     
    //verifie que la variable existe
    if(isset($_POST['Envoyer']))
    {
        //récupération des valeurs saisies 
        $login_recupere= trim($_POST['nomPers']);
        $pwd_recupere = trim($_POST['mdpPers']);
     
    	$sql = "select * from personne where nomPers='".$login_recupere."' and mdpPers='".$pwd_recupere."'"; 
    	$req = mysql_query($sql,$Connect_db)or die ( 'erreur de requete'.mysql_error()); //mysql_query permet d'envoyer une requete pour execution du serveur
        //$nb= mysql_fetch_row($req); 
    	//echo 'le nombre de req'.$nb[2]; 
     
    	if(!$req){
    	  echo 'impossible d\'executer la requete'; 
    	  exit;
    	}else{
    			 while($data = mysql_fetch_array($req))
        			{     
          				$nomPers = $data['nomPers'];
    	  			$mdpPers = $data['mdpPers'];
    				echo $nomPers;
     
                                     session_start();
    					 //session_register($nomPers); 
    					 //session_register($mdpPers); 
    				          //$date = date("H:i:s");
     
     
    					$_SESSION['nomPers'] = $data['nomPers'];
    					$_SESSION['idPers'] = md5(uniqid(""));
     
    					/*setcookie("session",$_SESSION['idPers']);
    					setcookie("date",$date);  
    					*/
    					//session_register($_SESSION['nomPers']);
    					echo 'connexion'; 
    					//echo("<script language=\"javascript\">window.location.href=\"toto.php\";</script>");
        				header("location:toto.php"); 
    					exit; 
    					mysql_close();
    				}	           
    		 }
     }else{
           echo 'la variable n\'existe pas';
    	  }  							
     
     
     
    ?>
    Pourriez vous m'aidez ?
    merci

    Stardeus

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Salut stardeus,


    Je vais peut etre dire une connerie mais ton probleme ne serait il pas due au fait qu effectivement lors de ta verification ta requête s effectue mais renvoie un nombre de reponse egal a 0 .

    Je serais toi je rajouterais 1 verification en plus avant de faire ton traitement.
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    page  de verification
    <?
    $Serveur_db ="localhost";
    $User_db ="root";
    $Passe_db ="";
    $Base_name="courrier";
    $Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);// fonction qui permet d'etablir la connexion a un BDD mysql 
    mysql_select_db($Base_name,$Connect_db)or die('erreur de connexion'.mysql_error());
     
    //verifie que la variable existe
    if(isset($_POST['Envoyer']))
    {
        //récupération des valeurs saisies 
        $login_recupere= trim($_POST['nomPers']);
        $pwd_recupere = trim($_POST['mdpPers']);
     
    	$sql = "select * from personne where nomPers='".$login_recupere."' and mdpPers='".$pwd_recupere."'"; 
    	$req = mysql_query($sql,$Connect_db)or die ( 'erreur de requete'.mysql_error()); //mysql_query permet d'envoyer une requete pour execution du serveur
        //$nb= mysql_fetch_row($req); 
    	//echo 'le nombre de req'.$nb[2]; 
     
    	if(!$req){
    	  echo 'impossible d\'executer la requete'; 
    	  exit;
    	}else{
                     if (mysql_numrows($req) > 0){
    			 while($data = mysql_fetch_array($req))
        			{     
          				$nomPers = $data['nomPers'];
    	  			$mdpPers = $data['mdpPers'];
    				echo $nomPers;
     
                                     session_start();
    					 //session_register($nomPers); 
    					 //session_register($mdpPers); 
    				          //$date = date("H:i:s");
     
     
    					$_SESSION['nomPers'] = $data['nomPers'];
    					$_SESSION['idPers'] = md5(uniqid(""));
     
    					/*setcookie("session",$_SESSION['idPers']);
    					setcookie("date",$date);  
    					*/
    					//session_register($_SESSION['nomPers']);
    					echo 'connexion'; 
    					//echo("<script language=\"javascript\">window.location.href=\"toto.php\";</script>");
        				header("location:toto.php"); 
    					exit; 
    					mysql_close();
    				}	
                             }
                             else{ 
                                      echo "Probleme d identification <br /> Donnees incorrectes ";
                                      header("location:formulaire.php"); 
                             }           
    		 }
     }else{
           echo 'la variable n\'existe pas';
    	  }  							
     
     
     
    ?>

    J espere t avoir aide


    Ste

  3. #3
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    J'aurais plutôt tourné le truc ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?
    if(isset($_POST['nomPers']) && isset($_POST['mdpPers']))
    {
      $login_recupere=trim($_POST['nomPers']);
      $pwd_recupere=trim($_POST['mdpPers']);
     
      $Serveur_db ="localhost";
      $User_db ="root";
      $Passe_db ="";
      $Base_name="courrier";
      // fonction qui permet d'etablir la connexion a un BDD mysql 
      $Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);
      mysql_select_db($Base_name,$Connect_db)or die('erreur de connexion'.mysql_error());
     
      $sql = "select * from personne where nomPers='".$login_recupere."' and mdpPers='".$pwd_recupere."'"; 
      //mysql_query permet d'envoyer une requete pour execution du serveur
      $req = mysql_query($sql,$Connect_db) or die ( 'erreur de requete'.mysql_error()); 
     
      while($data = mysql_fetch_array($req))
      {     
     	  $nomPers = $data['nomPers'];
    	  $mdpPers = $data['mdpPers'];
    	  echo $nomPers;
     
              session_start();					 
     
    	  $_SESSION['nomPers'] = $nomPers;
    	  $_SESSION['idPers'] = md5(uniqid(""));
     
    	  echo 'connexion'; 
    	  header("location:toto.php"); 
    	  exit; 
    	  mysql_close();
      }	           
    }
    else echo 'Un paramètre n\'est pas renseigné.';?>
    Le souci c'est que tu ouvres une session après avoir fait des affichages donc ça pourra pas fonctionner (de même pour le header).

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Oui mais son problème n'était pas la.
    Enfin je pense car si tu regarde son code de son formulaire il met des valeurs par défaut.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <form  name="formulaire" action="verif.php" method="post" > 
      <label > Nom : </label>  <input type="Text" name="nomPers" value="identifiant" />
      <label > mot de passe : </label>  <input type="password" name="mdpPers" value="********" />
     
      <input type="reset" name="annuler" value="annuler" />
      <input type="submit" name="Envoyer" value="envoyer" />   
      </form>

    Résultat le test passe toujours et ça ne lui résout pas le problème de la page blanche .
    La page blanche est la car il passe dans le test , il effectue la requête et ensuite il ne passe pas dans le while car son fetch_array($requete) est nul

    Donc page blanche car aucun autre traitement .

    Après je peux me tromper


  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Par défaut
    Bonjour

    j'ai effectué un test avant d'avoir effectuer le traitement et il s'avere que j'obtiens toujours une page blanche lorsque j'effectue une mauvaise authentification.

    Je me demandais si ce n'est pas le fait d'avoir mis dans mon formulaire des valeurs par défaut qui peut causer une page blanche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     include('../include/config.php');
    //verifie que la variable existe
    if(isset($_POST['Envoyer']))
    {
        //récupération des valeurs saisies 
        $login_recupere= trim($_POST['nomPers']);
        $pwd_recupere = trim($_POST['mdpPers']);
     
    	$sql = "select * from personne where nomPers='".$login_recupere."' and mdpPers='".$pwd_recupere."'"; 
    	$req = mysql_query($sql,$Connect_db)or die ( 'erreur de requete'.mysql_error()); //mysql_query permet d'envoyer une requete pour execution du serveur
        //$nb= mysql_fetch_row($req); 
    	//echo 'le nombre de req'.$nb[2]; 
     
     
    	if (mysql_num_rows($req) > 0)
    	{
    			 while($data = mysql_fetch_array($req))
        			{     
          				$nomPers = $data['nomPers'];
    	  				$mdpPers = $data['mdpPers'];
    					echo $nomPers;
     
                        session_start();
    					$_SESSION['nomPers'] = $data['nomPers'];
    					$_SESSION['idPers'] = md5(uniqid(""));
     
     
    					echo 'connexion'; 
    					echo("<script language=\"javascript\">window.location.href=\"accueil.php\";</script>");
     
    					exit; 
    					mysql_close();
    				}	           
    	}else{
    		     echo "Probleme d identification <br /> Donnees incorrectes ";
                 header("location:Presentation.php"); 
    		 }  	  
     }
    Äuriez vous une solution?

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Re,

    Attend il y a un truc que je pige pas tu me dis que tu passes dans la condition :
    if (mysql_num_rows($req) > 0) avec des données fausses


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Par défaut
    lorsque je recupere les valeurs du formulaire.
    je le compare avec la bdd et j'effectue un test +ensuite le traitement

    je n'ai pas compris pourquoi j'aurais des données fausse

    Bonjour

    [edit]j'ai pu résoudre le pb de l'authentification en utilisant la fonction mysql_fetch_row qui retourne une seule valeur .

    Dela je teste si la valeur retourné est 0 alors je lui indique que le login ou le mot n'existe pas sinon je lui redirige vers une autre page [/edit]

    Stardeus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Authentification utilisateur sur site
    Par Badaboumpanpan dans le forum Langage
    Réponses: 2
    Dernier message: 04/07/2006, 11h57
  2. [Sécurité] session_set_save_handler : fonctionne pas
    Par aurel89 dans le forum Langage
    Réponses: 9
    Dernier message: 13/04/2006, 16h54
  3. [Sécurité] Authentification MD5
    Par dinastar dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2006, 16h48
  4. Réponses: 6
    Dernier message: 27/10/2005, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo