Session Handling

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Last edited by derHund; 15-02-2004, 14:52.
    Die Zeit hat ihre Kinder längst gefressen

    Comment


    • #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.
      Last edited by doomsday; 15-02-2004, 14:59.
      Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

      Albert Einstein

      Comment


      • #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.

        Comment


        • #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.

          Comment


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

            Comment


            • #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

              Comment


              • #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

                Comment


                • #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

                  Comment


                  • #10
                    hmm,

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

                    Comment


                    • #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

                      Comment


                      • #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

                        Comment


                        • #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

                          Comment


                          • #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");

                            Last edited by doomsday; 15-02-2004, 18:11.
                            Technischer Fortschritt ist wie eine Axt in den Händen eines pathologischen Kriminellen.

                            Albert Einstein

                            Comment


                            • #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

                              Comment

                              Working...
                              X