Problem dotyczy sesji (istota problemu w najbardziej skrotowej wersji):
<?php //zmienna weryfikujaca poprawnosc sesji uzytkownika //funkcja bledu function error() { $_SESSION['isValid'] = false; } //funkcja sesji function session() { if(!$_SESSION['isValid']) { } } } //wywolanie funckji sesji session(); //dowolny kod z if-em ?>
Problem polega na jak gdyby wykonaniu instrukcji warunkowej bez spelnienia jej warunkow. W tym przypadku jeśli zmienna $result = true, zostanie wykonana funkcja error() - znaczy w oryginalnej postaci jest ona znacznie rozbudowana (dochodzi zapisanie danych bledu, wyswietlenie komunikatu o bledzie) - te "podfunkcje" funckji bledow nie zostana wykonane, jedynie zostanie zmieniona wartosc $_SESSION['isValid'] na flase.
Zastanawiam sie jak jest to mozlwie, poniewaz warunke na 100% nie jest spelniony - podmienienie $var = (!$result) ? die(error()) : $result; na echo $var = (!$result) ? 'false' : 'true'; zawsze wyswietli 'true'. Zeby zmienna $_SESSION['isValid'] miala wartosc true, musze usunac funkcje error() z die() lub w samej funkcji error() musze usunac $_SESSION['isValid'] = false;
Prosze o poddanie pomyslu dlaczego tak sie dzieje, przeciez warunek nie jest spelniony czyli wywolanie funckji nie powinno nastapic, a ono jak gdyby nastepuje (jak gdyby bo jak pisalem z zadan funckjji error wykonane zostaje tylko zmiana wartosci $_SESSION['isValid'] na false), z gory dzieki pozdaawiam