Session... doppeltes Login???

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

  • Session... doppeltes Login???

    Hallo,

    ich versuche gerade mit php und Session_start ein benutzerlogin zu
    verwirklichen. Eigentlich klappt alles ganz gut, ABER
    ich logge mich ein auf einer seite, dann komme ich auf das "login.php"-script und dort ist die Seite erstmal weiß, ich komme nicht weiter. erst wenn ich wieder zurück gehe und mich nochmals einlogge
    funktioniert alles reibungslos.

    Ich vermute zwar, das irgendwo zweimal session_start aufgerufen wird, aber das habe ich schon überprüft.
    Vielleicht liegt es an etwas anderem?

    die user, passwörter, und benutzerseiten habe ich in mysql drin.

    weiß jemand rat? ich bin eigentlich totaler anfänger in php

  • #2
    Ohne Quellcode ist das bissl schwer auszumachen, findeste nicht?

    Kommentar


    • #3
      jo....ich versuchs mal klarzustellen:

      das erste script beinhaltet die FORM und sonst keine relevanten daten dafür:
      ----------------------------------------------------------------------------------

      <form style="width: 308px;" action="test/login.php" method="post">
      <p>Name: &nbsp; &nbsp; &nbsp;
      <input name="name" size="20" type="text">
      </p>
      <p> Kennwort:
      <input name="pwd" size="20" type="password">
      </p>
      <p>
      <input value="Login" type="submit">
      </p>
      </form></td>

      ----------------------------------------------------
      das login.PHP:
      PHP-Code:
      <?php
      // Session starten
      session_start ();

      // Datenbankverbindung aufbauen
      $connectionid mysql_connect ("localhost""pegasusgt""frucht");
      if (!
      mysql_select_db ("pegasusgt"$connectionid))
      {
        die (
      "Keine Verbindung zur Datenbank");
      }

      $sql "SELECT ".
          
      "User, Passwort, Userseite ".
        
      "FROM ".
          
      "benutzerdaten ".
        
      "WHERE ".
          
      "(User     = '".$_REQUEST["name"]."') AND ".
          
      "(Passwort = '".$_REQUEST["pwd"]."')";
               
      $result mysql_query ($sql) or die("Datenbankabfrage ist fehlgeschlagen!") ;

      if (
      mysql_num_rows ($result) > 0)
      {
        
      // Benutzerdaten in ein Array auslesen.
        
      $data mysql_fetch_array ($result);

        
      // Sessionvariablen erstellen und registrieren
        
      $_SESSION["user_id"] = $data["User"];
        
      $_SESSION["user_userseite"] = $data["Userseite"];
        
        
      header ("Location: " .$user_userseite );
        
      }
      else
      {
        
      header ("Location: formular.php?fehler=1");
      }
      ?>

      ---------------------------------------------------

      muss vielleicht session_start vor der FORM erfolgen?
      Zuletzt geändert von pegasus; 05.10.2005, 08:54.

      Kommentar


      • #4
        Wer lesen kann ist klar im vorteil. Schau mal hier.


        edit:
        Der Sicherheit halber besser:

        PHP-Code:
        ... 
        Passwort like '".$_REQUEST["pwd"]."' 
        ... 
        PHP-Code:
        ... 
        Passwort '".$_REQUEST["pwd"] ."'
        ... 
        Und das hier mal durchlesen http://de.wikipedia.org/wiki/SQL-Injection
        Zuletzt geändert von LukasS; 05.10.2005, 08:33.

        Kommentar


        • #5
          also erstmal um das sicherer zu machen statt dem


          PHP-Code:
          LIKE 
          ein
          PHP-Code:

          ???
          Zuletzt geändert von pegasus; 05.10.2005, 08:45.

          Kommentar


          • #6
            Ja und editiere entlich die php tags in den zweiten Beitrag.

            Kommentar


            • #7

              Ja und editiere en[COLOR=crimson]d[/COLOR]lich die php tags in de[COLOR=crimson]m[/COLOR] zweiten Beitrag.


              ganze 50 Beiträge und mault schon rum wie ein großer.

              Kommentar


              • #8
                ok....sorry komme mit der bedienung noch nicht ganz klar bisher....

                deswegen frage ich ja hier nach..kein grund so ungeduldig zu werden.

                hilfe wäre mir lieber!

                Kommentar


                • #9
                  - nutze absolute URLs bei den Location-headern, die sind zwingend vorgeschrieben
                  - übergebe die Session-ID im URL bei der Weiterleitung; ich denke, den von session_start() ausgelösten cookie wird der Client beim anfordern der redirect-Seite noch nicht wieder mitschicken.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    oh.....nicht so schnell... das hab ich nicht ganz verstanden..bzw weiß nicht genau was du mir sagen willst.

                    absolute URLs? wo denn? welche zeile meinst du denn?

                    sinn der sache ist ganz unten bei "Location"...das jeder user
                    auf seine eigene "userseite" kommt. daher ist dort eine Variable.
                    soll ich da was ergänzen?


                    wie übergebe ich die session ID?

                    Kommentar


                    • #11
                      Original geschrieben von pegasus
                      absolute URLs? wo denn? welche zeile meinst du denn?
                      Dort, wo du header('Location: ...') verwnedest.
                      wie übergebe ich die session ID?
                      RTFM, das steht im Manual m.E. ausführlich genug drin.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        danke für den Hinweis,
                        ich hab das manual gelesen für session id..werde aber nicht ganz schlau draus. muss ich denn in dem script mit der Form etwas übergeben, oder liege ich da falsch?

                        also genau in der Zeile:
                        <form style="width: 308px;" action="test/login.php" method="post">

                        ich habe erstmal verstanden das es keinen unterschied macht, wie oft ich session_start() aufrufe, weil eigentlich müsste er ja die session wieder aufnehmen bei dem nächsten script. Warum übernimmt er es dann nicht? und wie kann ich das genau prüfen?

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          ich denke, den von session_start() ausgelösten cookie wird der Client beim anfordern der redirect-Seite noch nicht wieder mitschicken. [/B]
                          und wie kann ich den client dazu überreden diesen cookie trotzdem mitzuschicken?

                          Kommentar


                          • #14
                            Original geschrieben von pegasus
                            ich habe erstmal verstanden das es keinen unterschied macht, wie oft ich session_start() aufrufe, weil eigentlich müsste er ja die session wieder aufnehmen bei dem nächsten script. Warum übernimmt er es dann nicht?
                            session_start rufst du pro Script ein mal auf.
                            Wenn die Session-ID übergeben wurde, wird die bestehende Session wieder aufgenommen - ansonsten eine neue gestartet.

                            Und wo du die Session-ID mitgeben solltest, wurde dir ja schon gesagt.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              wenn ich dich jetzt richtig verstanden habe mit deinen kurzen
                              anweisungen, dann muss ich das innerhalb der Form in dem
                              ersten script machen?

                              also hier?
                              <form style="width: 308px;" action="test/login.php" method="post">

                              das ist aber doch kein PHP, wie übergebe ich denn da die
                              session_id?

                              das problem ist doch, das das Loginscript nicht ordentlich das findet,
                              was ich einmal eingegeben habe, obwohl logisch alles richtig zu sein scheint.....denn sonst würde ich ja nicht beim loginscript einfach stehenbleiben.

                              sorry, wenn du meinst das ich erst das manual lesen soll, aber manchmal braucht man eben trotz manual hilfe und keinen hinweis auf
                              RTFM....

                              Kommentar

                              Lädt...
                              X