La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  Headers already sent ... solution ?
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Headers already sent ... solution ?  (Lu 847 fois)
Headers already sent ... solution ?
« sur: le 04-05-2006 a 11:22:45 »
real34
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 61



Quand faut y aller, faut y aller !

Voir le Profil    E-Mail
Répondre avec citation

Bonjour à tous !
J'ai besoin d'un petit conseil ...

Je sais que pour faire une redirection en php, il faut utiliser
Code:
header('location:page.php');

Mais je sais aussi qu'il y a un problème dès qu'on écrit quelquechose avant cette ligne de code ...

Alors il est dur de rediriger l'utilisateur vers une page après par exemple qu'il se soit identifié !!!
J'ai trouvé deux solutions qui ont l'air efficaces toutes les 2. Cependant la première utilise le Javascript, donc n'est pas fiable à 100%
Code:
document.location.replace("page.php");

Et la seconde passe par le buffer de sortie de php :
Code:
ob_start();
echo 'tout le texte que je veux !!';
header('location:page.php');
ob_end_flush();

Cette dernière solution semble être de loin la plus efficace. Mais l'implémenter signifie mettre en tout début de page un ob_start(); et de finir celle-ci par ob_end_flush();
Ayant lu la doc de cette fonction et les utilisations qu'on pouvait en faire, je me demandais si cela ne poserait pas de problème :
- de vitesse de chargement des pages
- de compatibilité avec par exemple les sessions ou autre


Bref ... vaut-il mieux prendre le risque du javascript rapide ou passer par la bufferisation ??! 

Merci d'avance !

Rapporter au modérateur  

A vot' service !
Ma présentation ici
Etudiant à votre disposition pour tous projets web
(contact par MP on en discutera)

Re:Headers already sent ... solution ?
« Répondre #1 sur: le 04-05-2006 a 18:22:15 »
Stick
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

salut,

Il ne faut en effet ne pas utiliser d'envoi au navigateur avant le header, sinon s'affiche un gentil mesage indiquant que le header à déjà été envoyé. Il suffit simplement de ne pas faire de print, de echo avant d'utiliser le header.

Tu as une autre solution qui est d'utiliser une balise méta  que tu placera ou bon te semblera :
Code:
<meta http-equiv="refresh" content="0;URL=destination.html" />


Rapporter au modérateur  
Re:Headers already sent ... solution ?
« Répondre #2 sur: le 04-05-2006 a 20:46:02 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Salut,

1) le javascript ne risque pas d'être plus rapide, puisqu'il faut déjà que la page soit chargée avant qu'il s'exécute
2) la seule obligation est de ne pas avoir envoyé de données dans le flux avant le header, de ne pas avoir fait d'echo par exemple, ce qui n'empêche pas du tout de faire des traitements. Exemple (code tapé à l'arrache, non testé) :
Code:

extract ($_POST);
$testLogin = isInDb ($login, $password);
if (!$testLogin)
{
  header ("tuTesGourre.php");
}
else
{
  // blabla tout va bien
}

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:Headers already sent ... solution ?
« Répondre #3 sur: le 05-05-2006 a 09:00:56 »
real34
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 61



Quand faut y aller, faut y aller !

Voir le Profil    E-Mail
Répondre avec citation

Ah oui, d'accord ! Je saisi la différence ...

Je vais essayer de faire des tests, mais il se peut que cela ne fonctionne toujours pas vu que ma page 'connexion.php' par exemple est appelée par un include dans index.php qui elle, contient du code html et aura déjà affiché des choses.

Je vais essayer de regarder tout à l'heure, mais sinon, qu'en est-il de l'utilisation du buffer de sortie ? C'est dangereurx, il y a des risques, c'est lourd

Rapporter au modérateur  

A vot' service !
Ma présentation ici
Etudiant à votre disposition pour tous projets web
(contact par MP on en discutera)
Re:Headers already sent ... solution ?
« Répondre #4 sur: le 05-05-2006 a 15:32:22 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

A priori, je ne vois pas trop quel risque il y aurait à "bufferiser".

Et si tu ne veux pas avoir d'embrouilles, fais TOUJOURS tous les traitements AVANT les affichages.

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg