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>';
}
}
?>
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>';
}
}
?>
Kommentar