-
SESSION - Frage
Hallo,
ich versuche mich gerade in SESSIONs und hab da ein kleines Problem.
Beim Loginformular hab ich soweit keine Probleme...
Zur Zeit hab ichs noch einfach, sprich
PHP-Code:
if($username=="test" AND $kennwort=="test"){
$_SESSION['einloggen'] = TRUE}
Und so weiter. Das ging eigentlich alles.Bei richtigen Daten kommt dann ein echo und eine Weiterleitung zu einer anderen Seite.
Dort habe ich ebenfalls mit Sessions gearbeiten. Heißt, wenn man im Login Formular richtige Daten eingegeben hat ($_SESSION['einloggen']=TRUE), springt man auf die andere Seite , wo sich die gleich SESSIONs Variable befindet.
Hier kurz der Code der zweiten Seite:
PHP-Code:
<?php
session_start();
if($_SESSION['einloggen'] == TRUE){
echo'EINGELOGGT';
}
else{
echo'Kein Zugriff';
}
?>
Soweit auch alles gut.
problem nur, wenn ich die zweite seite aufrufe, ohne eingeloggt zu sein bekomm ich einen Error, mit der aussage, dass "einloggen" nicht bekannt sei.
PHP-Code:
Notice: Undefined index: einloggen in /var/www/access.php on line 3
Wie kann ich dies lösen?
Danke! :)
Sorry wegen den Komischen Satzkonstruktionen...
-
Das ist kein Error, das ist nur eine Notiz, dass die Variable nicht bekannt ist.
Pack mal an den Anfang von dem PHP Script ein
error_reporting(E_ALL ^ E_NOTICE);
Alternativ die Error-Einstellungen in der php.ini ändern.
-
-
Du musst am beginn jeder Seite, die auf Sessions zugreifen soll, session_start() schreiben. Also wirklich in jeder Datei, die Sessions benutzt
-
Ich würde als erstes prüfen, ob die Session existiert und wenn ja, welchen Wert diese hat. Ein Beispiel für dich:
PHP-Code:
<?php
session_start();
if(!isset($_SESSION['einloggen']))
{
echo 'Sie sind nicht angemeldet!';
exit();
}
?>
-
Perfekt, vielen Dank!
Ich dachte man kann bei Session - Variablen nicht mit isset() arbeiten!
Danke!
Habs jetzt so gelöst:
PHP-Code:
<?php
session_start();
if(isset($_SESSION['einloggen'])==TRUE)
{
echo 'Sie sind angemeldet!';
}
elseif(isset($_SESSION['einloggen'])==FALSE)
{
echo'Nicht angemeldet!';
}
?>
-
In If-Anweisungen braucht man eigentlich nicht prüfen, ob diese eine wahre Aussage ist oder nicht. Beispiel:
PHP-Code:
<?php
if($var)
echo 'Wahre Aussage!';
//Das Gleiche funktioniert natürlich auch so
if($var == true)
echo 'Gleiche Resultat!';
?>
Man braucht also == true nicht beitippen, da dies auch ohne diese Anweisung geprüft wird.
-
Okay, klar aber ich habs auch irgendwie einheitlich gemacht :)
Danke euch!
-
Die Fehler ausblenden, wie GregorSamsa vorgeschlagen hat, ist meiner Meinung nach keine Lösung. Na gut, in dem Fall spricht eigentlich nichts dagegen, aber grundsätzlich finde ich das einfach falsch. Am geschicktesten und saubersten löst Du es meiner Meinung nach, wenn Du Dir eigens eine Funktion dafür schreibst:
PHP-Code:
function session_value($key)
{
if(array_key_exists($key, $_SESSION))
{
return $_SESSION[$key];
}
return false;
}
Ist aber Geschmackssache.
-
@Ken: Deine Funktion dürfte jetzt immer false zurückgeben. Einfach noch nen else dazu und fertig.
MfG