Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dziwne zachowanie instrukcji IF()
Forum PHP.pl > Forum > Przedszkole
gcdreak
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?
patryczakowy
a co masz w bloku try
gcdreak
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
gcdreak
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.
gcdreak
Rzecz w tym, że ja to sprawdzałęm kilka(naście) razy.
gcdreak
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).
gcdreak
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.:/
gcdreak
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.
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.