2010-12-03 13 views
1

J'ai écrit une application en PHP. Il comprend
1: formulaire de connexion
2: Page d'accueil
3: Formulaire de déconnexion qui est redirigé vers le formulaire de connexion.

Mon register_global = Activé dans php.ini.Espace avant la balise PHP

Mon application a fonctionné correctement sur LAMP et WAMP. Mais il n'a pas de session sur le serveur live. Mais, après vérification ligne par ligne dans le fichier de réglage de session, il y avait un espace avant de commencer '<?PHP ...... ?>'. Après avoir supprimé cet espace, mon application fonctionne correctement sur le serveur live.

Quelle peut être la raison de cet espace avant le ‘<?PHP ...... ?>' par quelle session n'est pas définie?

+0

Notez qu'une solution de contournement à ce problème (dans tout fichier autre que le point d'arrivée) est d'activer la mise en mémoire tampon de sortie. Voir: http://www.php.net/manual/fr/fonction.ob-start.php –

Répondre

5

L'espace est sortie, à savoir envoyé au navigateur. Pour ouvrir une session, vous devez envoyer ce que l'on appelle un en-tête HTTP, ce que vous devez faire avant que tout soit produit. C'est pourquoi ça n'a pas marché. Votre message d'erreur était probablement "en-têtes déjà envoyés".

1

Vous ne pouvez pas envoyer de contenu avant d'envoyer les en-têtes de réponse; la session est envoyée dans les en-têtes de réponse. Parce que vous avez envoyé un espace à l'avance, vous êtes donc incapable de démarrer une session. De la documentation sur session_start, "Pour utiliser des sessions basées sur des cookies, session_start() doit être appelée avant d'envoyer quoi que ce soit au navigateur.". Cela inclut l'espace unique au départ.

Fondamentalement, doit toujours la première chose dans tout script être <?php

Questions connexes