Session will nicht

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

  • Session will nicht

    Hallo,
    ich habe hier das Tutorial über Sessions gelesen und auch gleich mal ein Log-In Script geschrieben. Bloß irgendwie will der die Session nicht registrieren. Ich weiß auch nicht was los ist. Ich poste einfach mal die beiden wichtigen Quellcodes:

    Das ist die Seite zum Einloggen:
    PHP-Code:
    <?php
    session_start
    ();
      require(
    "connect.inc.php");
      
    ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
        <title>LogIn zum Adminbereich</title>
      <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      <body>
      <?php if(!isset($_POST['submit'])) { ?>
      <a href="neu.php">NEu</a>
      <form action="<?php $PHP_SELF ?>" method="post">
      <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <b>Bitte erst anmelden</b>
          </td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Benutzername</td>
          <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Passwort</td>
          <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
        </tr>
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <input type="submit" name="submit" value="Anmelden" class="button">
          </td>
        </tr>
      </table>
      </form>
      <?php
      
    }elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo 
    '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php">Zurück</a></p>';
      }elseif(!
    $_POST['password'] || $_POST['password'] == "") {
        echo 
    '<form action="index.php" method="post">';
        echo 
    '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
        echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
        echo 
    '<input type="submit" name="zurueck" value="Zurück">';
        echo 
    '</p>';
        echo 
    '</form>';
      }else{
        
    $password md5($password);
        
    $query = @mysql_query("SELECT name, pass FROM users WHERE name = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
        
    $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zurück</a></p>');
        if(
    $password != $result['pass']){
          echo 
    '<form action="index.php" method="post">';
          echo 
    '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
          echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
          echo 
    '<input type="submit" name="zurueck" value="Zurück"></p>';
          echo 
    '</form>';
          die;
        }else{
          
    $user $result['user'];
          
    session_register('user');
          echo 
    '<p align="center">LogIn erfolgreich! :-)<br><br><a href="sichere_seite.php">Weiter</a></p>';
        }
      }
      
    ?>
      </body>
     </html>

    Das ist die Seite die nach dem einloggen erscheinen soll
    PHP-Code:
    <?php
    session_start
    ();
      if(!
    session_is_registered('user') || $_SESSION['user'] == "") {
        
    header("location:index.php");
        die;
      }
      
    ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
        <title>Sichere Seite</title>
      <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      <body>
      <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
        <tr>
          <td bgcolor="#e7e7e7" align="center">
          <?php echo "<b>Hallo ".$_SESSION['user']."</b>"?>
          <br><br>
          <b>Hier ist der sichere Inhalt!</b>
          <br><br>
          <a href="neu.php">Neuen Benutzer anlegen</a>
          <br><br>
          <a href="logout.php">LogOut</a>
          </td>
        </tr>
      </table>
      </body>
      </html>
    Das Problem ist nur das der Header mich immer wieder zurückschickt weil die Session angeblich nicht existiert.

  • #2
    Aus Gründen der Verbesserung der Sicherheit und der Lesbarkeit des Codes wird die Verwendung von $_SESSION (oder $HTTP_SESSION_VARS bei PHP 4.0.6 oder niedriger) empfohlen. Mit $_SESSION werden die Funktionen session_register(), session_unregister() und session_is_registered() nicht benötigt. Auf die Session-Variablen kann wie auf jede normale Variable zugegriffen werden.
    Quelle: http://www.php.net/session

    Wenn du wissen willst ob eine session variable existiert, überprüf das so:

    PHP-Code:
    if( isset( $_SESSION['user'] ) )
    {


    Du solltest auch nicht mehr session_register('') sondern ausschliesslich $_SESSION[''] benutzen

    Kommentar


    • #3
      Hast Du denn mal geprüft ob eine Session gestartet wurde ?
      Mache es grundsätzlich so, das ich die Sessiondaten im header bearbeitet werden, noch bevor etwas augegeben wurde.

      Denn kannst Du es besser so machen:
      if(!$_SESSION["username"]) { echo "nö"; }
      else { echo "und so weiter"; }
      Mit freundlichen Grüßen
      Werner

      Kommentar


      • #4
        komisches tut, das du benutzt *g*

        http://php-resource.de/tutorials/read/38/1/ funktioniert
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Ja finde ich auch sehr komisch

          Aber es hat schonmal in einem anderen Script funktioniert, bloß jetzt will es nicht mehr!

          Kommentar


          • #6
            Ich hab den Fehler gefunden. Ich doofi !

            In dieser Zeile :
            $user = $result['name'];
            Stand vorher anstatt name , user und in meiner Tabelle gibt es keine Spalte die user heißt und somit war die Session leer und das Script hat es dann auch nicht angenommen

            Kommentar

            Lädt...
            X