Uli: Cookies

Hallo Leute,
wer kann mir helfen. Auf meiner Page kann man sich nur einloggen mit eingeschalteten Cookies.
Wenn im Browser nun die Cookies gesperrt sind, erscheint folgende Meldung:
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web67/html/index.php:3) in /srv/www/htdocs/web67/html/index.php on line 7

Auf dieser Position befindet sich folgendes:
if(!isset($HTTP_COOKIE_VARS['c_lastvisit'])) {
  setcookie("c_lastvisit",time(),time()+31536000,"/",$GLOBALS['SERVER_NAME'],0);
 }

Hat jemand eine Idee, wie man das eleganter machen kann. Ich dachte vielleicht eine Textanzeige, wenn die Cookies abgeschaltet sind.

Grüße Uli!

  1. Guten Abend.

    Wenn im Browser nun die Cookies gesperrt sind, erscheint folgende Meldung:
    Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web67/html/index.php:3) in /srv/www/htdocs/web67/html/index.php on line 7

    Ich glaube eher, dass dein Skript nicht am Anfang der Datei steht und deshalb der Header (wozu der Cookie gehört) schon gesendet wurde.
    Du solltest den PHP-Bereich _ganz an den Anfang des Dokumentes setzen und vor dem Senden des Cookies nichts ausgeben oder die Ausgaben zurückhalten.

    Hat jemand eine Idee, wie man das eleganter machen kann. Ich dachte vielleicht eine Textanzeige, wenn die Cookies abgeschaltet sind.

    Ob der Cookie gesetzt ist kannst du nicht sofort prüfen.
    Mir ist auch keine Funktion bekannt, mit der man prüfen kann, ob Cookies erlaubt sind.
    Du kannst aber den User vorher darauf hinweisen oder, wenn kein Cookie gesetzt ist, auf eine andere Seite weiterleiten, auf der er darauf hingewiesen wird.

    MfG _Siro.

    1. Hallo Siro,

      erstmal vielen Dank,habe es an den Anfang gesetzt > jetzt erscheint keine Fehlermeldung mehr.

      Wie erkenne ich es das kei Cookie gesetzt wurde, bzw. wenn er nicht gesetzt wird wie leite ich dann weiter?

      Grüße! Uli

      1. Hallo.

        Nach dem der User auf der Startseite den Testcookie bekommen und seine Daten eingegeben hat, prüfst du auf der nächsten Seite nochmal, ob der Cookie gesetzt ist.
        Wenn er jetzt immer noch keinen drauf hat, wird er Cookies wohl ausgeschaltet haben.

        MfG _Siro.

  2. Halihallo Uli

    Wenn im Browser nun die Cookies gesperrt sind, erscheint folgende Meldung:

    Falsch. Das hat eine andere Ursache. Welche genau dies ist und die
    Lösungsansätze dies zu lösen findest du über die Suche nach genau
    dieser Fehlermeldung im </archiv/> bzw.
    http://selfsuche.teamone.de/

    Woher soll PHP wissen, ob Cookie aktiviert oder deaktiviert sind? -
    Das entscheidet und weiss einzig und allein der Client.

    if(!isset($HTTP_COOKIE_VARS['c_lastvisit'])) {

    Du möchtest besser $_COOKIE verwenden.
    http://www.php.net/manual/de/reserved.variables.php#reserved.variables.cookies
    $HTTP_COOKIE_VARS ist veraltet und sollte durch $_COOKIE ersetzt
    werden.

    setcookie("c_lastvisit",time(),time()+31536000,"/",$GLOBALS['SERVER_NAME'],0);
    }

    Der Cookie lebt IMHO zu lange, würde ein Session-Cookie nicht
    genügen?

    Hat jemand eine Idee, wie man das eleganter machen kann. Ich dachte vielleicht eine Textanzeige, wenn die Cookies abgeschaltet sind.

    Es ist unmöglich zu wissen, ob Cookie-Behandlung aktiviert oder
    deaktiviert ist.

    Viele Grüsse

    Philipp

    --
    M$: Patches - don't.