04. oktober 2009 - 20:13Der er
14 kommentarer og 1 løsning
php session cookie...
Hej, jeg får følgene fejl:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/index.php:4) in /var/www/sys33hs/login.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/index.php:4) in /var/www/sys33hs/login.php on line 2
if (!$user || !$pass) { echo "Udfyld vanligst felterne";
}
elseif (!ereg("[A-z0-9_-]", $user)) {
echo "Forket brugernavn...";
}
elseif (!ereg("[A-z0-9_-]", $pass)) {
echo "Forket adgangskode...";
} else {
$tal = mysql_query("SELECT user FROM brugere WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error()); $antal = mysql_num_rows($tal); if($antal == 1){
$tid = time();
mysql_query("UPDATE brugere SET online = '$tid' WHERE `user` = '$user'");
Du echo'er noget før du skriver til session og cookies. Det kan du ikke. Grunden kan du altid læse om selv, men løsningen på dit problem er enten at bruge output buffering (ved at skrive ob_start() før alt andet), eller flytte ALLE echo statements og ren HTML (uden for php-tags) ned under hvor du skriver til sessions og cookies.
$tal = mysql_query("SELECT user FROM brugere WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error()); $antal = mysql_num_rows($tal); if($antal == 1){
UTF-8 tegnsættet inkluderer normalt det der hedder en BOM, eller Byte Order Mark, som er nogle tegn i starten af dokumentet, som du ikke kan se i tekst-editoren, men som serveren stadig sender til browseren som ren tekst, hvilket gør at du skriver noget før du bruger sessions, som du ikke må.
Hvis du skal gemme html-filer i UTF-8, skal du sørge for at gemme dem uden BOM. Det kan du gøre i de fleste ordentlige editors. Notepad++ gør det f.eks. under Format -> Encode in UTF-8 (Without BOM). Programmer's Notepad 2 gør det under File -> Encoding -> UTF-8 No Mark.
Jamen din fejl skyldes jo netop index.php. Læs nu den fejlbesked rigtig. Du starter noget output på linje 4 i index.php og forsøger derefter at sende en header information, session_start(), i login.php, sikkert fordi du inkludere login.php i index.php.
Det vil nok være smartere at ændre i index.php, så der ikke sendes noget til browseren før til sidst, når du har kørt alt din php kode igennem. Du vil nemlig også få problemer med bl.a. header().
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.