Mot de passe

Eléphant du PHP | 330 Messages

17 mai 2006, 13:00

Bonjour,

Mon mot de passe ne passe qu'à la deuxième tentative ce que je n'arrive pas à comprendre.

Quelqu'un pourrait il éclairer ma lanterne

Merci d'avance
<?php 

include ("connection.php"); 



function rediriger($url)

{
  if ( !headers_sent() )
  {  //  Indique si les en-têtes HTTP ont déjà été envoyés
    header('Location:'.$url); // Envoie un en-tête HTTP
     exit();// On sort 
  }
  else
  {
    echo '<script language="JavaScript">'; 
    echo 'window.location= "'.$url.'";'; // Redirection JavaScript
    echo '</script>';
  }
}


/* Traitement du formulaire pour l'accès à l'espace admin */ 
                                             
// on teste si le visiteur a soumis le formulaire de connexion 

if (isset($_POST['Connexion']) )
	{ 
    if ((isset($_POST['admin_login']) && !empty($_POST['admin_login'])) && (isset($_POST['admin_pass']) && !empty($_POST['admin_pass'])))
    	{ 
// On se connecte à la base de données 
// requête pour la déclaration de la session id 
        $query='SELECT * FROM tbladmin WHERE admin_login="'.addslashes($_POST['admin_login']).'" AND admin_pass="'.addslashes($_POST['admin_pass']).'"'; 
        $result=@mysql_query($query); 
        $row=@mysql_fetch_array($result); 

// on teste si une entrée de la base contient ce couple login / pass 
                 
        $sql = 'SELECT COUNT(*) FROM tbladmin WHERE admin_login="'.addslashes($_POST['admin_login']).'" AND admin_pass="'.addslashes($_POST['admin_pass']).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
        $data = mysql_fetch_array($req); 
        // On libère l'espace mémoire et on ferme la base de données 
        mysql_free_result($req); 
        mysql_close(); 
        
        // si on obtient une réponse, alors l'utilisateur est un admin 
        if ($data[0] == 1)
        	{ 
 // On déclare des lors les variables de sessions pour la suite du programme 
 // variable de session
 			session_start(); 
 			$_SESSION['admin_login'] = $_POST['admin_login']; // Variable de session contenant le pseudo du admin 
            $_SESSION['admin_id'] = $row[0];// Variable de session contenant l'id du admin
            rediriger('admin_coord.php');
            exit();// On sort 
            
        	} 
 // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
 		elseif ($data[0] == 0)
 			{ 
 //$erreur = 'Compte non reconnu.'; 
 // On affiche une boîte de dialogue informant la personne que les coordonnées saisies dans le formulaire sont incorrectes 
       		echo '<SCRIPT language="JavaScript" type="text/javascript">     
            window.alert("Compte non reconnu dans la base de données"); 
            </script>'; 
        	} 
         
        // sinon, alors la, il y a un gros problème 
         
        else
        	{ 
// Déclaration du message d'erreur 
            
			echo '<SCRIPT language="JavaScript" type="text/javascript">
			window.alert("Problème dans la base de données : plusieurs admins ont les mêmes identifiants de connexion."); 
			</script>'; 
 	        } 
        } 
    else
	    { 
// Declaration du message d'erreur 
    	echo '<SCRIPT language="JavaScript" type="text/javascript">
			window.alert("Veuillez remplir toutes les cases."); 
			</script>'; 
    	} 
	} 
/* Fin traitement du formaulaire pour l'accees a l'espace admin */                         
?> 

<!--------------------Gestion de la page avec l'affiche des différents éléments---------------------> 
<html> 
<head> 
<title></title> 

<link rel="stylesheet" type="text/css" href="/stylegen.css">

<style type="text/css"> 

/* <![CDATA[ */ 
	
</style>

</head> 

<!-----------------------Début du traitement de l'affichage de la page--------------------------------> 
<body> 



<script>

function charge_page()

{
 location.href = "index.php";
}

function time_out()
{
setTimeout("charge_page()", 60000);

}

time_out()

</script>



<!-- Begin Top Banner -->
	
	<table width="100%" border="0" cellspacing="0" cellpadding="0" >
		<tr><!-- Replace your logo in this table cell -->
			<td><img src="Photos/banniere.jpg" alt="" width="250" height="50" border="0"></td>
		</tr>
	</table>
	<!-- End Top banner -->

<br><br><br>  	
		
<p align="center">Vous avez 60 secondes pour vous connecter avant d'être redirigé vers la page d'Accueil</p> 	

<br><br><br><br><br>    
<table width="350" border ="0" align="center"> 
	<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" name="FormMemo"> 
	
	<tr> 
		<td >Saisissez votre Login
		</td>
		<td> 
			<input type="text" name="admin_login" value=""> 
		</td> 
	</tr> 
	<tr> 
		<td >Saisissez votre Mot de passe
		</td>
		<td> 
			<input type="password" name="admin_pass" value=""> 
		</td> 
	</tr> 
	<tr> 
		<td colspan="2" align="center"><br><input type="submit" name="Connexion" id="Connexion" value="Connexion" >
	</form> 
		</td> 
	</tr> 
	
</table> 

 
</body> 
</html> 

Eléphant du PHP | 134 Messages

19 mai 2006, 11:37

je ne vois pas de connexion a ta base... :shock:

Mammouth du PHP | 1353 Messages

19 mai 2006, 11:38

