Avatar billede thedeathart Nybegynder
30. juli 2004 - 18:13 Der er 4 kommentarer og
1 løsning

setcookie giver header error

HEj

jeg er igang med at lave autologin på min loginsystem.

Først lidt kode:

## LOGIN.PHP ###

<?

if ( $_COOKIE[autologin] == 'ja' ) {

        $postbruger = $_COOKIE['username'];
        $pass = $_COOKIE['password'];
        $postpass = md5($pass);

        $resultat = mysql_query("SELECT id FROM brugere WHERE username='$postbruger' AND password='$postpass' AND level>='1' ");

        $number = mysql_num_rows($resultat);
        if($number == 1) {
        $_SESSION['loget_in'] = 1;
        $_SESSION['Brugernavn'] = $postbruger;
        $_SESSION['Password'] = $postpass;

        echo "Du er nu logget ind";  }

}  else {

?>
<form name="Login" method="POST" action="?id=logincode.php">
Brugernavn:<br /><input type="text" name="Brugernavn"><br />
Password:<br /><input type="password" name="Password"><br />
<br />
Autologin: <input type="checkbox" name="autologin" value="ja">
<br /><br />
<input type="submit" name="535a9108ffd2cf1c394023a689eb2d98" value="Login"><br />
</form>
<br />
<br />

<? echo $_COOKIE[autologin]; ?>


<?
};
?>

## LOGINCODE.PHP ##

<?php

include('config.php');


if(!isset($_POST['535a9108ffd2cf1c394023a689eb2d98'])) {
    echo "Desværre, der er sket en fejl.";
    }else {
        $postbruger = $_POST['Brugernavn'];
        $pass = $_POST['Password'];
        $postpass = md5($pass);
        $auto = $_POST['autologin'];

        $resultat = mysql_query("SELECT id FROM brugere WHERE username='$postbruger' AND password='$postpass' AND level>='1' ");

        $number = mysql_num_rows($resultat);
        if($number == 1) {
        $_SESSION['loget_in'] = 1;
        $_SESSION['Brugernavn'] = $postbruger;
        $_SESSION['Password'] = $postpass;

        if ( $auto == 'ja' ) {
        setcookie(autologin, "ja", time()+61516800);
        setcookie(username, $_SESSION[Brugernavn], time()+61516800);
        setcookie(password, $_SESSION[Password], time()+61516800);
        };

        echo "Du er nu logget ind som: ". $_SESSION['Brugernavn'];

        $time = time();
        $query = mysql_query("INSERT INTO online (id,username) VALUES ('$time','$_SESSION[Brugernavn]') ");


        } else echo"De indtastede oplysninger er ikke korrekte";

        }

?>

## Og her er de fejl meddelser jeg får: ##

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\itechforum\index.php:21) in c:\apache\htdocs\itechforum\logincode.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\itechforum\index.php:21) in c:\apache\htdocs\itechforum\logincode.php on line 24

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\itechforum\index.php:21) in c:\apache\htdocs\itechforum\logincode.php on line 25


Dvs. de linjer med setcookie laver en header fejl.
Denne forkommer kun når jeg vælger at bruge autologin.
Og resten af systemet virker da også fint.
Avatar billede coderdk Praktikant
30. juli 2004 - 18:16 #1
Yeps, setcookie SKAL bruge i toppen af et script. Mao der må ikke skrives noget ud FØR setcookie... Du kan muligvis omgå det ved i toppen af dit script at skrive: ob_start();
Avatar billede Syska Mester
30. juli 2004 - 19:37 #2
Du har jo allerede fået fejlet, den fortæller dig at du allerede har lavet output, og du kan ikke sætte cookies efter der er lavet output til browseren....
Avatar billede googolplex Novice
30. juli 2004 - 20:59 #3
Den dovne mands løsning (bruger den selv...):

ob_start();

// din kode, headers() og andet som du lyster

ob_end_flush();
Avatar billede Syska Mester
30. juli 2004 - 22:12 #4
men så fjerner den vel også det html som han eventuelt har udskrevet ik?
Avatar billede thedeathart Nybegynder
30. juli 2004 - 22:39 #5
ja, ob_start() virker fint, jeg har faktisk brugt den før til et andet loginsys.

er der enig nødvendig at skrive ob_end_flush() ?-)

men thx anyway.
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