gcdreak
14.06.2009, 16:40:41
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
14.06.2009, 16:41:53
a co masz w bloku try
gcdreak
14.06.2009, 17:22:00
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
14.06.2009, 17:46:44
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
14.06.2009, 19:01:25
Rzecz w tym, że ja to sprawdzałęm kilka(naście) razy.
gcdreak
14.06.2009, 19:29:09
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
14.06.2009, 19:56:31
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
15.06.2009, 16:02:39
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.