Problem mit Sessions

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

  • Problem mit Sessions

    Ich hab da irgendwie ein Problem mit meinen Sessions. Hab auch erst angefangen mich mit diesem doch sehr eleganten Werkzeug vertraut zu machen.

    Was ich machen will:

    Auf meiner Site sollen sich nur Registrierte User bewegen können.

    Also steht in der index.php

    PHP-Code:
    <?php
    session_start
    ();
    include 
    'conform_start.php';
    if(
    verify())
    {
    und dann in der conform_start.php

    PHP-Code:
    <?php

    function write_log_in($text)
      {
        echo 
    "<br><br><br>";
        echo 
    "<p align='center'>$text";
        echo 
    "<br><br><br>";

        echo 
    "<table align='center'>";
        echo 
    "<form method='post' action=''>";
        echo 
    "<tr><td>User</td><td><input type=text name='user_name'></td></tr>";
        echo 
    "<tr><td>Password</td><td><input type=password name='password'></td></tr>";
        echo 
    "<tr><td colspan=2 align='center'><input name=Submit type=submit value=Login></td></tr>";
        echo 
    "</form>";
        echo 
    "</table>";
      }
    function 
    verify()
    {
      if(
    $_SESSION['login'] == 'true') return true;

        
    $user_name $_POST["user_name"];
        
    $password $_POST["password"];

        include 
    'sql_open.php';
        
    $query  "SELECT * FROM users Where username='".$user_name."'";
        
    $result mysql_query($query);

        if(
    $row mysql_fetch_assoc($result))
        {
          
    $pass md5($password);
          if(
    $pass == $row[password])
          {
            
    $_SESSION['login'] = 'true';
            
    $_SESSION['user'] = $row[userid];
            return 
    true;
          }
          else
          {
            
    $text 'Benutzername und/oder Passwort falsch';
            
    write_log_in($text);
            return 
    false;
          }
        }
        else
        {
          
    $text 'Diese Seite ist nicht für jeden.';
          
    write_log_in($text);
        }
      }
    ?>
    Das Funktioniert erstmal soweit. Wenn ich die Seite Aufrufe, dann steht sofort das kleine Anmeldefenster da und wenn die Daten richtig sind, dann sehe ich die erste Seite.

    Wenn ich jetzt in einen anderen Bereich wechseln möchte, dann kommt allerdings wieder das loginscript.

    Die Seiten wechsele ich durch einen normalen Link:

    PHP-Code:
    site.php?section=eingabe 
    Bitte helft mir.
    Wenn noch weiterer Code gebraucht wird, dann sagt bescheid.

    MkG
    Daniel Becker

  • #2
    Hast du bei den anderen Seiten am Anfang auch session_start(); eingefügt???
    Zuletzt geändert von Kisi; 08.09.2006, 09:27.

    Kommentar


    • #3
      Und zum Link..
      Die Session wird nur mit rangehängt wenn du entweder keine Cookies akzeptierst oder es expliziet im Script angibst..
      Siehe dazu Session unterpunkt "session.use_trans_sid"

      MfG

      Kommentar


      • #4
        Nein, weil ich damit mal Probleme hatte.
        Also der Rest von meiner site.php (kann auch als index.php gesehen werden, weil die index.html direkt die site.php in ein Frame lädt) sieht so aus:

        PHP-Code:
        <?php
        session_start
        ();
        include 
        'conform_start.php';
        if(
        verify())
        {
          switch(
        $_GET['logout'])
          {
            case 
        '1':
              
        session_destroy();
              
        header("Location: [url]http://www.spiodatengh.de/[/url]");
              break;
          }
          echo 
        "<html>\n";
          echo 
        "    <head>\n";
          echo 
        "        <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n";
          echo 
        "    </head>\n";
          echo 
        "    <body background='background.gif' text='#00E0FF'>\n";
          echo 
        "        <div id=\"root\">\n";
          echo 
        "            <div id=\"banner\">\n";
          include 
        "logout.php";
          echo 
        "            </div>\n";
          echo 
        "            <div id=\"links\">\n";
          include 
        "menu.php";
          echo 
        "            </div>\n";
          echo 
        "            <div id=\"mitte\">\n";
          include 
        "inhalt.php";
          echo 
        "            </div>\n";
          echo 
        "            <br style=\"clear:both;\" />\n";
          echo 
        "       </div>\n";
          echo 
        "    </body>\n";
          echo 
        "</html>\n";
        }
        ?>

        Kommentar


        • #5
          Original geschrieben von DaBe1812
          Nein, weil ich damit mal Probleme hatte.
          Ohne hast du auf jeden Fall ein Problem - wiel dann die Session nicht wieder aufgenommen wird.


          Und falls das Problem was mit "headers already send" zu tun gehabt haben sollte - RTFM & Suchen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Also ich hab bis jetzt noch keine Fehlermeldung bekommen (außer sie hatte was mit vergessenem Semikolon zu tun)

            Was mich halt auch wundert, ich hab mir mal zum Spaß auf ner Testseite einfach nur die session_id() ausgeben lassen, und bei jedem aktualisieren steht da ne andere Zahl.

            Also soll ich jetzt auf jede Unterpage am Anfang session_start() schreiben?

            Kommentar


            • #7
              Ja überall muss session_start() sein!

              Also ich hab in meinen Projekten immer eine global.php
              Dort wird unter anderem die Verbindung mit der Datenbank hergestellt.
              Und dort steht auch sowas wie session_start() drin

              Dann einfach nur in den anderen dateien "require('global.php');" und fertig ist die sache, dann hab ichs überall mit drin!

              Kommentar


              • #8
                Ja, das musst du sogar!

                Kommentar


                • #9
                  Was mach ich mit require()?

                  Kommentar


                  • #10
                    www.php.net/require

                    Nich so faul sein..

                    Kommentar


                    • #11
                      Also, ich hab jetzt überall session_start oben drin. Wenn ich über mein Menu die Seite wechsle, dann kommt der Loginbildschirm.

                      Hab auchmal probehalber die Sache mit TransID versucht, also hab ich im Menu überall mal

                      PHP-Code:
                      include 'gesamt.php?'.strip_tags(SID); 
                      eingefügt.

                      Dann konnt ich zwar die Seiten wechseln, aber der Inhalt der Seite wurde nichtmehr angezeigt.

                      Kommentar


                      • #12
                        hast du dir mal die doku zu der funktion durchgelesen? wohl eher nicht!

                        Kommentar


                        • #13
                          Doch hab ich, aber ich hab Sie wohl falsch oder garnicht verstanden. Außerdem müßtest du ja allein an meinem Verwenden der Funktion merken, daß ich deinen Komentar gelesen hatte und es wenigstens probiert hab.

                          Eine nette Hilfestellung, was ich falsch gemacht hab wäre vielleicht auch ganz hilfreich gewesen.

                          Kommentar


                          • #14
                            Man übergibt keine Variabeln per include / require..
                            Das geht überhaupt nicht!

                            Steht include im aufrufenden Skript innerhalb einer Funktion, verhält sich der gesamte Code der aufgerufenen Datei genau so, als ob Sie diesen Code innerhalb dieser Funktion definiert hätten. Aus diesem Grund hat dieser Code den Geltungsbereich der Variablen dieser Funktion.
                            Zur veranschaulichung

                            foo1.php
                            PHP-Code:
                            <?php
                            $myTestVar 
                            'Hallo Welt;';
                            include(
                            'foo2.php');
                            echo 
                            $myTestVar;
                            echo 
                            $myTestVar2;
                            ?>
                            foo2.php
                            PHP-Code:
                            <?php
                            $myTestVar2 
                            $myTestVar;
                            $myTestVar 'doll so ein include';
                            ?>
                            So die ausgabe post ich nun mal nicht, kannst ja selbst aufn webserver haun

                            Kommentar


                            • #15
                              Okay, meine Seiten Wechsle ich ja auch nicht über include, sondern über nen ganz normalen <a> Tag.

                              Die Zeile, die ich eben gepostet habe war aus der inhalt.php (Main Frame). Also soll ich die SID bei den Links im Menu angeben und dann greift session_start() die übergebene SID wieder auf?

                              Hab ich jetzt kapiert?

                              Kommentar

                              Lädt...
                              X