Sessions zum x-ten...

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

  • Sessions zum x-ten...

    Hi Leute.

    Ich habe jetzt das Tutorial für den Login-/Memberbereich verwendet und fand es echt gut - Kompliment an JoelH.

    Jetzt hab ich nur folgendes Problem:
    Nachdem ich den User vom Login-Bereich per header (Location) wieder an die Hauptseite schicke, bekommt er durch das dort vorhandene session_start() eine neue SessionID und das ist nicht die, in der die registrierten Variablen des Logins sind.

    Ich hatte gelesen, dass auf jeder Seite ein session_start() stehen muss, damit die registrierten Variablen verfügbar sind. Allerdings macht mir wohl genau das die Sache kaputt.

    Kann mir jemand sagen, was ich falsch mache?

  • #2
    Dann musst du eine If schleife programmieren :

    If (!$sessionid) {
    session_start()
    }

    Oder so ähnlich .

    Kommentar


    • #3
      Eigentlich muss die Session auch nur einmal gestartet werden - die globale Variable session_id musste eigentlich solange erhalten bleiben , bis entweder timeout eingreift oder das browserfenster geschlossen wird .

      du musst wohl in deinem Login Script etwas ändern

      hast du action="login.php?sid<?echo session_id() ?>";
      geschrieben , sodass die sessionvariable übergeben wird ?

      Kommentar


      • #4
        Also - da das irgendwie nicht geholfen hat, hier meine Codeschnipsel:

        Die Abfrage der Login-Daten (mit include in main.php eingebettet):
        Code:
        <form action="verify_login.php" method="post">
          <table cellpadding=5 cellspacing=0 border=0>
            <tr>
              <td>Username: </td>
              <td align=right><input type="text" name="username" size="20" maxlength="20" colspan="20"></td>
            </tr>
            <tr>
              <td>Passwort: </td>
              <td align=right><input type="password" name="passwort" size="20" maxlength="20" colspan="20"></td>
            </tr>
            <tr>
              <td></td>
              <td align=right><input type="submit" name="absenden" value="Absenden"></td>
              </tr>
          </table>
        </form>
        Die Verarbeitung der Login-Daten (verify_login.php):
        PHP-Code:
        <?php
          session_start
        ();

          
        $dbhost "localhost";
          
        $dbname "cocktail";

          if ((!isset(
        $username)) OR (!isset($passwort)))
          {
            die (
        "Sorry, aber ohne Name und Passwort gibt es kein Login!");
          }

          
        $db = @mysql_connect($dbhost);
          if (!
        $db)
          {
            die (
        "Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen!");
          }

          
        mysql_select_db($dbname,$db);

          
        $sqlab  "SELECT userpw,userlevel FROM user";
          
        $sqlab .= " WHERE username = '".$username."'";

          
        $res    mysql_query($sqlab,$db);

          
        $eintrag mysql_fetch_array($res,MYSQL_ASSOC);

          
        mysql_close($db);

          if (!
        $eintrag)
          {
            die (
        "Dieser Benutzer ist leider nicht vorhanden! Bitte registrieren Sie sich zuerst.");
          }

          if (
        $eintrag["userpw"] <> $passwort)
          {
            die (
        "Das eingegebene Passwort ist falsch. ");
          }

          
        $userlevel $eintrag["userlevel"];

          
        session_register("username");
          
        session_register("userlevel");

          
        header ("Location: main.php?section=home");
        ?>
        Und main.php hatte ich zuerst mit <?php session_start(); ?> anfangen lassen - dabei entstand immer ne neue sessionid, die nicht die Login-daten enthielt. Und ohne das session_start() gab es gar nix mehr, was main.php wusste...

        Kommentar


        • #5
          Du könntest beim weiterleiten mit header() die session id doch auch in der URL mitübergeben:
          header("Location: main.php?section=home&sid=".session_id());

          Hoffentlich hab' ich jetzt das keinen Müll erzählt
          "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

          Kommentar


          • #6
            Du musst die Session Id immer mit übergeben !

            Beim Start von main.php musst du auf jeden fall erstmal eine
            If schleife einbauen die sollte so aussehen :
            PHP-Code:
            If (!$sid) {
                
            session_start();
                
            $sessionid session_id();
               
            Header ("Location: ?sid=$sessionid");
                exit;

            Dann musst du in deinem Formular noch was ändern :
            bei action <form action="verify_login.php[COLOR=red]?sid=<?echo $sessionid?>[/COLOR]
            und an allen links die du setzt.
            Zuletzt geändert von ; 07.04.2002, 16:09.

            Kommentar


            • #7
              Hab jetzt eure Tips beherzigt und in verify_login.php:
              PHP-Code:
              $sid session_id();
              header ("Location: main.php?section=home&PHPSESSID=$sid"); 
              Dann nimmt PHP auch bei einem session_start() die alte ID. ~freu

              Kommentar

              Lädt...
              X