Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Trochę dziwne zachowanie dekrementacji.
KR2615
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował ksysinek 11.03.2011, 13:49:32


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  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(); }
Go to the top of the page
+Quote Post
KR2615
post
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


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 ?


--------------------
Go to the top of the page
+Quote Post
greycoffey
post
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Nie, po prostu odejmujesz od jedynki jedynkę i wychodzi zero ;-) Zero jest wartością domyślną, ale do usuwania zmiennych używa się unset.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 23:26