Avatar billede keffy Nybegynder
27. april 2002 - 19:24 Der er 4 kommentarer og
3 løsninger

problem med session cookie

Hejsa
Hvem er friske til at hjælpe mig. Problemet er der kommer
Warning: Cannot send session cookie - headers already sent by (output started at C:\apache\htdocs\a\login1.php:10) in C:\apache\htdocs\a\login1.php on line 12

Warning: Cannot send session cache limiter - headers already sent (output started at C:\apache\htdocs\a\login1.php:10) in C:\apache\htdocs\a\login1.php on line 12
Scriptet ser sådan ud.
<html>
<body>
<form action="login.php" method="post">
Brugernavn: <input type="text" name="brugernavn"><br>
Kodeord: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
<?php
/*** Kode eksempel: login.php ***/
session_start();

// Krypter det indtastede kodeord
$md5Kode = md5($password);

// Check om brugeren findes i databasen med det indtastede kodeord
if (bruger && password) {
mysql_connect("localhost","","");
$result = mysql_db_query("vik","SELECT brugerid FROM booking WHERE
brugerid like '$brugernavn' AND password like '$md5Kode'")
  or die( mysql_error() );
if(mysql_num_rows($result) != 0) {
  $verified_user = $brugernavn;
  session_register("verified_user");
Header("Location: http://localhost/index.php");
}
}
else {   
    Header("Location: authfailed.html"); 
}
exit;
?>
Hvem kan hjælpe?
Gode points at hente
Hilsen
Kenneth Majgaard
http://www.mymusic.dk/doktor-fjols

Avatar billede earp Nybegynder
27. april 2002 - 19:32 #1
Det er fordi der ikke må sendes noget output til browseren inden du sætter session-cookien.
Avatar billede well_r Nybegynder
27. april 2002 - 20:26 #2
som earp siger..
alt sådan noget session/header/cookie skal sendes ud før ALT andet
Avatar billede Slettet bruger
27. april 2002 - 21:39 #3
Med mindre du benytter dig af PHP4's output buffering ... øverst(!) på siden skriver du ob_start(); nederst skriver du ob_end_flush();

Læs mere om output buffering på www.zend.com eller her: http://dk.php.net/manual/en/ref.outcontrol.php
Avatar billede keffy Nybegynder
28. april 2002 - 20:39 #4
Hvordan kan man sende noget output til browseren inden man sætter session-cookien?
Er ved at studere http://dk.php.net/manual/en/ref.outcontrol.php
Findes der simplere login-system?
Taknemmelige hilsner
Kenneth
http://www.mymusic.dk/doktor-fjols
Avatar billede Slettet bruger
28. april 2002 - 21:43 #5
Hvordan du kan sende noget output inden du forsøger at tilføje en ny header? Det kan du da gøre som:

<?
echo "Fejler!";
set_cookie("foo", "bar", 0, "/");
?>

Og det vil virke med output buffering som:

<?
ob_start();
echo "Virker!";
set_cookie("foo", "bar", 0, "/");
ob_end_flush();
?>

Læs iøvrigt denne rigtigt gode artikel om PHP's outputbuffering mekanisme:

"Output buffering, and how it can change your life" http://www.zend.com/zend/art/buffering.php
Avatar billede Slettet bruger
28. april 2002 - 21:58 #6
Iøvrigt - hvis du vil have dit script til at virke UDEN anvendelse af outputbuffering - skal du bare lave det om til:

<?
session_start();
$md5Kode = md5($password);
if ($brugernavn && password) {
    mysql_connect("localhost","","") or die(mysql_error());
    $result = mysql_db_query("vik","SELECT brugerid FROM booking WHERE brugerid like '$brugernavn' AND password like '$md5Kode'") or die(mysql_error());
    if (mysql_num_rows($result) > 0) {
        $verified_user = $brugernavn;
        session_register("verified_user");
        Header("Location: http://localhost/index.php");
        exit();
    } else {   
        Header("Location: authfailed.html"); 
        exit();
    }
}
?>

<html>
<body>
<form action="login.php" method="post">
Brugernavn: <input type="text" name="brugernavn"><br>
Kodeord: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>

Således at dit eventuelle HTML output kommer efter dine redirect headers.
Avatar billede keffy Nybegynder
29. april 2002 - 12:40 #7
Jeg kom et et skridt videre, det var mere eller mindre at bytte om på
html og php rækkefølge som ovennævnt fra Mercur, som jeg vil prøve at gøre mig mere klog på. Jeg kom af med warning, men skal nu finde ud af at få det til at samarbejde med min egen database (localhost). Jeg er ved at forstå earp og well_r's svar, derfor vil jeg give jer 10 points og resten 80 til Mercur, som tak for hjælpen.
Taknemmeligste hilsner
Kenneth
http://www.mymusic.dk/doktor-fjols
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester