Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2007, 01h56   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 158
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 158
Points : 36
Points : 36
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 :
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 :
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
stardeus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 08h32   #2
Membre du Club
 
Inscription : mars 2007
Messages : 53
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 53
Points : 47
Points : 47
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 :
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
ste06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 08h45   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

J'aurais plutôt tourné le truc ainsi :
Code :
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).
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 09h11   #4
Membre du Club
 
Inscription : mars 2007
Messages : 53
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 53
Points : 47
Points : 47
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 :
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

ste06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h31   #5
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 158
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 158
Points : 36
Points : 36
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 :
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?
stardeus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h41   #6
Membre du Club
 
Inscription : mars 2007
Messages : 53
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 53
Points : 47
Points : 47
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

ste06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h58   #7
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 158
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 158
Points : 36
Points : 36
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
stardeus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h45.


 
 
 
 
Partenaires

Hébergement Web