![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 101 Pomógł: 7 Dołączył: 16.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Widze ze przesadzilem z wielkoscia opisu problemu w poprzednim poscie, dlatego przedstawie go raz jeszcze znacznie skracjac:
Problem dotyczy sesji (istota problemu w najbardziej skrotowej wersji):
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 Ten post edytował siemieng 1.07.2009, 20:59:02 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat te "podfunkcje" funckji bledow nie zostana wykonane, jedynie zostanie zmieniona wartosc $_SESSION['isValid'] na flase. Czyli masz na myśli to, że nie wykonuje się cała funkcja? A gdy zamienisz die" title="Zobacz w manualu PHP" target="_manual na coś innego, to wówczas działa ok? -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 101 Pomógł: 7 Dołączył: 16.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli masz na myśli to, że nie wykonuje się cała funkcja? A gdy zamienisz die" title="Zobacz w manualu PHP" target="_manual na coś innego, to wówczas działa ok? Tak dokladnie, z funckji error() wykonuje sie tylko podmiana zmiennej sesyjnej na false, reszta sie nie uaktywania, gdy podmienie die(), zostawie samo error() jest identycznie, natomiast usuniecie z if'a funckji error() i wstawienie tam czegokolwiek innego zeby sprawdzic czy dziala, zawsze dziala :/ Co wiecej niektore if'y dzialaja, nie mam pojecia jak i dlaczego czasem sie tak dzieje, calosc bardziej szczegolowo opisalem we wcesniejszym poscie Temat: PHPsamoczynne_wykonanie_if_a__problem_z_sesja tyle ze chyba rozmiarem odstraszaml:P Ten post edytował siemieng 1.07.2009, 22:34:31 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Dla mnie mało zrozumiałe jest Twoje podejście, np:
- po co zabijać parser, gdy pojawił się błąd i po co ta funkcja? Zabijanie ma sens, gdy np. wykryjemy próbę ataku itp. Nigdy tego nie próbowałem, stąd moje obawy, czy ta funkcja w ogóle się wykona. Cytat zmienia wartosc zmiennej $_SESSION['isValid'] na false - jesteś tego pewien? A co będzie, gdy zmienna nie zostanie ustawiona jako true?Nie lubię też zapisów bez {} - mało czytelne jak dla mnie, jestem konserwatystą. I po co sesje do tego? Ciasteczka? (a co gry user ich nie używa) Przekierowania? Np. taka funkcja: - czym to się różni od include? Funkcja ma zwracać jakiś wynik w zależności od podanych parametrów, a nie wysyłać fragment strony do przeglądarki. Moim zdaniem zmierzasz w złą stronę i zbyt to skomplikowałeś, masz po prostu odebrać adres i zwalidować go, jeśli nie jest poprawny lub nie prowadzi do żadnej treści to ustawić komunikat błędu i tyle.
Powód edycji: [erix] połączyłem tematy
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Spróbuj zainstalować jakiś debugger, bo przyznam, że to trochę dziwny przypadek.
Daj phpinfo" title="Zobacz w manualu PHP" target="_manual, info o platformie, systemie, etc. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:53 |