|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Bonsoir à tous,
Pour ce soir, je viens vous demander un renseignement, et pourquoi pas des tuyaux sur un problème que je retrouve fréquemment.. Tout d'abord, si j'ai bien compris, on ne peut pas mettre de header('Location[...] alors que session_start() a été déclaré avant ? Parce que mon problème est que je me connecte à un compte, via les variables de sessions. Donc la présence de session_start() à chaque page est important pour vérifier si l'utilisateur est connecté ou non... Mais un peu plus loin dans le code, j'execute des fonctions, qui une fois terminées peuvent amener à une redirection .. Problème: L'habituel message d'erreur auquel j'ai le droit: headers already sent blablabla.. (Je n'ai bien évidement pas de code html avant !) Bref, s'il n'est pas possible d'utiliser les headers, que faire ? J'ai tenté de cette façon: Code :
Bref, avez-vous des propositions à me faire, améliorations ? Je vous remercie d'avance de votre aide |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
tu ne peut mettre aucune entete (dont session_start) après que du texte est été envoyé à la sortie.
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Gérant - société de développement web Inscription : avril 2007 Messages : 290 ![]() |
Bonjour,
En fait le soucis c'est que tu affiche dès que tu peux, pour ma part je ne fait mes affichage cas la fin de mes script donc je n'ai qu'un seul echo, tout le reste est stocké dans une variable en attendant. Et donc je peux faire mes redirection quand bon me semble. Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants Mes tutoriels : http://alexandre-joly.developpez.com/ |
|
|
00
|
|
|
#4 | ||
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
En toute théorie, je n'ai vraiment pas de code html avant mes header ...
Je vous présenté l'architecture de mon index.php: Code :
Voilà, donc en gros, le required.php appelle mes classes qui ne font que des requêtes SQL. Le commun.php contient uniquement des fonctions... Et pour finir le formulaire-gestion.php contient toutes les gestions de formulaires, qui a la fin des appels aux classes/traitement de formulaire ont une redirection par header('Location [...] Que faire ? xD |
||
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Gérant - société de développement web Inscription : avril 2007 Messages : 290 ![]() |
Tout affichage avant qu'il soit html ou non va le faire râler. Même un caractère avant le <?php va le bouler.
Après si ton programme déclenche une notice par exemple il va pas être d'accord non plus. Dans tous les cas si il te dit qu'il y a un affichage il a raison mais ce n'est pas toujours simple à trouver. Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants Mes tutoriels : http://alexandre-joly.developpez.com/ |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Je vérifierais demain, mais au passage, en cherchant sur google je suis tombé sur ça:
Q: Mais comment je fais alors pour faire une redirection avec header() si j'utilise session_start() avant? R: C'est impossible, en ce cas il faut choisir un moyen de faire une redirection, typiquement celà se fait en javascript, ou mieux: en html dans la balise meta refresh: Est-ce vrai ? ^^ |
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Par la même occasion, juste une petite aide pour le débug:
Warning: Cannot modify header information - headers already sent by (output started at /homez.xxx/xxx/www/agence-xxx/classes/TraitementImages.php:1) in /homez.xxx/xxx/www/agence-xxx/gestion/templates/formulaire-gestion.php on line 15 Signifie que le problème vient de "TraitementImages.php" ? Merci d'avance |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Gérant - société de développement web Inscription : avril 2007 Messages : 290 ![]() |
Oui visiblement tu as une sortie faites par ce script d'image en question, donc vérifie bien ce que fait ce script.
pour ce que tu as sortie de la FAQ j'ai un vilain doute moi j'ai jamais eu de soucis à faire de header() après un session_start() à partir du moment ou session_start n'affiche rien. Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants Mes tutoriels : http://alexandre-joly.developpez.com/ |
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Bah jusqu'à maintenant, moi non plus, d'où ma question ^^.
Autrement une question à moitié en rapport avec le thème: Pourquoi il n'y a aucuns soucis avec les header() en local contrairement à un hébergement en ligne ? Tout comme là, étrangement, je n'arrive pas à atteindre certaines tables de ma BDD alors qu'en local tout allait bien ^^ Sur quoi est-ce qu'on retrouvera de tels changements et pourquoi ? ^^ Grosses questions existentielles du mercredi soir là quand même ! |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : septembre 2010 Messages : 7 131 ![]() |
faut toujours mettre le output_buffering sur Off
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Oui oui, je l'avais bien mis sur off dans le php.ini, mais aucuns changements notables :/.
Merci quand même pour ta proposition ! |
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
J'sirais un problème de droits... Quelle erreur est remontée?
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Cette erreur était très bête en fait, simplement une histoire de casse pour l'appel à la table ^^.
Bref, merci à tous pour toutes ces petites précisions dans tous les cas, elles m'ont été fortes utiles ! |
|
|
00
|
|
|
#14 |
|
Membre régulier
![]() |
Bonjour a tous,
J'ai longtemps été confronté a ce genre de problème. En effet, même lorsqu'il y a un session_start() tu peux théoriquement faire des redirections juste après. Seulement les applications d'aujourd'hui il y a souvent des affichage dans le buffer du serveur qui ne se voit pas. Et donc il grogne. J'ai rencontré le soucis dans mes vieilles applications et la seul solution de maintenance a été d'utiliser du javascript dans du PHP, je marchais un peu sur la tête. Mais c'était la seule solution qui fonctionnait. Je sais pas si tu peux faire le test mais j'avais essayé de faire une redirection avec ob_start(), ob_end, ob_flush et j'avais réussi en jouant avec ces fonctions a faire finalement ma redirection avec header. D'ailleurs j'avais écrit un framework perso pour faciliter la création de mes sites avant de passer a Zend Framework car on ne peut pas concurrencer une centaine d'ingénieur Bonne soirée |
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() F. MithieuxÉtudiant Inscription : juin 2008 Messages : 99 ![]() |
Merci pour toutes ses précisions Akrogames
Bon, il s'avère que j'ai trouvé la source du problème (ne vous inquiétez pas, cela ne fait pas une semaine que je cherche xD). En faisant une requête Ajax, je me voyais obligé dans le fichier php appelé de faire appel à mes classes pour faire mes requêtes... Et là, je me rend compte, que le problème vient justement de ces fameuses classes ... Je me mets à chercher, et identifie la source: Stupeur: Ma classe ressemblait à ça: C'est à dire, je sautais une ligne avant de déclarer que je suis en php ......... Franchement, c'est quand même fou ! Je pense qu'il va être temps pour moi de passer à un bon vieux framework ^^. D'ailleurs, avis aux amateurs: Symfony ou Zend ? J'ai l'impression que Symfony est beaucoup plus demandé sur munster/lesjeudis.com ? On divague hein ^^ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com