2010-05-05 10 views
-1

je l'ai utilisé un échantillon trouvé sur ligne et appliqué à mon code:php erreur session_start()

<?php 
session_start(); 
if (isset($_REQUEST["email"])) 
{ 
    $_SESSION["name"] = true; 
    $host = $_SERVER["HTTP_HOST"]; 
    $path = dirname($_SERVER["PHP_SELF"]); 
    $sid = session_name() . "=" . session_id(); 
    header("Location: index.php?$sid"); 
    exit; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
... 
... 
and rest of the html code 

Quand j'ouvre cette page, je suis une erreur:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2 

I regardé autour de résoudre ce problème et vu quelques messages à ce sujet dans ce site aussi, mais je ne peux pas obtenir une bonne prise sur ce ... ne peut pas trouver la réponse.

Aidez-nous s'il vous plaît.

Merci.

+0

duplicata possible de http://stackoverflow.com/questions/1183726/headers-already-sent-in-php, http://stackoverflow.com/questions/1891969/php-headers-already-sent-error, http://stackoverflow.com/questions/2121473/why-am-i-getting-this-php-session-start-error, http://stackoverflow.com/questions/2346827/im-getting-a-php- warning-can not-modify-header-information-but-i-have-my-include – outis

+0

cela doit être la question la plus posée sur SO – Galen

+0

Vous venez de me faire faire une double prise. – outis

Répondre

0

NotePad est connu pour insérer BOM au début du fichier texte. Lorsque vous enregistrez le fichier, assurez-vous de ne pas sélectionner Unicode ou UTF-8 comme encodage.

Vous pouvez confirmer si la nomenclature est insérée en effectuant un vidage hexadécimal du fichier. Vous pouvez utiliser cet utilitaire pour le faire,

http://www.richpasco.org/utilities/hexdump.html

Si elle ne démarre pas avec 0x3C, vous avez obtenu la nomenclature.

+0

Depuis toutes ces années, je n'ai jamais remarqué cet encodage Je viens de le découvrir et de l'enregistrer comme ANSI et je ne reçois plus cet avertissement Merci d'avoir aidé ce débutant. – tooepic

0

Recherchez un espace, un retour à la ligne ou tout autre caractère avant le <?php. Toute sortie avant session_start() provoquera cette erreur.

L'erreur indique spécifiquement que la sortie est sur la ligne 1 de login.php, alors que session_start() est sur la ligne 2. Il s'agit donc probablement d'un espace ou d'un autre caractère.

+0

je l'ai fait. ce script php est le seul script de ce fichier html. J'ai même essayé en me débarrassant de ces espaces supplémentaires devant "$ _SESSION", "$ host", "$ path", $ sid "," en-tête ", et" exit; "... et ce n'était toujours pas le cas – tooepic

+0

également, il n'y a pas d'espace avant ou après tooepic

+0

Et, si vous ne trouvez toujours pas de solution, vous pouvez voir si c'est peut-être un problème de nomenclature Unicode. L'éditeur de texte utilise, et sélectionnez un encodage sans nomenclature, si possible, voici une courte explication de ce problème et d'autres: http: //bytes.com/topic/php/insights/876324-php-common-newbie-pitfalls-1 -headers-already-sent – grossvogel