Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dziwne zachowanie instrukcji IF()
gcdreak
post 14.06.2009, 16:40:41
Post #1





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Witam!
Mam w pliku dwie, dość skomplikowane, instrukcje if.
Na samym początku każdej z nich są sprawdzane warunki.
Jeżeli warunki w jednej są spełnione i ona się wykona to druga się nie wykonuje?
Czy zdarzyło wam się kiedykolwiek coś takiego?
Go to the top of the page
+Quote Post
patryczakowy
post 14.06.2009, 16:41:53
Post #2





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

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


a co masz w bloku try


--------------------
Sztuką jest widzieć to czego nie widać.
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 17:22:00
Post #3





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Kod
if(empty($stareHaslo)){
        $odpowiedz = '<li>Proszę podać obecne hasło.</li>'."\n\t";
    }elseif(!$ustawienia->sprawdzStareHaslo($stareHaslo)){
        $odpowiedz = '<li>Proszę podać poprawne obecne hasło.</li>'."\n\t";
    }
    
    if(isset($odpowiedz)){    //    Jeżeli podane 'obecne hasło' nie jest poprawne lub nie zostało podane,
        echo $odpowiedz;    //    to wyświetla się ostrzeżenie
        exit;                //    i dalsza część skryptu nie będzie wykonywana.
    }
    
    
    if((!empty($haslo)) && ($stareHaslo !== $haslo)){
        if(!SprawdzanieDanychWejsciowych::sprawdzHaslo($haslo)){
            $odpowiedz = '<li>Proszę podać nowe hasło składające się z co najmniej 6 znaków.</li>'."\n\t";
        }
        if(empty($haslo2)){                                                    
            $odpowiedz .= '<li>Proszę powtórnie podać nowe hasło.</li>'."\n\t";
        }elseif($haslo !== $haslo2){
            $odpowiedz .= '<li>Podane nowe hasła muszą być takie same.</li>'."\n\t";
        }
        
        if(isset($odpowiedz)){
            echo $odpowiedz;
        }else{
            if($ustawienia->zmienHaslo($haslo))
                $odpowiedz = 'Hasło zostało zmienione.<br />';
            else
                $odpowiedz = 'Nie zmieniono hasła.<br />';
        }
    }
    
    
    if((!empty($email)) && ($ustawienia->email !== $email)){
        if(!SprawdzanieDanychWejsciowych::sprawdzEmail($email)){
            $odpowiedz .= '<li>Proszę podać poprawny adres e-mail.</li>'."\n\t";
        }
        if(empty($email2)){                                                    
            $odpowiedz .= '<li>Proszę powtórnie podać nowy adres e-mail.</li>'."\n\t";
        }elseif($email !== $email2){
            $odpowiedz .= '<li>Podane nowe adresy e-mail muszą być takie same.</li>'."\n\t";
        }
        
        if(isset($odpowiedz)){
            echo $odpowiedz;
        }else{
            if($ustawienia->zmienEmail($email))
                $odpowiedz .= 'Adres e-mail został zmieniony.<br />';
            else
                $odpowiedz .= 'Nie zmieniono adresu.<br />';
        }
    }
        
    echo $odpowiedz;


Dodam jeszcze, żę wszystkie metody użyte w tych instrukcjach warunkowych zwracają jedynie wartości logiczne
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 17:46:44
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Jeśli to:
Kod
if((!empty($haslo)) && ($stareHaslo !== $haslo)){...}

się wykona to to:
Kod
if((!empty($email)) && ($ustawienia->email !== $email)){...}

już się nie wykonuje i na odwrót.
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 19:01:25
Post #5





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Rzecz w tym, że ja to sprawdzałęm kilka(naście) razy.
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 19:29:09
Post #6





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Dosonale o tym wiem, że tak powinno być, ale tak nie jest!
Popre to co mówię przykładem:
$stareHaslo wpisuje poprane->wpisuje $hasło i $hasło2, wpisuje $email i $email2-> zatwierdzam
Wynik: Wykonuje się to co w pierwszym if(), potem jeśli to co w if(->dotyczącym hasel<-) się nie wykonuje to wykonuje się to co w if(->dotyczącym maila<-). Dane w polach $email i $email2 ciągle są takie same(AJAX).
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 19:56:31
Post #7





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Ajax nic nie psuje:/
Niestety wina jest gdzie indziej.
Proszę o pomoc bo już dzisiaj od rana siedze i patrze na to, kombinuje, ale ciągle to samo.:/
Go to the top of the page
+Quote Post
gcdreak
post 15.06.2009, 16:02:39
Post #8





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Nie jesteśmy ślepi, bo jeśli wyświetle sobie wszystkie przesłane dane to wszystko się zgadza.
Jeśli chodzi o wykorzystywane klasy to wszystkie użyte w nich metody, tak jak wcześniej napisałem, zwracają wartości logiczne. Pozatym te metody są wykorzystywane jedynie wako warunki w if().

Zaobserwowałem jeszcze jedną dziwną rzecz:
Jeśli zmienia się chasło to końcowa instrukcja echo wyświetla 'Hasło zostało zmienione.<br />' dwa razy;
Jeśli natomiast zmienia się e-mail to informacja o pomyślnym przebiegu wyświetla się raz.
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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 00:05