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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.