Session Handling

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

  • Session Handling

    Ich habe ein Problem mit dem Session Handling, und zwar bekomme ich keinen Zugriff auf meine Session Variablen mehr.
    Ich bin jetzt schon 2 Tage am experimentieren.
    Daten sind in der Datenbank vorhanden, trotzdem sind die entsprechenden POST Variablen leer.

    Wäre dankbar für eine Idee was ich falsch gemacht habe.

    HTML Formular zum Login:
    PHP-Code:
    <form action="login.php" method="post" target="_top">
       <
    input type="text" name="username" size="25" maxlength="40"  />
       <
    input type="password" name="password" size="25" maxlength="25" />
       <
    input type="submit" name="login" class="mainoption" value="Login" />
    </
    form
    login.php
    PHP-Code:
    <?  
    session_start();
    include("common.php");    
    //echo $_POST['username'].':'.$_POST['password'];    
    if($_POST['username']!='' && $_POST['password']!=''){      
       $sql = 'SELECT uid,name,status,ally,count_login,imagebase,lang FROM ' .  
          USER_TABLE .' where name = "'.$_POST["username"].'" AND passwd = password("'.$_POST["password"].'") limit 1';
       //echo $sql;      
       //echo $session_id();      
       $result = $db->sql_query($sql)      
       $_SESSION["uid"] = $row['uid'];      
       $_SESSION["name"] = $row['name'];      
    ...
    Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

    Albert Einstein

  • #2
    Daten sind in der Datenbank vorhanden, trotzdem sind die entsprechenden POST Variablen leer.
    wie meinst du das? was funktioniert nicht?

    EDIT:

    wenn sich nen user falsch einloggt, solltest du kein query-ergebnis erhalten ... meinst du das?

    Zuletzt geändert von derHund; 15.02.2004, 14:52.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Wenn ich versuche im nachhinein auf die daten zuzugreifen sind sie leer.
      zB. beim überprüfen ob sie in der DatenBank vorhanden sind, sind beide Strings leer. Das Seltsame ist, das wenn ich den Kommentar in der Zeile mit session_id() entferne sind die richtigen Werte enthalten.

      Dadurch ist ein einloggen nicht möglich auch nicht für richtiges einloggen.
      Zuletzt geändert von doomsday; 15.02.2004, 14:59.
      Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

      Albert Einstein

      Kommentar


      • #4
        vorab: benutzt du auch überall session_start()?

        Wenn ich versuche im nachhinein auf die daten zuzugreifen sind sie leer.
        welche daten meinst du?

        es wäre net schlecht, wenn du dich mal etwas genauer ausdrücken würdest. dann müsste man nicht für jeden furz nachfragen.

        Kommentar


        • #5
          Das Seltsame ist, das wenn ich den Kommentar in der Zeile mit session_id() entferne sind die richtigen Werte enthalten.
          du meinst diese zeile:
          PHP-Code:
          //echo $session_id(); 
          lass den kommentar mal lieber drin, die zeile ist so falsch wies nur geht.

          Kommentar


          • #6
            PHP-Code:
            session_id(); 
            wäre da wohl angebrachter

            Kommentar


            • #7
              Nach dem Absenden des HTML-Formulars :
              $_POST['username'] enthällt ""
              $_POST['password'] enthällt ""

              entferne ich die Kommentarzeichen bei den Kommentaren bekomme ich die richtigen Werte in den Post-Variablen in der Zeile
              PHP-Code:
              //echo $_POST['username'].':'.$_POST['password']; 
              angezeigt(+SQL-Query), ansonsten aber eine weiße leere Seite.
              Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

              Albert Einstein

              Kommentar


              • #8
                hmm,

                entferne die zeile mit der session_id, entferne in den beiden anderen die kommentare, post den relevanten output, danke ....

                mal mal
                PHP-Code:
                print_r($_POST); 
                direkt, nachdem du die session startest...
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  habe mal beides probiert:
                  1. Quelltext
                  PHP-Code:
                  session_start();
                  print_r($_POST);
                  echo 
                  $_POST["username"].':'.$_POST["password"];
                           ...
                      echo 
                  $sql;
                      
                  // $session_id(); 
                  1. Ausgabe
                  PHP-Code:
                  Array ( ) : 
                  2. Quelltext
                  PHP-Code:
                  session_start();
                  print_r($_POST);
                  echo 
                  $_POST["username"].':'.$_POST["password"];
                           ...
                      echo 
                  $sql;         
                      
                  $session_id(); 
                  2. Ausgabe
                  PHP-Code:
                  Array ( [username] => doomsday [password] => tweety [login] => Login doomsdaypassword
                  SELECT uid
                  ,name,status,lang FROM user where name "doomsday" AND passwd password("password"limit 1 
                  Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

                  Albert Einstein

                  Kommentar


                  • #10
                    hmm,

                    wo ist das problem. geht doch wie gewünscht?
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Das Problem ist das ich durch das session_id() eine lediglich weiße Seite bekomme anstatt der Normalen.

                      Demzufolge habe ich 2 Möglichkeiten:
                      1. Ich rufe eine Funktion auf die es nicht gibt und bekomme meine Werte und sonst gar nichts.
                      2. Ich bekomme meine Seite wunderbar angezeigt und ohne Fehlermeldungen ( bis auf die wegen des Sessionhandlings), kann mich aber nicht anmelden.
                      Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

                      Albert Einstein

                      Kommentar


                      • #12
                        Habe grad einen Anhaltspunkt gefunden:
                        Im Session Verzeichnis sind 3 Session-Dateien vorhanden, nach einem Loginversuch.
                        Allerdings verschlißt sich mir das Verständnis Warum dies so ist.
                        Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

                        Albert Einstein

                        Kommentar


                        • #13
                          Das Problem ist das ich durch das session_id() eine lediglich weiße Seite bekomme anstatt der Normalen.
                          kann es sein, daß du beim ersten versuch einfach keine daten angeben hast? bzw. dasß formular garnicht abgesendet hast ...

                          ehrlich gesagt, verstehe ich dein problem immer noch nicht ...
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            Also nach dem 40. mal den Code anschauen den ich mal produziert habe konnte ich die Fehlerquelle ermitteln.
                            Kurz der Sinn des Ganzen

                            Aufruf der Login Seite->login.php
                            diese Datei überprüft die übergebenen POST Parameter und leitet über header() an eine andere Datei weiter(overview.php).

                            Auf der eigentlichen Inhaltsseite(overview.php) wird überprüft ob eine Session vorhanden ist, und wenn nicht an die login zurückgeschickt.

                            Das Problem ist bzw war das diese 2 Dateien Ping Pong gespielt haben.
                            In der 2. Datei kommen keine Werte in SESSION an, und so wird die login seite wieder aufgerufen.

                            Deshalb kam es auch vermutlich zu den 3 Session Dateien.

                            Allerdings weiß ich noch immer nicht wieso nach dem Login(alle Werte werden übergeben und Session wird angelegt) beim Aufruf der 2. Seite eine neue Session erstellt wird, mit unvollständigen (Daten SESSION ist leer) obwohl ich session_start() aufgerufen habe.
                            Habe die wesentlichen Zeilen nochmal angeführt.

                            login.php
                            PHP-Code:
                            session_start();
                            if(isset(
                            $_POST['username']) && isset($_POST['password'])){
                                
                            $sql 'SELECT uid,name,lang FROM ' USER_TABLE .
                                    
                            ' where name = "'.$_POST["username"].'" AND passwd = password("'.$_POST["password"].'") limit 1';
                                if(
                            $db->sql_numrows($result) == 1){
                                    
                                    
                            $row $db->sql_fetchrow($result); 
                                        
                            $_SESSION["uid"] = $row['uid'];
                                        
                            $_SESSION["name"] = $row['name'];
                                        
                            $_SESSION["lang"] = $row['lang'];
                                        
                            /*
                                        if (isset($_GET["redir"])&&$_GET["redir"]!=''){
                                            header("Location:".$_GET["redir"]);
                                        }else{        
                                            header("Location: overview.php");
                                        }
                                        */
                                        
                            header("Location:overview.php");
                                        ... 
                            overview.php
                            PHP-Code:
                            session_start();
                            ...
                            if(!isset(
                            $_SESSION['uid'])){
                                
                            header("Location:login.php?redir=overview.php");

                            Zuletzt geändert von doomsday; 15.02.2004, 18:11.
                            Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

                            Albert Einstein

                            Kommentar


                            • #15
                              wenn du keine cookies für die session akzeptierst, ist sie weg nachm header ... da sie ja nicht mehr in der url steht ...
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X