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

Verständnisproblem $_SESSION-Abfrage

FreddyS

Neues Mitglied
Einen schönen guten Morgen,

kann mir bitte jemand erklären, warum es erforderlich ist, $_SESSION 2x abzufragen, ich verstehe bis jetzt die Notwendigkeit nicht:
PHP:
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {


1x mit isset
1x ohne isset

Besten Dank
 
Guten Morgen

mit "Isset" kannst du überprüfen ob die Variable überhaupt gesetzt ist.

Jedoch verstehe ich den Sinn deines If's nicht wirklich!

Für was benötigst du diesen Programmteil?

mfg
MasterChief
 
würde mal sagen...

wenn die $var angemeldet in Session nicht registriert ist, gib ein anmeldeforlumar aus, sonst, die weiterleitung...
 
Erklärung steht beim Tutorial dabei ;)
Dies ist die Datei, die später in jede zu schützende Seite eingebunden werden muss. Es wird dann immer überprüft, ob die Sessionvariable angemeldet existiert und ihr Wert true ist


!isset(
$_SESSION['angemeldet'] -> wenn die Variable "angemeldet" keinen Wert hat
!$_SESSION['angemeldet'] -> wenn die Variable "angemeldet" false liefert
 
Zuletzt bearbeitet:
!isset($_SESSION['angemeldet'] -> wenn die Variable "angemeldet" keinen Wert hat
Ist nicht ganz richtig... sondern wenn das assoziative Array $_SESSION keinen benannten Index namens 'angemeldet' hat. Kann dann natürlich auch keinen Wert haben ;-)

Gruß thuemmy
 
Ich prüfe damit, ob der user ordnungsgemäass angemeldet ist und verhindere einen Direktaufruf der Seiten über die URL ohne Berechtigung
 
Ich prüfe damit, ob der user ordnungsgemäass angemeldet ist und verhindere einen Direktaufruf der Seiten über die URL ohne Berechtigung
Setzt du denn $_SESSION['angemeldet'] ?
Wenn ja, setzt du darin auch FALSE oder TRUE? Denn in deiner if-Abfrage (das zweite) wird entweder WAHR oder FALSCH erwartet.

Wenn nein, dann ist das !$_SESSION[..] immer WAHR, sprich, diese Abfrage ist sinnlos.

Mfg

Edit: Da du ODER (||) in dem if benutzt, wird die Abfrage ausgeführt, sobald eines der beiden WAHR ist.

Edit2: @disconnect
!isset($_SESSION['angemeldet'] -> wenn die Variable "angemeldet" keinen Wert hat
Für eine Abfrage auf einen Wert, sollte man die Funktion empty benutzen.
 
Zuletzt bearbeitet:
Ich setze sowohl $_SESSION['angemeldet'] als auch true bzw falsch und frage diese ab:
PHP:
 if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet'])
      {
      header('Location: http://localhost/login.php');
      exit;
      }

Trifft eines von beiden nicht zu, gehts zum Anmelden (Passwort usw.)

!isset und !$_SESSION
 
Das ist genau richtig, was Du machst, aus folgendem Grund: Wenn Du in Deinem Script error_reporting ziemlich scharf eingestellt hast, z.B. E_ALL, dann würde er Dir eine NOTICE oder WARNING anzeigen, wenn Du nur die $_SESSION['angemeldet'] auf WAHR oder FALSCH prüfen würdest und die Seite direkt aufgerufen wurde. Deswegen die ODER-Verknüpfung. Wenn die $_SESSION['angemeldet'] nicht gesetzt ist, ist die Bedinung WAHR und die header()-Funktion wird ausgefüht. Wenn sie gesetzt ist, wird $_SESSION['angemeldet'] auf WAHR oder FALSCH überprüft.

Ich hoffe, dass ich mich halbwegs verständlich ausgedrückt habe.

Gruß thuemmy
 
Zurück
Oben