Michael Bieri: setcookie(...): Bug? Zu blöd?

Hallo

Die PHP-Funktion setCookie(...) bereitet mir zurzeit ziemliche Schwierigkeiten. Auf deutsch gesagt: Sie funktioniert nicht. Alles schön nach Handbuch gemacht, nix ging. Da hab ich noch ein Beispiel von einer Website heruntergeladen und ausprobiert. Ging auch nicht. Woran liegt das? Folgendes Beispiel:

<?php
$lastvisit = $HTTP_COOKIE_VARS["lastvisit"];
if (!$lastvisit)
{
echo "Sie haben uns diesen Monat noch nicht beehrt!<br>";
}
else
{
echo "Dein letzter Besuch war am: $lastvisit";
}
$datum = date("d.m.Y H:i:s");
setcookie("lastvisit", $datum, time()+30*24*60*60); // 30 Tage lang gültig
?>

Gruss

Michael

  1. Huhu Michael

    Alles schön nach Handbuch gemacht, nix ging.

    Dann solltest Du evtl. das Handbuch wechseln, falls Dein Beispiel aus diesem entnommen sein sollte.

    http://www.php.net/manual/en/function.setcookie.php

    bzw.

    http://www.php.net/manual/de/function.setcookie.php

    Gleich im ersten Absatz wird erläutert was zum Setzen von Cookies beachtet werden muss.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
  2. Hallo alle

    also doch zu blöd! Es lag wirklich an mir, zumindest streng gesehen.

    Also: Das setzen der Cookies funktioniert mit dieser Funktion einwandfrei, auch wenn sie nicht im Cookieordner von Windows erscheinen.

    Aber: Das Laden der Cookies. Ich hab es in einer Funktion drin versucht. Geht nicht, denn die $HTTP_..._VARS sind in Funktionen NICHT verfügbar.

    Vorschlag: Ich hab jetzt schon eine ganze Liste solcher Beispiele, wo Fehler passieren können wenn man etwas nicht weiss oder nicht darauf achtet, zB das hier genannte Beispiel oder das Problem mit CallByValue/ByReference. Es gibt sicher noch tausende davon. Wie wäre es, wenn man solche "Frequently-Done-Bugs" (FDB ;-) )in einer Datenbank erfassen würde und so ander Programmiere warnen könnte? Wer würde so einen Dienst nutzen?

    Gruss

    Michael

    1. Moin!

      Aber: Das Laden der Cookies. Ich hab es in einer Funktion drin versucht. Geht nicht, denn die $HTTP_..._VARS sind in Funktionen NICHT verfügbar.

      Logisch. $_HTTP_*_VARS sind ganz normale, globale Variablen. Die kann man in Funktionen nur ansprechen, wenn man die Variable in den Scope der Funktion holt mit "global $HTTP_*_VARS".

      Es ist nicht nur deshalb deutlich schlauer, besser auf z.B. $_COOKIE auszuweichen. Diese Variablen stehen seit PHP 4.1 zur Verfügung - die anderen werden irgendwann abgeschafft, und es wäre dann dumm, wenn deine Skripte dann nicht mehr funktionieren.

      $_* (also $_GET, $_POST, $_COOKIES usw) sind superglobal. Die stehen auch ohne extra Bekanntmachung in Funktionen zur Verfügung.

      - Sven Rautenberg

      --
      "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)