Problème de redirection

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de redirection

Re: Problème de redirection

par Mazarini » 17 juin 2011, 15:06

Dans un premier temps, ajoute :
echo $nbResultat,'/',$row['actif'];
avant :
if ($nbResultat != 0 && $row['actif'] != 0)

Cela va provoquer une erreur sur l'appel à header(), mais tu sauras pourquoi tu ne rentre pas dans le if.

Pour le lien, c'est pour que tu constates le problème liés à la non utilisation de mysql_real_escape_string() avec la possibilité de te connecter sans connaitre le mot de passe.

Re: Problème de redirection

par Mik0 » 17 juin 2011, 14:38

Je n'ai pas bien compris votre lien, je ne vois pas trop le rapport avec mon problème.
Je ne cherche pas à modifier mon mot de passe, je veux juste me connecter.
La base de données contient les ID, mais lorsque je veux me connecter, il me redirige sur la page d'erreur avec l'erreur numéro 4.
Je ne comprend pas pourquoi, je rempli pourtant bien les conditions émises :
	<?php
if(!empty($_POST["login"]) && (!empty($_POST["mdp"])))  //Si les champs ont bien été remplis..
{	
	include('inc_connexion.php');
	$maConnexion=connexion();	//On se connecte à la base..
	if($maConnexion != 0) 
	{
		$login=$_POST["login"]; //On récupere le login entré par l'utilisateur..
		$mdp=$_POST["mdp"]; //On récupere le mdp entré par l'utilisateur..
		$requete1 = "select actif from utilisateur where login='$login' and mdp='$mdp'"; //On exécute une requete pour vérifier si les ID rentré sont bien présents dans la base..
		$resultat= mysql_query($requete, $maConnexion);
		$nbResultat= mysql_num_rows($resultat);
		$row = mysql_fetch_array($resultat);

			if ($nbResultat != 0 && $row['actif'] != 0) //Si les ID sont présents dans la base..
			{
				{
				session_start();		
				session_register("login");
				header("location:index.php");
				}
			}
			else
			{
				header("location:Erreur.php?message4=erreurId");
			}
	}
	else
	{
		header("location:Erreur.php?message1=erreurConnexion");
	}
}
else
{
	header("location:Erreur.php?message2=champVide");
}
?>
J'ai également modifié mon code comme vous me l'avez fais remarquer, deux accès à la table utilisateur était inutile.

Re: Problème de redirection

par Mazarini » 17 juin 2011, 14:22

Bonjour,

Malheureusement tu n'indiques pas l'erreur affichée dans la page d'erreur.

Il n'y a pas d'erreur visible au premier coup d'oeil.
Par contre :
- pourquoi faire 2 accès à la table utilisateur alors que le premier te fournit déjà le top actif
- pourquoi faire une select * alors qu'un select actif suffirait.
- il faut utiliser la fonction mysql_real_escape_string. (cf php-debutant/modification-son-propre-mo ... 59215.html)
- pourquoi mettre des noms différents message1... alors que tu pourrais tester le contenu pour voir quelle est l'erreur.

Problème de redirection

par Mik0 » 17 juin 2011, 13:56

Bonjour,
j'ai un problème de redirection, j'ai mis un contrôle sur mon système de connexion mais il me redirige sur la page d'erreur alors que les identifiants sont bons.. Je pense que ca doit être une erreur d'implémentation.. help :?

La page traitement_login :
<?php
if(!empty($_POST["login"]) && (!empty($_POST["mdp"]))) 
{	
	include('inc_connexion.php');
	$maConnexion=connexion();
	if($maConnexion != 0) 
	{
		$login=$_POST["login"]; //On récupere le login entré par l'utilisateur..
		$mdp=$_POST["mdp"]; //On récupere le mdp entré par l'utilisateur..
		$requete1 = "select * from utilisateur where login='$login' and mdp='$mdp'"; //On exécute une requete pour vérifier si les ID rentré sont bien présents dans la base..
		$resultat= mysql_query($requete, $maConnexion);
		$nbResultat= mysql_num_rows($resultat);
		$requete2 = "select actif from utilisateur where login='$login'"; //On exécute une requete pour voir si le compte est actif ou non
		$res = mysql_query($requete2) or die('Erreur SQL !<br>'.$requete2.'<br>'.mysql_error());
		$row = mysql_fetch_array($res);
			if ($nbResultat != 0)
			{
				if ($row['actif'] = 0)
				{
					header("location:Erreur.php?message3=noActif");
				}
				else
				{
				session_start();		
				session_register("login");
				header("location:index.php");
				}
			}
			else
			{
				header("location:Erreur.php?message4=erreurId");
			}
	}
	else
	{
		header("location:Erreur.php?message1=erreurConnexion");
	}
}
else
{
	header("location:Erreur.php?message2=champVide");
}
?>
Et la page d'erreur :
						<?php
							if(isset($_GET["message4"]))
							{
								echo "<center><font color='red'>Les identifiants sont incorrects</font></center><br />";
							}
							if(isset($_GET["message2"]))
							{
								echo "<center><font color='red'>Veuillez remplir tous les champs</font></center><br />";
							}
							if(isset($_GET["message1"]))
							{
								echo "<center><font color='red'>Erreur de connexion</font></center><br />";
							}
							if(isset($_GET["message3"]))
							{
								echo "<center><font color='red'>Votre compte n'est pas activé.</font></center><br />";
							}
						?>