probleme de redirection de page

luna
Invité n'ayant pas de compte PHPfrance

21 sept. 2006, 11:59

Bonjour,
voila selon des condition, je dois rediriger lutilisateur sur differente page, mais il me redirige toujours sur accueil.php.
$reqsql2 = mysql_query("SELECT count(num_pers) from personnel where login='$util'");
	while ($row2 = mysql_fetch_row($reqsql2))
	{
		if ($row2[0]!=1) 
		{
		header("Location: modification.php?er='log'");//ici au lieu de me rediriger dur celle-ci il me redirige sur accueil.php alors que lorsque je met un echo il arrive bien jusqu'ici.
		}
	}
		
$reqsql = mysql_query("SELECT num_pers, passwd from personnel where login='$util'");
while ($row = mysql_fetch_row($reqsql)) {
	
			if (md5($anmo)==$row[1])
			{
				if ($nomo==$renomo)
				{
				mysql_query("Update personnel set passwd=md5('$renomo') where num_pers='$row[0]'");
				} else {  echo '4';
				header("Location: modification.php?er='more'");
				}
			} else {  echo '5';
			header("Location: modification.php?er='anmo'");
			}
		
}
header("Location: accueil.php");
?> 
j'espere que vous pourrez m'aider.

merci d'avance

Eléphant du PHP | 396 Messages

21 sept. 2006, 12:02

Je pense que ton header tout en bas pose problème.
Pour faire ça proprement, pourquoi n'utilises-tu pas une structure if elseif else?

ViPHP
ViPHP | 3607 Messages

21 sept. 2006, 12:13

il faut ajouter un exit() après chaque header()

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

21 sept. 2006, 12:22

Le problème du header() est effectivement qu'il envoi l'information de redirection au navigateur, mais n'arrête pas l'exécution du code pour autant.
Ainsi il continue de lire ton code après avoir trouvé la première redirection et en découvre une seconde, il laisse donc tomber la première et continue sa lecture tranquillement :)

La solution de jojolapine est effectivement la bonne (en supposant naturellement que tes requêtes fonctionnent, que tu as bien des résultats etc.), en plaçant un exit() après chacun de tes header(), php s'arrêtera juste après la première redirection trouvée et l'exécutera convenablement - ce qui soit dit en passant lui évite d'avoir à lire tout le reste du code alors qu'il n'en a pas besoin :)

luna
Invité n'ayant pas de compte PHPfrance

21 sept. 2006, 13:38

D'accord je croyais que le header arretais l'execution du code. Merci, c'est donc l'information qu'il me manquait. Merci.

J'ai plus qu'a testé exit().