Cookie Wert -1 rechnen

  • Hallo,
    ich versuche grad für ein Loginsystem die Anzahl der Versuche zu
    begrenzen. Bisher sollen jedoch nur die Texte als Mittel zum Zweck
    dienen.
    Die MySQL Sachen können ignoriert werden die funktionieren ;)

    -----> index.php

    PHP
    <? session_start(); if (!isset ($_COOKIE['try'])) {    setcookie("try", 3, time()+60*3); } ?>

    -----> login.php

    Es wird jedesmal nach einem falschen Versuch übrige Versuche 1 ausgegeben und
    daran ändert sich auch nichts mehr. Nehme ich den Wert der Cookies falsch -1 ?
    Danke

    Alles auf einen Blick
    http://paste2.org/p/158907

  • Teste und staune:


    Du wirst feststellen, dass dieses Script nicht das macht, was du erwartest. Es stellt sich die Frage, wie verändert man einen Cookie-Wert richtig. ;)

    Und wozu du session_start im Script hast, muss man nicht verstehen.

  • Hallo,
    ich habe mal einige Tests mit deinem Script durchgeführt, konnte aber
    noch keine Lösung finden.

    Ich denke mal die einzige Möglichkeit bleibt, das gleiche Cookie
    mit setcookie einem neuen Wert zuzuweisen, jedoch bekam ich
    dabei eben Headerfehler, welche ich zwar verstehe aber keine andere
    Anordnung von setcookie mit dem Variablenwert dann kenne.

  • Setze erst den Keks und mache dann die Ausgabe und Bingo, schon funktioniert es.

  • Ich denke mal ich habe nicht ganz verstanden wie du das meinst,
    jedenfalls so geht es nicht:

  • Nee, nee, nee, manchmal könnte ich in die Tischplatte beißen! :(

    PHP
    if (! isset($_COOKIE['keks']))


    Richtig!

    PHP
    setcookie("keks", 3, time()+3600);


    Richtig!

    PHP
    if (! isset($_COOKIE['keks']))


    Aus der Doku:

    Zitat


    setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor jeglicher Ausgabe Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet, dass Sie diese Funktion aufrufen müssen, bevor Sie eine Ausgabe, dazu zählen auch <html>- oder <head>-Tags sowie jede Art von Whitespaces, übermitteln.
    Sind die Cookies einmal gesetzt, können Sie beim nächsten Seitenaufruf anhand der $_COOKIE oder $HTTP_COOKIE_VARS Arrays auf diese zugreifen. Beachten Sie, dass die Superglobals wie $_COOKIE seit PHP 4.1.0 verfügbar sind. Die Cookie-Werte stehen auch in $_REQUEST.


    Macht es also Sinn, an dieser Stelle mit isset zu arbeiten???

    PHP
    setcookie("keks", $keks, time()+3600);


    Welchen Wert hat hier $keks??? Nada, nix, null!!! Du musst doch erst den Keks auslesen, den Wert verändern und dann wieder rausschreiben!

    Das kann doch alles nicht so schwer sein! Doku richtig lesen und auch mal logisch denken!