Login mit Sessions

so ich habe das ganze jetzt mal ausprobiert...aber es funktioniert nicht so ganz. Keine Ahnug wo der Fehler liegt.

login.php

PHP:
<?php
 include ("dbconnect.php");
 session_start();
 $aufruf = "SELECT id FROM passwort WHERE login='$login' AND passwort=PASSWORD('$passwort')";
 $aufrufen = mysql_query ($aufruf);
 $rows = mysql_num_rows ($aufrufen);
 if ($rows > 0)
 	{                           
 	$data = mysql_fetch_array ($rows);
 	$_SESSION["user_id"] = $data["Id"];
 	echo "Sie wurden erfolgreich angemeldet.";
        echo "<br>";
 	echo "<a href=\"home.php\">Weiter.</a>"; 
 	}
 else
 	{                 
 	echo "Ihr Benutzername oder Passwort stimmt nicht. Bitte versuchen Sie es nocheinmal!";
 	echo "<br>"; 
 	echo "<a href=\"login.html\">Hier</a> gehts zur&uuml;ck.";   
 	}
?>

Ich hab jetzt da ganz oben die Session gestartet und in der if-Abfrage den Code aus dem Tutorial eingefügt. Ist das falsch?

Auf allen Seiten, die geschützt werden sollen, muss jetzt doch die
session.php includet werden?!

PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: login.html");
}
?>

login.html ist die Datei, die das Login-Formular beinhaltet.

Was stimmt bei diesem Code nicht?

gruss
 
hmm

Was funktioniert nicht? gibt er irgendeine Fehlermeldung aus?

Die Session.php muss nicht inkludet werden (was ist die session.php) die Datei muss einfach nur mit .php enden und ganz oben musst du abfragen ob die Session richtig ist (existiert) bzw ob irgendwelche Variablen gesetzt sind (user_id)

PHP:
if (!isset($PHPSESSID)||(!isset($user_id))
{
 echo "Das war ein Versuch ohne Session id auf die Seite zuzugreifen";
}
else
{
.
.
echo "die ganz normale seite wird geladen";
.
.
}
 
Zuletzt bearbeitet:
ja die session.php ist das gleiche wie die checkuser.php im Tutorial...und die wird auch überall includet...so wie ich das verstanden habe.

Ja es werden jede Menge Fehlermeldungen ausgegeben:

Warning: open(/tmp\sess_e7d12c9a63dfd7ed828a815df7777de9, O_RDWR) failed: No such file or directory (2) in c:\www\login\login.php on line 3

Warning: Supplied argument is not a valid MySQL result resource in c:\www\login\login.php on line 9

Warning: open(/tmp\sess_e7d12c9a63dfd7ed828a815df7777de9, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0


Also diese kommen wenn ich versuche, mich anzumelden. oder wenn ich die Datei, die geschützt werden soll, direkt aufrufe.

gruss
 
Deine Konfiguration der php.ini ist fehlerhaft. Du musst session.save_path auf ein existierendes Verzeichnis setzen. Voreingestellt ist /tmp. Und das gibt's auf Deinem Windows-Rechner nicht :)

snuu
 
ok...irgendetwas stimmt noch nicht:
Warning: Supplied argument is not a valid MySQL result resource in c:\www\login\login.php on line 9


login.php:
PHP:
<?php
 include ("dbconnect.php");
 session_start();
 $aufruf = "SELECT id FROM passwort WHERE login='$login' AND passwort=PASSWORD('$passwort')";
 $aufrufen = mysql_query ($aufruf);
 $rows = mysql_num_rows ($aufrufen);
 if ($rows > 0)
 	{                           
 	$data = mysql_fetch_array ($rows); //Zeile 9
 	$_SESSION["user_id"] = $data["Id"];
 	echo "Sie wurden erfolgreich angemeldet.";
        echo "<br>";
 	echo "<a href=\"home.php\">Weiter.</a>"; 
 	}
 else
 	{                 
 	echo "Ihr Benutzername oder Passwort stimmt nicht. Bitte versuchen Sie es nocheinmal!";
 	echo "<br>"; 
 	echo "<a href=\"login.html\">Hier</a> gehts zur&uuml;ck.";   
 	}
?>

Irgendwie stimmt das mit der Zuordnung der Sessions nicht ganz...Wenn ich mich korrekt anmelde, komme ich wider zurück zum Anmeldeformular, wenn ich au "Weiter" Klicke. Also irgendwie werden keine Sessions gesetzt. Oder?

danke

gruss
 
ok...die Fehlermeldung kommt nicht mehr. Aber irgendetwas stimmt immer noch nicht:( Werde bei korrekter Eingabe von Login und PW immer noch auf das Formular umgeleitet. Stimmt da an der session.php vieleicht etwas nicht?

PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: login.html");
}
?>

oder was könnte da noch Falsch sein?

gruss
 
Zurück