• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

in if-Bedingung - Session --> Fehlermeldung

Status
Für weitere Antworten geschlossen.

Mars@Gera

Mitglied
Warum werden Fehlermeldungen (Undefined index: var in) ausgegeben, wenn in einer if-Bedingung (if($_SESSION["var"])) mit Sessionen geprüft wird? Kann man dies nicht irgendwie umgehen außer error_reporting(0)?

MfG Marcel
 
Hallo Marcel,

also zunächst einmal wäre festzhalten, dass diese "Undefined Index" Meldung einfach nur ein Hinweis (Notice) ist und keine Fehlermeldung.

Dann zur eigentlichen Frage.
Wenn Du mit
PHP:
if ($_SESSION['irgendwas']) {}
prüfst, setzt das voraus das die Variable existiert. Denn diese if-Abfrage prüft nur, ob die Existenz TRUE ist. Das kann aber nicht sein, wenn die Variable gar nicht existiert, daher auch die Notice.
Korrekt prüfen würdest Du mit
PHP:
if (isset( $_SESSION['irgendwas'] )) {}

Ansonsten sollte error_reporting nur während der Entwickelung angeschaltet sein und nicht in der produktiven Umgebung. Solche Fehlermeldungen (allgemein gesprochen), geben Angreifer sehr viel Information über ein Script, wodurch sich Angriffe einfacher durchführen lassen.
 
ich verwende lieber empty()
PHP:
if (!empty( $_SESSION['irgendwas'] )) {}
Weil man ich im normalfall prüfen möchte ob in der Variable was drin ist ;-)
 
und ich verwende lieber erst isset und dann !empty damit ich auch keine notice bekomme ;)

PHP:
if(isset($_SESSION['foobar']) && !empty($_SESSION['foobar'])) {
    // code
}
 
Schonmal vielen Dank für die Erläuterungen, wieder was gelernt :-D, jetzt habe ich noch eine Frage und zwar habe ich dies jetzt so gemacht, nur leider funktioniert es nicht bzw. finde den Fehler nicht!

PHP:
<?php
if(isset($_SESSION['status'] == 0) && !empty($_SESSION['status'] == 0))
?>

Meldung: Parse error: parse error, expecting `','' or `')'' in
Habe heute Tomaten auf den Augen sry!

Schonmal allen ein frohes neues Jahr!

MfG Marcel
 
== 0 brauchst du nicht zu prüfen, die Funktionen liefern true oder false zurück

PHP:
<?
if (isset($_SESSION['status'])) && ...

//oder

if (!isset($_SESSION['status'])) && ...
?>
 
Zuletzt bearbeitet:
Vielen Dank, ich musste nur die empty-Prüfung herausnehmen, da sich diese gebissen hatte warum auch immer, aber mein Wusnch ist erreicht!

Vielen Dank nochmal!

Einen guten Rutsch Wünsche ich allen!

MfG Marcel
 
PHP:
if(isset($_SESSION['status']) && $_SESSION['status'] == 0)

so? ^^
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben