Problem mit session

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

  • Problem mit session

    Habe ein Problem mit sessions. Habe die Datei log.php und login.php (siehe unten).
    Aus irgendeinem Grund wird die session nicht gestartet, kann mir aber nicht erklären warum. Hier der Code:

    Die datei log.php
    <?php
    session_start();

    require_once "login.php";

    //Variable $ouput wird ausgegeben, wenn Zugangsdaten nicht korrekt waren
    $output = "";

    //Hilfsvariable zum Überprüfen der Zugangsdaten
    $test = 0;

    ?>

    <html>
    <head>
    <title>LogIn</title>
    </head>
    <body>
    <?

    //neues Objekt erzeugen
    $Login = new Login();

    // Formular wurde abgesendet
    if( isset($_POST['submit']) ){

    // Benutzername oder Passwortfeld nicht gesetzt, d.h. leer
    if($_POST['username'] == "" || $_POST['password'] == "" ){
    $output = "<p>Bitte überprüfen Sie ihre Zugangsdaten</p>";
    $test = 1;
    }
    // Benutzerdaten überprüfen und wenn gültiger Benutzer dann einloggen

    elseif($Login->getValidUser() == 1) {

    $row = mysql_fetch_array($Login->getUserData());
    echo "Username: " . $row['user_username'];

    // Benutzerdaten waren ok -> Benutzer einloggen und weiterleiten
    $Login->loginUser();

    // Session ist gesetzt mit allen wichtigen Session-Daten
    echo "Session: ". $_SESSION['user'];

    // Benutzer unterscheiden (if ... else ...) und entsprechend weiterleiten
    /*$Login->getUserData();
    if ($result['user_status']==0){
    header("location:data1.php");
    }
    elseif ($result['user_status'] == 1){
    header("location:data2.php");
    }
    elseif ($result['user_status'] == 2){
    header("location:data3.php");
    }*/
    exit;
    }

    // falsche Benutzerdaten wurden eingegeben
    else{

    $output = "<p>Bitte überprüfen Sie ihre Zugangsdaten</p>";
    $test = 1;
    }
    }


    // Formularausgabe mit Fehlermeldung bei z.B. falschen Zugangsdaten
    if($test == 1){
    echo $output;
    echo $Login->printUserForm();
    }

    // Formaularausgabe beim ersten Seitenaufruf
    else{
    echo $Login->printUserForm();
    }



    ?>
    </body>
    </html>



    Die Datei login.php

    <?php
    session_start();
    require_once "config.php";

    class Login{

    // Konstruktor
    function Login(){
    }


    // Eingegebner Username und Passwort vergleichen
    function getValidUser(){

    global $_POST;
    $query = "SELECT count(user_id) as id FROM users WHERE user_username = '".$_POST['username']."' AND user_password = '".$_POST['password']."'";
    $result = mysql_query($query);
    $row = mysql_fetch_array($result);
    return $row['id'];
    }


    //Userdaten aus der Datenbank holen
    function getUserData(){

    global $_POST;

    $query = "SELECT user_username, user_status FROM users WHERE user_username = '".$_POST['username']."' AND user_password = '".$_POST['password']."'";
    $result = mysql_query($query);

    return $result;
    }


    //Anmeldeformular auf dem Bildschirm darstellen
    function printUserForm(){

    $userForm = '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">
    <table align="center">
    <tr>
    <td bgcolor="#e7e7e7">Benutzername</td>
    <td bgcolor="#ffffff">
    <input type="text" name="username" size="20" class="input" value="'.$_POST['username'].'">
    </td>
    </tr>
    <tr>
    <td bgcolor="#e7e7e7">Passwort</td>
    <td 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>';

    return $userForm;
    }


    //User einloggen und in einer Session registrieren
    function loginUser(){

    $user = $result['user_username'];
    session_register('user');
    //$logout = '<a href="logout.php">LogOut</a>';

    }


    }

    ?>

  • #2
    du darfst php-Tag des Forums auch benutzen.

    Sehr schöne Fehlerbeschreibung.

    was heisst denn session nicht gestartet? wie hast du festgestellt?

    Kommentar


    • #3
      Sorry wegen den Tags.

      Erst einmal wollte ich mir die Session ausgeben lassen:
      echo "Session: ". $_SESSION['user'];

      Funktioniert aber nicht.

      Habe dann noch eine weitere Datei, nämlich data1.php, die folgendermaßen aussieht:


      <?php
      session_start();
      if(!session_is_registered('user') || $_SESSION['user'] == "") {
      header("location:log.php");
      die;
      }
      ?>


      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Ticket-Shop</title>
      </head>
      <body>
      <table align="center">
      <tr>
      <td align="center">
      <? echo "<b>Hallo ".$_SESSION['user']."</b>"; ?>
      <br><br>
      <b>Inhalt</b>
      <br><br>
      <a href="logout.php">LogOut</a>
      </td>
      </tr>
      </table>
      </body>
      </html>

      Diese Datei leitet mich sofort zurück zur log.php

      Kommentar


      • #4
        Wär echt net wenn du deine post editieren und deinen code in [php ]-tags enschließen würdest
        PHP-Code:
        function loginUser(){
             
        $user $result['user_username'];
             
        session_register('user');
             
        //$logout = '<a href="logout.php">LogOut</a>';

        Wo wird denn hier die variable $result zugewiesen?

        Kommentar


        • #5
          [FONT=arial][COLOR=blue]
          function loginUser(){
          global $_POST;
          $user = $_POST['username'];
          session_register('user');
          //$logout = '<a href="logout.php">LogOut</a>';

          }

          [/COLOR][/FONT]
          [/PHP][/EDIT]

          Selbts so funktioniert es nicht!!

          Kommentar


          • #6
            $_POST is eh schon global
            $_SESSION['user'] = $_POST['username']
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Super vielen Dank, das hat geklappt. Du hast meinen Tag gerettet!!!

              Kommentar


              • #8
                na immerhin etwas... :-)
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar

                Lädt...
                X