Login Problem

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

  • Login Problem

    Nabend zusammen,

    so wie es scheint, habe ich mal wieder ein Problem mit dem IE bzw. dem FF. Folgendes Login Script:

    PHP-Code:
        function login ($user$pwd) {
            
    $sql sprintf("Select `id`, `bname`, `captain`, `last_login`, `team` From `spieler` Where 
    `bname` = '%s' AND `pwd` = '%s'"
    mysql_real_escape_string($user), mysql_real_escape_string($pwd));
            
    $query mysql_query($sql);
                if (
    mysql_num_rows($query) == 1) {
                    
    $result mysql_fetch_assoc($query);
                    
    $_SESSION['login'] = true;
                    
    $_SESSION['bname'] = $result['bname'];
                    
    $_SESSION['team'] = $result['team'];
                    
    $_SESSION['spielerID'] = $result['id'];
                    
    $_SESSION['last_login'] = $result['last_login'];
                    
    $_SESSION['captain'] = $result['captain'];
                    
    $ip $_SERVER['REMOTE_ADDR'];
                    
    $sql sprintf("UPDATE `spieler` SET `last_login` = NOW( ), `ip` = '$ip' WHERE bname = '%s'"
    mysql_real_escape_string($user));
                    
    mysql_query($sql);
                    
    header("Location: privater Bereich");
                } else {
                    
    header("Location: wieder zur Login Maske");
                }
        } 
    und folgende login Überprüfung für jede seite:

    PHP-Code:
        function check_login () {
            if (
    $_SESSION['login'] !== true) {
                
    header("Location: wieder zur Login Maske");
            }
        } 
    So, das Problem ist,wenn ich mich beim IE einloggen will, komme ich direkt beim ersten Versuch durch. Beim FF allerdings lande ich nach erfolgreicher Eingabe wieder beim Fenster wo ich mich einloggen soll und erst beim zweiten Mal kann ich mich einloggen. Hat jemand eine Idee woran das liegen könnte?

    Gruß
    Zuletzt geändert von nevermind; 14.09.2008, 20:40.

  • #2
    Überprüfe bitte ob die Session-ID überall die gleiche ist. Falls das nicht der Fall ist, solltest du dafür sorgen, dass es so ist.

    Leider hast du alle relevanten Stellen in deinem Code zensiert, so dass du dir das posten auch gleich hättest sparen können.

    Kommentar


    • #3
      also wenn ich die id mit echo ausgebe, habe ich überall die selbe. Was meinst du mit Zensiert? Bis auf den Link steht hier alles

      Kommentar


      • #4
        Und eben genau dieser "Link" (du meinst hoffentlich den Header) überträgt die Session-ID (hoffentlich).

        Kannst gerne auch mal nen Link zum Login posten, dann gucke ich mal drauf.

        Kommentar


        • #5
          Das ist der Link zum Login:

          http://www.chicky-style.de/projects/tippspiel/index.php


          Das der für den geschützten Bereich:

          http://www.chicky-style.de/projects/...ex1.php?a=main


          Die Domain ist nen überbleibsel aus meiner jugend ^^. Bisken unpassen aber nunja

          Kommentar


          • #6
            Und WO übergibst du die SID? Den Hinweis habe ich dir doch bereits gegeben!

            Kommentar


            • #7
              ok, ich übergebe jetzt so : /index1.php?a=main&sid=5lmtlr89rffkmftkfubde8qqf0 die ID. Allerdings verstehe ich nicht wie mir das bei meinem Problem weiter helfen kann / soll. Beim zweiten login klappt es ja. Beim IE wie gesagt schon beim ersten Mal.
              Zuletzt geändert von nevermind; 15.09.2008, 17:03.

              Kommentar


              • #8
                Mehr tipps kann ich dir leider nicht geben. Dafür fehlen z.B. Testausgaben.

                Kommentar


                • #9
                  welche testausgaben würden denn helfen? Die Session ID ist vor und nach dem Login die Selbe wenn das schonmal hilft.

                  Mir ist grad aufgefallen, das nach dem ersten Anmeldeversuch die SID geändert wird. Beim zweiten erfolgreichen Login bleibt sie dann gleich.
                  Zuletzt geändert von nevermind; 15.09.2008, 18:24.

                  Kommentar


                  • #10
                    welche testausgaben würden denn helfen? Die Session ID ist vor und nach dem Login die Selbe wenn das schonmal hilft. Mir ist grad aufgefallen, das nach dem ersten Anmeldeversuch die SID geändert wird. Beim zweiten erfolgreichen Login bleibt sie dann gleich.
                    Ist schonmal ein ziemlicher Widerspruch.

                    Vielleicht postest du noch mal den aktuellen Code.

                    Und gehst mal auf die Suche, warum die Sid beim ersten mal nicht übergeben wird.

                    Kommentar


                    • #11
                      Widerspricht sich nen bisken weil ich das erst nicht gesehen habe bei der langen ID und dann vergessen hab Edit davor zu schreiben. Also hier mal der Code. Die Anmeldemaske sieht wie folgt aus:
                      PHP-Code:
                          <form method="POST" action="main.php?a=main&sid=<?echo session_id();?>">
                          <table align="center" border="0">
                              <tr>
                                  <td class="size">Benutzername:</td>
                                  <td><input type="text" name="bname"></td>
                              </tr>
                              <tr>
                                  <td class="size">Passwort:</td>
                                  <td><input type="password" name="pwd"></td>
                              </tr>
                              <tr>
                                  <td><input type="submit" value="Anmelden" name="anmelden"></td>
                                  <td><a href="reg.php" onclick="popup(this.href); return false">
                      <input name="reg" type="button" value="Registrieren"></a></td>
                              </tr>
                              <tr>
                                  <td class="size" colspan="2">
                      <a href="pw-recover.inc.php" onclick="popup(this.href); return false">Passwort vergessen?</a></td>
                              </tr>        
                          </table>
                          </form>
                      main.php
                      PHP-Code:
                      <?
                      session_start();
                      error_reporting(E_ALL);
                      ini_set('display_errors', TRUE);

                      include ('config.php');
                      include ('class/usermodell.class.php');

                      if (!(isset($_POST['bname']) AND (md5($_POST['pwd'])))) {
                          header("Location: [url]http://www.chicky-style.de/projects
                      /tippspiel/index.php[/url]");
                      } else {
                          $login = new userModell();
                          echo $login->login($_POST['bname'], md5($_POST['pwd']));
                      }
                      ?>
                      login steht ja bereits oben in meinem thread.

                      Irgendwie kommt es mir so vor, alsob in der main.php ein Fehler wäre bei der Überprüfung der variablen vom Post. Allerdings geben diese bei einem Echo genau das aus, was ich auch eintrage und sind damit ja auch gesetzt bzw. nicht leer o.ä..

                      Kommentar


                      • #12
                        login steht ja bereits oben in meinem thread.
                        Leider mit unvollständigen header angaben.

                        OT:
                        PHP-Code:
                        if (!(isset($_POST['bname']) AND (md5($_POST['pwd'])))) { 
                        ziemlich ungewöhnlich...

                        Und beim Posten bitte NICHT die "URLs automatisch umwandeln".

                        Kommentar


                        • #13
                          Ok, hier nochmal die Login funktion:

                          PHP-Code:
                              function login ($user$pwd) {
                                  
                          $sql sprintf("Select `id`, `bname`, `captain`, `last_login`, `team` From `spieler` 
                          Where `bname` = '%s' AND `pwd` = '%s'"

                          mysql_real_escape_string($user), mysql_real_escape_string($pwd));
                                  
                          $query mysql_query($sql);
                                      if (
                          mysql_num_rows($query) == 1) {
                                          
                          $result mysql_fetch_assoc($query);
                                          
                          $_SESSION['login'] = true;
                                          
                          $_SESSION['bname'] = $result['bname'];
                                          
                          $_SESSION['team'] = $result['team'];
                                          
                          $_SESSION['spielerID'] = $result['id'];
                                          
                          $_SESSION['last_login'] = $result['last_login'];
                                          
                          $_SESSION['captain'] = $result['captain'];
                                          
                          $ip $_SERVER['REMOTE_ADDR'];
                                          
                          $sql sprintf("UPDATE `spieler` SET `last_login` = NOW( ), `ip` = '$ip' WHERE bname = '%s'"
                          mysql_real_escape_string($user));
                                          
                          mysql_query($sql);
                                          
                          header("Location: http://www.chicky-style.de/projects/tippspiel/index1.php?a=main&sid=".session_id()."");
                                      } else {
                                          
                          header("Location: http://www.chicky-style.de/projects/tippspiel/index.php");
                                      }
                              } 
                          und hier die check_login (evtl. liegt auch da der Hund begraben)
                          PHP-Code:
                              function check_login () {
                                  if (
                          $_SESSION['login'] !== true) {
                                      
                          header("Location: http://www.chicky-style.de/projects/tippspiel/index.php");
                                  }
                              } 
                          Was du sagtest mit dem isset, wie kann ich das denn ab "seriösesten" lösen um sicher zugehen das auch der benutzer und das pw angegeben wurde. Wäre es mit !== "" besser oder so?
                          Zuletzt geändert von nevermind; 15.09.2008, 19:42.

                          Kommentar


                          • #14
                            Guck dir mal deinen header-Befehl an, der ist imo falsch.

                            --> header('Location: index.php');

                            edit: Ok, hast du schon geändert.

                            Code:
                            function check_login () {
                              if (!isset($_SESSION['login']) || $_SESSION['login'] !== true) {
                                header("Location: http://www.chicky-style.de/projects/tippspiel/index.php");
                              }
                            }
                            Zuletzt geändert von Boron; 15.09.2008, 19:49.

                            Kommentar


                            • #15


                              Der Header ist immer noch Falsch!

                              Und das habe ich auch schon vor ca. 10 Postings gesagt.

                              Kommentar

                              Lädt...
                              X