Daniel Muskatewitz: Eine Frage zu Session (Rechnen mit Sessions)

Hallo und danke das ihr euch das durchliest ^^

Erklärung:

Ich bin eine kleine Com am basteln... dort werden manchmal aktionen ausgeführt... die zum beispiel über ein GET gestartet werden (LOGIN oder so)...

nur wollte ich eigentlich einen Schutz for F5 (oder vielleicht ZURÜCK Button) machen... für GB einträge und sowas ZB...

WAS WILL ICH MACHEN:

am anfang wird eine Session gesetzt z.b. mit dem wert "1".

wenn man nun einen link oder button anklickt wird in die url das GET pid z.B. angehängt mit dem wert 1.

dann wird das get mit der session verglichen...beide 1 = ok

sooo dann soll direkt danach aber die session um 1 erhöht werden...
und im link für die nächste seite steht dann auch 2 für GET...

wenn man den link klickt: sollte eigentlich wieder...session und get = 2 sein...und session danach für den nächsten Link auf 3 erhöht werden...

heißt...theoretisch...wenn mann F5 klickt erhöht sich nicht das GET aber die SESSION...somit wäre GET z.B 2 und SESSION 3...ERROR meldung...keine Aktion wird ausgeführt,..

für mich (noch niht solang in php drin ;-) ) eigentlich logisch...

geht aber nicht...da sich die Session immer um 3 erhört....somit ist die Get summe immer anders als die Session..

kann mir einer helfen??

hier mein beispiel Script:

echo "IDCHECK: TEST<BR><BR>";
 $getid = $_GET["gi"];
 if($getid == "" OR $getid == "new")
     {
  echo "x = aus<BR>";
  $newget = 1;
  echo "newget: $newget<BR>";
  $_SESSION['pid'] = 1;
  $id = $_SESSION['pid'];
  echo "Session $id<BR><BR>";
  echo "<a href="?gi=$newget">klick</a><BR><BR>";
  }
 else
     {
      echo "PIN ".$_SESSION['pid']." oder";
   $_SESSION['pid']++;
   $newget = $_SESSION['pid']++;
      echo "Session $newget<BR><BR>";
   echo "<a href="?gi=$newget">klick</a><BR><BR>";
   echo "ok<BR><BR>";
  }

danke im vorraus

mfg
Daniel

  1. Hi,

    für mich (noch niht solang in php drin ;-) ) eigentlich logisch...

    in HTTP bist Du vermutlich auch noch nicht so lange drin, denn andernfalls würde das ganze weit weniger logisch für Dich klingen. HTTP ist zustandslos, und der Versuch, eine Zustandsschicht einzubauen, kann sehr leicht zu Fehlern führen - beispielsweise indem Du postulierst, es gäbe einen linearen Ablauf. Schon wenn jemand einen Link mal in einem neuen Tab öffnet, kommt Dein Vorhaben durcheinander.

    geht aber nicht...

    Perfekt. Das gibt Dir die Gelegenheit, das Konzept über den Haufen zu werfen.

    kann mir einer helfen??

    Prüfe bei Aktionen, die nur einfach durchgeführt werden dürfen, anhand der *vorliegenden* Daten, ob sie bereits durchgeführt wurden.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. mich interessiert aber trozdem immernoch wieso die Session nicht nur um 1 erhöht wird ^^

      kann mir das einer sagen

      1. Hi,

        mich interessiert aber trozdem immernoch wieso die Session nicht nur um 1 erhöht wird ^^

        kann mir das einer sagen

        Wenn dein Script nicht das tut, was du erwartest - dann gleiche Wunsch und Wirklichkeit miteinander ab, sprich: Debugge.
        Mache Kontrollausgaben relevanter Werte.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  2. Hello,

    echo "IDCHECK: TEST<BR><BR>";
        $getid = $_GET["gi"];

    if($getid == "" OR $getid == "new")

    {
            echo "x = aus<BR>";
            $newget = 1;
            echo "newget: $newget<BR>";
            $_SESSION['pid'] = 1;
            $id = $_SESSION['pid'];
            echo "Session $id<BR><BR>";
            echo "<a href="?gi=$newget">klick</a><BR><BR>";
        }
        else
        {
            echo "PIN ".$_SESSION['pid']." oder";
            $_SESSION['pid']++;
            $newget = $_SESSION['pid']++;
            echo "Session $newget<BR><BR>";
            echo "<a href="?gi=$newget">klick</a><BR><BR>";
            echo "ok<BR><BR>";
        }

    Der Hauptfehler liegt wohl darin, dass die kontrollierte und die manipulierte Variable nicht übereinstimmen!

    Wenn Du $_SESSION['pid'] incrementieren willst, solltest Du auch vorher prüfen, ob es schon vorhanden ist!

    Liebe Grüße aus Ratzeburg im See

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de