Kris: Cookie Überprüfung funktioniert nicht :/

Hi
Dummer denkfehler ? :

<?php
error_reporting(E_ALL);

setcookie("soc_test", "testwert", time()+(300));

if(isset($_COOKIE['testcookie'])) {

header('Location: start.php');
exit();

} else {

header('Location: nocookies.htm');
exit();

}
?>

mfg

KRIS

  1. Hi!

    Dummer denkfehler ? :

    <?php
    error_reporting(E_ALL);

    setcookie("soc_test", "testwert", time()+(300));

    if(isset($_COOKIE['testcookie'])) {

    header('Location: start.php');
    exit();

    } else {

    header('Location: nocookies.htm');
    exit();

    }
    ?>

    Wo liegt nun dein Problem?

    Grüße,
    Fabian St.

    1. Wo liegt nun dein Problem?

      Cookie wird gesetzt ...
      dennoch werde ich auf den unteren Link weitergeleitet :/

      1. Hi!

        Wo liegt nun dein Problem?

        Cookie wird gesetzt ...
        dennoch werde ich auf den unteren Link weitergeleitet :/

        Das ist doch schon mal was ;-) Also hier noch mal dein Skript:

          
          
        <?php  
        error_reporting(E_ALL);  
            // das Cookie heißt also 'soc_test'  
            setcookie("soc_test", "testwert", time()+(300));  
          
            // warum überprüfst du hier aber dann die Existenz des Cookies mit dem Namen 'testcookie'?  
            // richtig wäre also if(isset($_COOKIE['soc_test'])) { .... }  
            if(isset($_COOKIE['testcookie'])) {  
                // s.u.  
                header('Location: start.php');  
                exit();  
            } else {  
                // s.u.  
                header('Location: nocookies.htm');  
                exit();  
            }  
        ?>  
          
        
        

        Darüber hinaus muss auf einen Location-Header eine absolute URI folgen, d.h. z.B. header(Location: 'http://'.$_SERVER['HTTP_HOST'].'/start.php');.

        Außerdem wird das ganze so nicht funktionieren, da ein Cookie erst im nächsten Request-Header wieder an den Server geschickt wird, sodass erst dann die Überprüfung TRUE ergibt, s.a. http://de.php.net/setcookie:

        "Once the cookies have been set, they can be accessed on the __next page load__ with the $_COOKIE or $HTTP_COOKIE_VARS arrays."

        Grüße,
        Fabian St.

  2. Hi,

    setcookie("soc_test", "testwert", time()+(300));
        if(isset($_COOKIE['testcookie'])) {

    1. Du testest auf einen anderen Cookie als den, den Du setzt (soc_test <--> testcookie)
    2. Der Cookie ist selbstverständlich erst beim nächsten HTTP-Request in $_COOKIE enthalten , denn erst dann ist er vom Client verschickt worden - unter der Voraussetzung, daß der Client den Cookie akzeptiert hat und er inzwischen nicht gelöscht wurde.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.