14. juni 2004 - 14:37Der er
4 kommentarer og 1 løsning
Problemer med "session_start"
Hej
Jeg har problemer med at bruge session's
kode: session_start(); // start session
$_SESSION['name'] = 'Per';
fejl: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\apache\htdocs\smdfeeder\index.php:13) in c:\apache\htdocs\smdfeeder\index.php on line 67
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\smdfeeder\index.php:13) in c:\apache\htdocs\smdfeeder\index.php on line 67
Enten har du udlæst noget _med vilje_ til browseren inden du kalder session_start(); eller også har du en (fx) include-fil der indeholder et blankt linieskift i toppen/bunden som er blevet udlæst til skærmen uden du har tænkt over det.
Så hvis 1) du har udlæst noget til skærmen/browseren inden du kalder session_start() så lad være med det eller 2) check alle de filer du inkluderer inden du kalder session_start() for tomme linier uden for <?php ?> delen af filerne.
*teknisk forklaring* session_start sender en header (i dette tilfælde en cookie, som faktisk er en header)... http-protokollen (den måde browser og server snakker sammen på) er opbygget så alt skal modtages i denne order
---- evt header1\r\n evt header3\r\n [etc] \r\n html-indhold\r\n --- \r\n = carriage return, new line = linieskift på 'maskinsk'
Det du lavede fejl var at du sendte noget html før headers - og da dette er imod http-protokollen annulere php header-kaldet og laver en Warning... det er derfor nødvendigt at omstrukturer scriptet så alle header-kald kommer før noget som helst output...
Der findes også en anden løsning, men den bør altid undgås (kun ved samenkobling til eget error-reporting system / cache / andet der kunne drage nytte af det)... Det kaldes output-buffering (OB)... Det php gør hvis OB er sat til er at gemme alt output i en variabel som så udskrives ved enden af scriptet - dette sikre at der intet output kommer før header-kald... MEN, dette kræver selvfølgeligt en del ekstra af serveren - så det bør, og kan næsten altid, undgås...
Morten
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.