Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Trochę dziwne zachowanie dekrementacji.
Forum PHP.pl > Forum > Przedszkole
KR2615
Witam.
Napisałem skrypt odpowiedzialny za logowanie się użytkowników do mojego serwisu. Gdy ktoś wchodzi i próbuje się zalogować, dostaje ode mnie 5 prób. Przy każdym złym podaniu loginu/hasła odbierana jest mu jedna próba. Kod wygląda mniej więcej tak:
  1. <?
  2. if(empty($_SESSION["prob_logowania"])) {$_SESSION["prob_logowania"]=5; }
  3.  
  4. if($_SESSION["prob_logowania"] != 0) {
  5. if("warunek_odpowaidajacy_za_udane_logowanie") {
  6. [...]
  7. } else { --$_SESSION[prob_logowania]; echo "Podano złe dane! Pozostało $_SESSION[prob_logowania] prób logowania.";
  8. } else { echo "Przekroczyłeś maksymalną liczbę 5 prób logowania!"; die(); }
  9. ?>


No i niestety po piątym wpisaniu złych danych wyświetla się napis Pozostało 0 prób logowania a po odświeżeniu strony dostaje się kolejne 5 prób.

Czy ktoś mógłby mi pokazać gdzie robię błąd? wydaje mi się, że --$_SESSION[prob_logowania] ustawia $_SESSION[prob_logowania] na pustą zmienną gdy jej wartośc wyniesie 0 (albo mi się wydaje) Prosze o pomoc.
CuteOne
  1. <?
  2. if(empty($_SESSION["prob_logowania"])) {$_SESSION["prob_logowania"]=6; }
  3.  
  4. if($_SESSION["prob"] != 1) {
  5. if("warunek_odpowaidajacy_za_udane_logowanie) {
  6. [...]
  7. else { --$_SESSION[prob_logowania]; echo "Podano złe dane! Pozostało $_SESSION[prob_logowania] prób logowania.";
  8. else { echo "Przekroczyłeś maksymalną liczbę 5 prób logowania!"; die(); }
KR2615
Dzięki, podziałało!

Przy okazji czy mógłbyś mi odpowiedziec na pytanie: czy to prawda że dekrementacja zmiennej o wartości 1 powoduje jej wyczyszczenie ?
greycoffey
Nie, po prostu odejmujesz od jedynki jedynkę i wychodzi zero ;-) Zero jest wartością domyślną, ale do usuwania zmiennych używa się unset.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.