Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 25/05/2008, 17h44   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 4
Points : 4
Par défaut Problème header location

Bonjour,

J'utilise ce code pour un accès simplifié à l'administration:
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
<?php 
	include ('connection.php');
	$login=$_POST['login'];
	$retour = mysql_query("SELECT * FROM admin WHERE nom='$login'");
	while ($donnees = mysql_fetch_array($retour))
	{
		if($donnees['mdp']==$_POST['mdp'])
		{
			echo 'connection réussite';
			header("Location: /admin/index_admin.php");
			exit();
		}
		else
		{
			echo 'Probleme de connection, réessayez';
		}
	}
?>
 
<p>
	<form method="POST" action="index.php?page=admin" enctype="multipart/form-data">
		<fieldset>
			<legend>Identification</legend>
				<p>
					<label>Entrez votre nom : </label><input type="texte" name="login" />
				</p>
				<p>
					<label>Entrez votre mot de passe : </label><input type="password" name="mdp" />
				</p>
			<input type="submit" value="Valider" />
		</fieldset>
	</form>
</p>
Le probleme est que la redirection via le header ne fonctionne pas.
Je recoi ce message d'erreur:
Code :
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\CMS\index.php:73) in C:\wamp\www\CMS\index_admin.php on line 10
j'ai lu quelques sujet, mais aucune réponse apporté.
Merci de m'aider
matt16matt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 18h20   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

La réponse est pourtant ici : http://php.developpez.com/faq/index....s_already_sent
Et en lisant ton message d'erreur, tu verras que tu fais "echo", c'est ça l'erreur
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 18h21   #3
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Avant ton header, ne fait aucun retour vers le navigateur (pas de echo , ni de sauts de lignes etc).

Entre parenthèse, essaie quand meme de faire gaffe à l'orthographe parce que
"echo 'Probleme de connection, résseillez';" , ça pique un peu les yeux.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 18h47   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 4
Points : 4
Merci pour la faute.
Vraiment énorme...lol

J'ai compris pourquoi sa ne fonctionnais pas, mais le problème est que cette page est elle même incluse dans une autres page.
Donc j'ai sur l'autre page des echo présents avant l'inclusion de celle-ci.
N'y a t-il pas un autre moyen de faire un redirection?
Ou de faire en sorte que le header se trouve sur l'autre page?
matt16matt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 18h57   #5
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Bonsoir,

D'un point de vue conception, il y a très peu de raisons pour que la page appellante affiche quelque chose avant la redirection dans la page incluse.
Mais si tu ne veux pas refactoriser tes pages, utilise les output buffering :
- ob_start() tout en haut de la page appellante;
- ob_flush() tout en bas;
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 19h18   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Normalement, le principe d'un script est comme suit :
  1. Traitement des données en entrée ;
  2. Préparation des données de sortie pour affichage ;
  3. Affichage.
Il n'y a pas de raison pour afficher quoi que ce soit avant la fin du traitement. En fait, si tu affiches avant la fin du traitement tu as exactement la situation actulle : tu es bloqué parce que tu voudrais faire une redirection alors que tu as déjà envoyé des choses.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 19h28   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 4
Points : 4
Je suis bien conscient des étapes de développement.
Mais j'ai un base de mon site qui est fixe.
Et j'affiche dans une div mes différentes pages.

Le problème est donc que j'affiche mon menu avant cette div.
Je ne peux donc pas utiliser de header pour faire ma redirection.
matt16matt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 19h41   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Maintenant que tu sais où est la FAQ, tu peux sans doute y faire une recherche sur les redirections ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 19h54   #9
Invité de passage
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 4
Points : 4
Bon du coup j'ai utilisé du javascript.
Code :
1
2
3
<script type="text/javascript">
window.location.href = 'page de redirection';
</script>
matt16matt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 20h14   #10
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Et si, pour une raison ou pour une autre, javascript est désactivé sur le navigateur ?
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 20h16   #11
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par Tsilefy Voir le message
Et si, pour une raison ou pour une autre, javascript est désactivé sur le navigateur ?
Alors cet utilisateur ne peut presque pas utiliser l'Internet d'aujourd'hui
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 22h47   #12
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 34
Points : 34
Citation:
Envoyé par Yogui Voir le message
  1. Traitement des données en entrée ;
  2. Préparation des données de sortie pour affichage ;
  3. Affichage.
Même si ton problème est résolu je me permet de dire que Yogui a entièrement raison et je te conseille de mettre tout ce que tu veux écrire dans une variable comme par exemple $texte et de l'incrementée à chaque fois, ainsi, tu fera un echo sur ta page et un seul, à la fin de ton script, ce qui facilite grandement les choses notamment pour les header, les sessions et autres. Voilà c'était juste un conseil, A+
kaari kosaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 23h24   #13
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Citation:
Envoyé par Yogui Voir le message
Alors cet utilisateur ne peut presque pas utiliser l'Internet d'aujourd'hui
Est-ce que 100 % des mobiles supportent javascript ?
Bon, pour son site, les accès depuis mobiles peuvent être rares, mais si on veut ratisser large, il vaut mieux éviter de confier des tâches aussi importantes qu'une redirection à javascript, surtout qu'il a PHP à côté et que son problème est juste un souci de réorganisation.
Tsilefy 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 20h25.


 
 
 
 
Partenaires

Hébergement Web