je ne vois pas de connexion a ta base... :shock:

Je suppose que c est dans include ("connection.php"); :wink: par contre pour le probleme je vois pas pour l'instant :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 mai 2006, 12:59

Je ne comprend pas l'intérêt de la 2ème requête (select count(*)) alors que tu as effectué la même requête juste avant.. pourquoi ne pas utiliser mysql_num_rows() pour savoir combien elle a ramené d'enregistrement ? :)

Peux tu nous donner plus d'informations sur ton problème ? quand tu dis que ton mot de passe ne passe qu'à la 2ème tentative, qu'est ce qui t'arrive à la première ? tu n'es pas redirigé ? tu as un message d'erreur ? tu rentre dans le elseif ? dans le else ?

Sinon en vrac :
- quand tu fais "select * ..." comment sais-tu que c'est l'identifiant qui sera retourné en premier ? ($row[0])
- vire les @ devant les premier mysql_query et ajoutes y également des or die() pour voir s'il y a des erreurs..

Eléphant du PHP | 330 Messages

19 mai 2006, 16:03

Merci pour l'aide.

J'ai simplifié mais j'ai toujours le même problème

Quand je saisis la première fois et que je soumets je reviens sur la même page de login sans message d'erreur.

Quand je resaisis la deuxième fois, cela passe ???
<?php 

include ("connection.php"); 

function rediriger($url)
{
	
  if ( !headers_sent() )
  	{  //  Indique si les en-têtes HTTP ont déjà été envoyés
    header('Location:'.$url); // Envoie un en-tête HTTP
    exit();// On sort 
  	}
  else
  	{
    echo '<script language="JavaScript">'; 
    echo 'window.location= "'.$url.'";'; // Redirection JavaScript
    echo '</script>';
  }
  
}


/* Traitement du formulaire pour l'accès à l'espace admin */ 
                                             
// on teste si le visiteur a soumis le formulaire de connexion 

if (isset($_POST['Connexion']) )
	{ 
    if ((isset($_POST['admin_login']) && !empty($_POST['admin_login'])) && (isset($_POST['admin_pass']) && !empty($_POST['admin_pass'])))
    	{ 
// On se connecte à la base de données 
// requête pour la déclaration de la session id 
        $query='SELECT * FROM tbladmin WHERE admin_login="'.addslashes($_POST['admin_login']).'" AND admin_pass="'.addslashes($_POST['admin_pass']).'"'; 
        $result=mysql_query($query)or exit ('Erreur SQL !'.$query.'<br>'.mysql_error()); 
        $row=mysql_fetch_array($result); 
		$nrows=mysql_num_rows($result);
		
		if (mysql_num_rows($result) > 0) 
        	{ 
	        	
 // On déclare des lors les variables de sessions pour la suite du programme 
 			session_start(); 
 			$_SESSION['admin_login'] = $_POST['admin_login']; // Variable de session contenant le pseudo du admin 
           $_SESSION['admin_id'] = $row[0];// Variable de session contenant l'id du admin
            rediriger('admin_coord.php');
            exit();// On sort 
            
        	} 
 // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
 		else
  			{ 
 // On affiche une boîte de dialogue informant la personne que les coordonnées saisies dans le formulaire sont incorrectes 
       		echo '<SCRIPT language="JavaScript" type="text/javascript">     
            window.alert("Compte non reconnu dans la base de données"); 
            </script>'; 
 	      	} 
 
        } 
    else
	    { 
// Declaration du message d'erreur 
    	echo '<SCRIPT language="JavaScript" type="text/javascript">
			window.alert("Veuillez remplir toutes les cases."); 
			</script>'; 
    	} 
	} 
/* Fin traitement du formaulaire pour l'accees a l'espace admin */                         
?> 

<!--------------------Gestion de la page avec l'affiche des différents éléments---------------------> 
<html> 
<head> 
<title></title> 

<link rel="stylesheet" type="text/css" href="/stylegen.css">

<style type="text/css"> 

/* <![CDATA[ */ 
	
</style>

</head> 

<!-----------------------Début du traitement de l'affichage de la page--------------------------------> 
<body> 

<script>

function charge_page()

{
 location.href = "index.php";
}

function time_out()
{
setTimeout("charge_page()", 60000);

}

time_out()

</script>



<!-- Begin Top Banner -->
	
	<table width="100%" border="0" cellspacing="0" cellpadding="0" >
		<tr><!-- Replace your logo in this table cell -->
			<td><img src="Photos/banniere.jpg" alt="" width="250" height="50" border="0"></td>
		</tr>
	</table>
	<!-- End Top banner -->

<br><br><br>  	
		
<p align="center">Vous avez 60 secondes pour vous connecter avant d'être redirigé vers la page d'Accueil</p> 	

<br><br><br><br><br>    
<table width="350" border ="0" align="center"> 
	<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" name="FormMemo"> 
	
	<tr> 
		<td >Saisissez votre Login
		</td>
		<td> 
			<input type="text" name="admin_login" value=""> 
		</td> 
	</tr> 
	<tr> 
		<td >Saisissez votre Mot de passe
		</td>
		<td> 
			<input type="password" name="admin_pass" value=""> 
		</td> 
	</tr> 
	<tr> 
		<td colspan="2" align="center"><br><input type="submit" name="Connexion" id="Connexion" value="Connexion" >
	</form> 
		</td> 
	</tr> 
	
</table> 

 
</body> 
</html>