SESSION Frage

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

  • SESSION Frage

    Hallo,

    ich habe mal ein einfaches Session Skript gemacht.

    PHP-Code:
    <?

    include ("configs.php");

    if (!isset($_POST['name']) || !isset($_POST['pw'])) {
         echo '<form action="login2.php" method="POST">';
         echo 'Name: <input type="text" name="name"/><br/>';
         echo 'Passwort: <input type="text" name="pw"/><br/>';
         echo '<input type="submit" value="OK">';
         echo '</form>';
    }
    else {
         if ($_POST['name'] == "") {
         echo "Bitte geben Sie einen Namen ein!";
         }
         elseif ($_POST['pw'] == "") {
         echo "Bitte geben Sie ein Passwort ein!";
         }
         else {
         $connection=mysql_connect($server,$user,$pass) or die (mysql_error());
         mysql_select_db("nedias",$connection) or die (mysql_error());
         
         $user_pass = md5($_POST['pass']);
         $query = mysql_query("SELECT pass FROM user WHERE nick = '".$_POST['name']."'") or die('Auswählen fehlgeschlagen!');
         
         $ergebnis=mysql_fetch_array($query);
         
               if(md5($_POST['pw']) == $ergebnis['pass']) {
               $_SESSION['username'] = $_POST['name'];
               echo "Erfolgreich eingeloggt!";
               session_id();
               }
               else {
               echo "Ihr Passwort ist falsch!";
               }
         }
    }
    ?>
    Jetzt wird ja $_SESSION['username'] dann der Wert zugewiesen. Wie aber gebe ich jetzt die Session weiter, so dass ich in den folgenden Seiten einfach überprüfen kann mit:

    if(session_is_registered('username'))

    ob die SEssion gesetzt ist. Wie geht das?

    KageMurai

  • #2
    Du mußt lediglich vor dem ersten Zugriff auf eine Session-Variable ($_SESSION['varname']) die Funktion session_start() aufrufen. Im Manual steht genau beschrieben, wie der Transport der Session abläuft.

    Kommentar


    • #3
      Hallo,

      session_start() habe ich schon. Ich benutze PHP ja auch, um "Frames nachzubilden". Will heißen vorher wird die Datei navi.php eingebunden, die session_start() ganz oben beinhaltet. Das geht doch, oder?

      KageMurai

      Kommentar


      • #4
        Ja


        error_reporting(E_ALL);
        mal in die erste Zeile schreiben~

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Gut, danke. Dann habe ich noch eine letzte Frage:

          Das einloggen funktioniert jetzt. In einer Datei überprüfe ich das hiermit:

          if(session_is_registered('username'))

          Da sagt der auch richtig, dass ich eingeloggt bin und gibt mir den gesicherten Text. Wenn ich aber diesen Quellcode benutze, verweist der mich IMMER auf die Login Seite:

          if(!session_is_registered('username')) {
          header("location:index.php?page=login");
          die;
          }

          Warum? Kann das damit zusammenhängen, dass header nicht ganz oben im code steht, sondern davor ja noch die ganze Navi kommt?

          Danke!

          KageMurai

          Kommentar


          • #6
            Könnte daran liegen, dass session_is_registered() veraltet ist, siehe session_is_registered

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              session_is_registered() ist veraltet (steht auch im Manual)
              PHP-Code:
              if(isset($_SESSION['username']))
              //oder
              if(!isset($_SESSION['username'])) 
              wären zu bevorzugen.
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Sehr gut - funktioniert jetzt alles. Noch ne Frage. Ich will natürlich noch ein Logout Skript haben.

                Ich habe bisher die Funktion session_destroy() verwendet. Ist die jetzt auch veraltet, oder kann ich die noch vewenden?

                Danke!

                kageMurai

                Kommentar


                • #9
                  Auch veraltet ! Besser unset() verwenden
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Original geschrieben von jahlives
                    Auch veraltet ! Besser unset() verwenden
                    So ein Bullshit!

                    Dummer Junge, weißt du eigentlich nach 3 Jahren und 5000 Postings immer noch gar nichts?!


                    Abgesehen davon ist unset in falscher Benutzung tödlich, siehe Manual.

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      ein einfaches
                      PHP-Code:
                      $_SESSION = array(); 
                      reicht meist
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Aus Gründen der Sicherheit bezüglich SID ist eindeutig zu session_destroy zu raten!
                        Genaugenommen sollte man session_destroy() sogar vor dem Login auch machen, damit der User eine saubere Session erhält und ein eventueller Mitwisser der SID, nichts mehr damit anfangen kann.

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Quark!!
                          Session_destroy() macht genau Null Komma gar nichts mit der SID!!
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            Original geschrieben von ghostgambler
                            So ein Bullshit!

                            Dummer Junge, weißt du eigentlich nach 3 Jahren und 5000 Postings immer noch gar nichts?!


                            Abgesehen davon ist unset in falscher Benutzung tödlich, siehe Manual.
                            Also ich habe jetzt shcon unset() benutzt. Was soll ich denn deiner Meinung nach benutzen?

                            KageMurai

                            Kommentar


                            • #15
                              http://php.net/session_destroy (Text lesen, Beispiel nachvollziehen, dann bleiben keine Fragen offen.)

                              Kommentar

                              Lädt...
                              X