Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Złe odczytywanie "ifów"
JustHuman4
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


Witam. Mam mały problem z ifami. Otóż tworzę rejestrację i mam takie oto pola:
Nick
E-mail
Hasło
Powtórz hasło
Mam ifa sprawdzającego czy wszystkie pola zostały uzupełnione oraz ifa sprawdzającego czy podane hasła są takie same. Tak to wygląda:


  1. //po wciśnięciu przycisku "rejestruj"
  2. if(isset($_POST['submit']))
  3. {
  4. $nick = $_POST['nick'];
  5. $mail = $_POST['mail'];
  6. $pass = $_POST['pass'];
  7.  
  8.  
  9. if(empty($nick) || empty($mail) || empty($pass)) echo 'Nie wszystkie pola zostały uzupełnione.';
  10. if($_POST['pass'] != $_POST['pass2'])
  11. {
  12. die('Podane hasła nie są takie same.');
  13. }
  14. else
  15. {
  16. //dalsza część kodu


Ładnie sprawdza czy hasła są takie same czy też nie, jednak problem z tym, że nie trzeba wcale uzupełniać wszystkich pól. Czyli np po uzupełnieniu pól nick i e-mail wyświetla się komunikat
"Nie wszystkie pola zostały uzupełnione." (czyli dobrze) ale od razu po tym wyświetla się komunikat "Gratulacje! Utworzyłeś konto ........"
O co tu chodzi?

Z góry dziękuję za każdą pomoc
Pozdrawiam


Ten post edytował JustHuman4 27.12.2011, 11:43:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


If sprawdzający wypełnialność pól ma tylko i wyłącznie taki zasięg.
  1. if(empty($nick) || empty($mail) || empty($pass)) echo 'Nie wszystkie pola zostały uzupełnione.';

Podpowiedź: cały (CAŁY) kod pod nim się wykona. Nie ma bloku else, w którym wykonują się instrukcje jeśli pola zostaną wypełnione - instruke pod ifem wykonają się więc zawsze.
Go to the top of the page
+Quote Post
--kaem--
post
Post #3





Goście







Bo drugi if wykonuje się niezależnie od wyniku pierwszego ifa. W pierwszym ifie jeśli jest jakieś pole puste wyświetla odpowiedni komunikat, ale potem wykonuję się drugi warunek, w którym jeśli hasła są takie same wykona się to co jest w else.
Go to the top of the page
+Quote Post
JustHuman4
post
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


Problem jakby rozwiązany, zamieniłem po prostu kolejność ifów, Sprawdza i to i to, jest ładnie, tylko że kiedy nie podam takich samych haseł, usuwa mi się zawartość strony. Chodzi o to o czym powiedział @Shili ? Usunęło mi się kilka divów które znajdowały się na dole kodu strony. Jak temu zapobiec?

Pozdrawiam
Go to the top of the page
+Quote Post
dami95
post
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 3.10.2010

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


  1. die('Podane hasła nie są takie same.');

Ten kod zakańcza dalszą interpretację skryptu.

Ja zawszę sobie sprawdzam wszystkie elementy formularza i zależnie czy są błędy czy nie ma zmieniam zmienną $errors odpowiedio na wartość 1 lub 0.
W twoim przypadku zrobił bym tak:

  1. if(isset($_POST['submit'])) {
  2. $nick = $_POST['nick'];
  3. $mail = $_POST['mail'];
  4. $pass = $_POST['pass'];
  5.  
  6. $errors = 0;
  7.  
  8. if(empty($nick) || empty($mail) || empty($pass)) {
  9. echo 'Nie wszystkie pola zostały uzupełnione.';
  10. $errors = 1;
  11. } else {
  12. if($_POST['pass'] != $_POST['pass2']) {
  13. echo 'Podane hasła nie są takie same.';
  14. $errors = 1;
  15. }
  16. }
  17. }
  18.  
  19. if ($errors) {
  20. //dodajemy do bazy czy coś tam
  21. }


Ten post edytował dami95 27.12.2011, 19:37:02
Go to the top of the page
+Quote Post
JustHuman4
post
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


Cytat(dami95 @ 27.12.2011, 19:36:07 ) *
  1. die('Podane hasła nie są takie same.');

Ten kod zakańcza dalszą interpretację skryptu.

Ja zawszę sobie sprawdzam wszystkie elementy formularza i zależnie czy są błędy czy nie ma zmieniam zmienną $errors odpowiedio na wartość 1 lub 0.
W twoim przypadku zrobił bym tak:

  1. if(isset($_POST['submit'])) {
  2. $nick = $_POST['nick'];
  3. $mail = $_POST['mail'];
  4. $pass = $_POST['pass'];
  5.  
  6. $errors = 0;
  7.  
  8. if(empty($nick) || empty($mail) || empty($pass)) {
  9. echo 'Nie wszystkie pola zostały uzupełnione.';
  10. $errors = 1;
  11. } else {
  12. if($_POST['pass'] != $_POST['pass2']) {
  13. echo 'Podane hasła nie są takie same.';
  14. $errors = 1;
  15. }
  16. }
  17. }
  18.  
  19. if ($errors) {
  20. //dodajemy do bazy czy coś tam
  21. }


Wykrywa błąd w linijce
  1. $errors = 1;

za
  1. echo 'Nie wszystkie pola zostały uzupełnione.';


Pozdrawiam i dzięki za odpowiedź
Go to the top of the page
+Quote Post
kadlub
post
Post #7





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


zacznij to analizować od środka
  1. if(isset($_POST['submit'])) {
  2. $nick = $_POST['nick'];
  3. $mail = $_POST['mail'];
  4. $pass = $_POST['pass'];
  5.  
  6.  
  7.  
  8. if(!empty($nick) || !empty($mail) || !empty($pass)) {
  9.  
  10.  
  11. if($_POST['pass'] == $_POST['pass2']) {
  12. tutaj kod jak wszystkie warunki są spełnione
  13. }
  14. else {
  15. echo'hasła się nie zgadzają';
  16. }
  17. }
  18. else{
  19. echo'nie wypełniłeś wszystkich pól';
  20.  
  21. }
  22. }
  23.  


Ten post edytował kadlub 28.12.2011, 22:44:32
Go to the top of the page
+Quote Post
JustHuman4
post
Post #8





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


To co napisał kadlub jest w ogóle dziwne. Pomoże ktoś jeszcze z tym co napisał dami95?? Dlaczego wykrywa tam błąd?

Pozdrawiam
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie jest dziwne, tylko najprostszym sposobem. I poprawnie
Go to the top of the page
+Quote Post
JustHuman4
post
Post #10





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


Cytat(TursoN @ 29.12.2011, 17:19:04 ) *
Nie jest dziwne, tylko najprostszym sposobem. I poprawnie


Mam w takim razie taki kod:

  1. if(isset($_POST['submit']))
  2. {
  3. $nick = $_POST['nick'];
  4. $mail = $_POST['mail'];
  5. $pass = $_POST['pass'];
  6.  
  7.  
  8. if($_POST['pass'] != $_POST['pass2'])
  9. {
  10. die('Podane hasła nie są takie same.');
  11. }
  12. if(empty($nick) || empty($mail) || empty($pass)) echo 'Nie wszystkie pola zostały uzupełnione.';
  13. else
  14. {
  15.  
  16. $result = mysql_query("SELECT * FROM users WHERE nick='$nick'");
  17.  
  18. if(mysql_num_rows($result)!=0) echo 'Istnieje już konto z takim loginem.';
  19. else
  20. {
  21. $data = time();
  22.  
  23. $pass = md5($pass);
  24.  
  25. $query = "INSERT INTO `users` (`nick` , `pass`, `mail` , `data_rejestracji`) VALUES ('$nick', '$pass', '$mail' , '$data')";
  26.  
  27. if(mysql_query($query)) echo 'Gratulacje! Zostałeś poprawnie zarejestrowany. Już teraz możesz się <a href="index.php">zalogować</a>.';
  28. }
  29. }
  30. }

I gdzie to mam wstawić bo nie za bardzo wiem?

Pozdrawiam i dzięki za każdą pomoc
Go to the top of the page
+Quote Post
Fifi209
post
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jejku, użyj jakiegoś PDO bo na trimy, strip_tags etc patrzeć się nie da

W ogóle czemu HASŁO PRZECHOWUJESZ W POSTACI JAWNEJ?!
Go to the top of the page
+Quote Post
JustHuman4
post
Post #12





Grupa: Zarejestrowani
Postów: 63
Pomógł: 2
Dołączył: 10.12.2011
Skąd: Stumilowy Las

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


Fifi, daruj sobie tutaj takie rzeczy. Problem rozwiązany, temat do zamknięcia

Pozdrawiam i dzięki za nakierowanie
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.09.2025 - 22:13