Ankündigung

Einklappen
Keine Ankündigung bisher.

merkwürdiges verhalten von $_session

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • merkwürdiges verhalten von $_session

    Hallo,ich habe eine datei,die nur ausgeführt werden darf wenn eine bestimmte
    $_SESSION variable gesetzt wurde:
    PHP-Code:
    if(isset($_SESSION['captcha_passed']))
    {
        if(
    $_SESSION['captcha_passed']==true)
        {
            echo 
    "<h1>Anmeldung war erfolgreich!!!</h1>";
           
    $_SESSION['captcha_passed']=false;
        }
    }
    else
    {
     echo 
    "nein";

    Die datei soll danach aber nicht nochmal über die uri aufgerufen werden können.Dies wollte ich durch
    PHP-Code:
    $_SESSION['captcha_pass']=false
    erreichen.Leider wird dann eine leere datei ausgegeben.weil anscheinend die zuweisung ohne beachtung der if anweisung vorher ausgeführt wird.

    was kann man da machen?

    Zusatzinfo: (die vll weiterhilft oder auch nur verwirrt )
    wenn ich session_start(); einsetzte,heißt es dass diese anweisung ignoriert wurde,weil eine session bereits im gang ist.liegt vermutlich daran,dass die datei selbst auch nicht aufgerufen wird,sondern nur über die index datei,welche allerdings bis jetzt auch noch kein session_start() enthält.
    diese seite(die oben beschriebene) wird also aufgerufen über index.php?erfolgreicheanmeldung=true
    soll dabei aber nicht direkt aufgerufen werden,sondern nur wenn das cptcha erfolgreich eingetippt wurde.wenn es erfolgreich eingeben wurde kommt man auf eine
    seite,welche die $_SESSION['captcha_passed'] auf true setzt und auf die oben beschriebene datei weiterleitet.

  • #2
    Was soll denn passieren, wenn die Variable gesetzt ist aber nicht true ist? Aktuell steht dazu ja nichts im Quelltext.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      eigentlich reicht es mir schon wenn sie gesetzt wird,dass innere if ist eigentlich nur ein test.
      Bei folgendem code wird ein "hmm" ausgegben
      PHP-Code:
      if(isset($_SESSION['captcha_pass']))
      {
          if(
      $_SESSION['captcha_pass'])==true)
          {
              echo 
      "<h1>Anmeldung war erfolgreich!!!</h1>";
            
      $_SESSION['captcha_pass']=false;
          }
         else
              {
               echo 
      "hmm";
              }
      }
      else
      {
       echo 
      "nein";

      das bedeutet sie ist ja defenitiv vorhanden,weil kein "nein",sondern ein "hmm" ausgegeben wird.

      Kommentar


      • #4
        Frage ist unverständlich. Versuchs mit Nachdenken vor dem Schreiben.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          PHP-Code:
          $_SESSION['captcha_pass']=false
          Natürlich ist sie danach vorhanden?!
          [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

          Kommentar


          • #6
            ja ist sie. aber sie ist dann auf false.ohne dass dieser if zweig aufgerufen würde.
            captcha_validiate.php
            PHP-Code:
            if(captcha==true)
            {
            $_SESSION['captcha_pass']=true;
            header('location:erfolgreich.php');

            erfolgreich.php
            PHP-Code:
             if($_SESSION['captcha_pass'])==true)
                {
                   echo 
            "captcha_pass ist true";
                  
            $_SESSION['captcha_pass']=false;
                }
               else
                    {
                     echo 
            "captcha_pass ist false";
                    } 
            ergebnis: captcha_pass ist false
            zu erwartendes ergebnis:captcha_pass ist true

            Kommentar


            • #7
              als würde er erst die anweisung $_SESSION['captcha_pass']=false; ausführen und dann erst die if-anweisung

              Kommentar


              • #8
                was ist denn daran unverständlich?

                Kommentar


                • #9
                  ich versuch nochmal:

                  Das Problem ist einfach nur,dass in der unter #6 gezeigten erfolgreich.php "$_SESSION['captcha_pass']=false;"
                  als erstes ausgeführt wird,sodass es wenn dann die if anweisung kommt,der else zweig ausgeführt wird.
                  Mit diesem Verhalten habe ich aber nicht gerechnet,deswegen meine Frage:was kann das nur sein?

                  die vielleicht zum teil verwirrenden zusatzinformationen, sollten nur dazu dienen anhaltspunkte zu liefern,warum
                  es zu diesem verhalten kommen könnte. mehr war das doch garnicht?!

                  Kommentar


                  • #10
                    ok vielleicht immer noch zu umständlich.vielleicht so:
                    PHP-Code:
                    if(isset($_SESSION['captcha_pass']))
                    {
                      echo 
                    "erfolgreiche anmeldung.";
                    }
                    else
                    {echo 
                    "sie dürfen dieses script so nicht aufrufen!!"//wird so niemals jemand lesen ;)  

                    diese script gibt aus: "erfolgreiche anmeldung"

                    PHP-Code:
                    if(isset($_SESSION['captcha_pass']))
                    {
                      echo 
                    "erfolgreiche anmeldung.";
                      unset(
                    $_SESSION['captcha_pass']);
                    }
                    else
                    {echo 
                    "sie dürfen dieses script so nicht aufrufen!!"//wird so niemals jemand lesen ;)  

                    dieses script gibt aus "sie dürfen dieses script so nicht aufrufen!!";
                    bei gleichem anwendungsfall!

                    Kommentar


                    • #11
                      Es war ein Fehler in meinem MVC-System,welche die Templates ein zweites mal includiert hat,ohne dass dies ausgegeben würde.

                      Kommentar


                      • #12
                        was ist denn daran unverständlich?
                        Mit Deinem Telegrammstil und Deiner Frage-Gegenfrage-Taktik wirst Du immer wieder auf der Grünen Wiese landen.

                        Was angesichts der üblichen "Hat sich erledigt, Fehler lag woanders"-Nummer letzlich auch egal ist.
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar

                        Lädt...
                        X