Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

1

24.08.2014, 15:45

Mal funktioniert PHP, mal nicht

Die Zeile if(isset($_SESSION['loggedin']) == false) Funktioniert in einem älteren Projekt, welches relativ gross war ohne Probleme. Gestern habe ich mit einem neuem Projekt angefangen, aber in diesem funktioniert die if() einfach nicht.


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
//header('Content-Type: text/html; charset=utf-8');
//include 'functions.php';
echo"Test1";
if(isset($_SESSION['loggedin']) == false)
{
    //echo"TEst4";
    $_SESSION['loggedin'] = false;
    //header('location: login_form.php');
    //echo"TEST2";
}
else
{
echo"else";
}
    echo"TEST3";
?>


Die Ausgabe sieht so aus: Test1elseTEST3

Obwohl die Session erstellt ist und loggedin noch nicht gesetzt ist, springt er in die else. Ich benutze das alles lokal in XAMPP. Der PHP Server funktioniert ohne Probleme, da ich grade mein altes Projekt getestet habe und es funktioniert weiterhin ohne Probleme.
Woran kann das jetzt liegen?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

24.08.2014, 15:52

Dass sich das Verhalten von isset (und empty) in neueren Sprachversionen geändert hat, z.B.
Aber es ist sowieso keine schöne Art, dies per 'isset' zu überprüfen. Ich würde dir raten, das ganze so zu schreiben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

    session_start();
    //header('Content-Type: text/html; charset=utf-8');
    //include 'functions.php';
    echo 'Test1';

    if(array_key_exists('loggedin', $_SESSION) && !$_SESSION['loggedin'])
    {
        //echo 'TEst4';
        $_SESSION['loggedin'] = false;
        //header('location: login_form.php');
        //echo 'TEST2';
    }
    else
    {
        echo 'else';
    }

    echo 'TEST3';
?>

Ungetestet!
Zunächst überprüfen wir, ob ein Index 'loggedin' überhaupt vorhanden ist und wenn, dann überprüfen wir, ob der Wert an diesem Index false ist.
Ich habe auch mal deine doppelten Anführungszeichen gegen einfache gewechselt: Bei doppelten versucht PHP mögliche Variablen in dem string aufzulösen, was Zeit intensiver ist, als direkt einfache Anführungszeichen zu verwenden.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

3

24.08.2014, 15:57

Danke dir, das funktioniert so :)

IdR verwende ich die einfachen Anführungszeichen, das war jetzt einfach schnell so hingerotzt um eine Ausgabe zu haben, damit ich sehe in welche Blöcke er springt.

Nochmals vielen Dank :)

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

24.08.2014, 17:05

Quellcode

1
2
3
if(isset($_SESSION['bla'])){
    // eingeloggt
}

Sollte durch alle Versionen funktionieren.

Werbeanzeige