8791 sujets

Développement web côté serveur, CMS

Salut à vous,

Je suis en possession d'un script qui appelle la fonction PHP header() afin d'effectuer une redirection. Seulement, cette fonction est appelée après avoir affiché du code HTML sur le navigateur du client.

Mon soucis est que mon serveur exécute tout de même cette fonction header() au lieu de m'afficher une erreur PHP en me disant que "headers are already sent."

Savez-vous quelle directive PHP je dois modifier ?

Merci d'avance !
Je connais 2 solutions.

Soit tu déplaces cet appel à header en haut de page, avant toute sortie vers le navigateur.

Soit tu "retardes" l'envoi d'informations au client, avec par exemple le couple ob_start() et ob_end_flush(). En gros, ça consiste à mettre la première fonction en haut de page et la seconde en bas, et là tes headers seront bien traités. Je t'invite à lire le descriptif des fonctions pour une explication précise de leur fonctionnement.

Si d'autres techniques existent, je suis quand même curieux Smiley murf .
Modifié par Planplan (09 Jun 2010 - 09:59)
Bonjour, je ne sais pas, mais si tu n'as pas l'erreur. Ma premiére pensé est de savoir si tu as des erreurs lors d'un oubli de point virgule.

Je sais juste qu'on peut désactiver l'affichage des erreurs dans le fichier php.ini.

Il y a une ligne :
display_errors = On
Si elle est à off change. Voila
Salut !

Oui j'ai les autres erreurs PHP qui s'affichent : parse error, undefined function, etc.

Ce que je vais faire, c'est comparer ma config. de PHP avec une autre.

Je vous tiens au courant.

A+
Planplan> Ta deuxième solution ne m'a pas interpellé immédiatement mais en effet, j'utilise gZip. Mes pages sont donc bufferisées ! Smiley cligne

Quoi qu'il en soit, je modifie le script pour qu'il soit correct.

edit: Résolu !
Modifié par Alphonse (09 Jun 2010 - 11:33)