Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 04/09/2011, 02h13   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut redirection avec header

Bonsoir,

je fais une redirection avec l'instruction "header" ; comme elle est au milieu du code, je fais une bufférisation de la sortie :
Code :
1
2
3
4
5
6
7
8
 
<?php
ob_start();
...
header('Location:http://www.---');
...
ob_end_flush();
?>
Mais cette bufferisation est-elle un passage obligé ou peut-on l'éviter, tout en laissant la redirection au milieu du code (une solution serait-elle de la mettre dans une iframe, afin qu'elle soit au début du fichier ?)
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 02h41   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Citation:
Envoyé par laurentSc
je fais une redirection avec l'instruction "header" ; comme elle est au milieu du code, je fais une bufférisation de la sortie
Comme dans le cas d'une redirection on est pas censés renvoyer un quelconque caractère à afficher, la bufferisation n'a pas lieu d'être.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 10h41   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Oui, mais vu qu'avant cette redirection, il y a plein d'affichages et que la redirection n'est effectuée que si la condition d'un if est effective :
Code php :
1
2
3
4
5
...
$login=$_POST['login'];
$mdp=$_POST['mdp'];
if (($login=='---')&&($mdp=='---'))
    header('Location:http://---');
si je le supprime, ça ne marche plus...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 10h56   #4
Membre confirmé
 
Inscription : juillet 2011
Messages : 146
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2011
Messages : 146
Points : 253
Points : 253
Si tu affiches un seul caractère ne faisant pas parti d'un header avant une instruction header effectivement tu n'as pas d'autre choix que d'utiliser les buffers.

Après tu doit surement pouvoir revoir ton code et mieux positionner cette vérification pour éviter cela ou faire des vérifications avant les affichages précédents par exemple.
Tolriq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 12h14   #5
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
bah apres, tu peux faire une redirection avec la balise html (refresh de memoire).
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 13h34   #6
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
C'est donc une redirection HTML...
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Refresh" content="2; URL=http://www.destination.com/" />
	<title>Redirection</title>
</head>
<body>
	<p>
		Redirection en cours...<br /><br />
		Cliquez sur le lien ci-dessous si votre navigateur ne vous redirige pas automatiquement.<br /><br />
		<a href="http://www.destination.com/">Titre du site</a>
	</p>
	<script type="text/javascript">
		function refresh(){
			clearTimeout(timer);
			window.location='http://www.destination.com/';
		}
		var timer=setTimeout(refresh,2000);
	</script>
</body>
</html>
Peut importe où se situent les blocs de code PHP et... la bufferisation n'a pas lieu d'être puisque la redirection s'effectue côté client.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 13h49   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
OK, merci.
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc 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 23h41.


 
 
 
 
Partenaires

Hébergement Web