Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Formularz rejestracyjny
ghastblood
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Witam!
Mam taki problem ze gdy uzupełnię wszystkie pola w formularz wyskakuje mi napis "Nie uzupełniono wszystkich pól" gdzie mogłem zrobić błąd
Pozdrawiam dopiero się uczę
  1. <?php
  2. require_once "conn.php";
  3.  
  4. echo "<form acton='index.php' method='POST'>";
  5. echo "Login: <input type='text' name='login'><br>";
  6. echo "Haslo: <input type='text' name='haslo'><br>";
  7. echo "Powtorz Haslo: <input type='text' name='haslo1'><br>";
  8. echo "Email: <input type='text' name='email'><br>";
  9. echo "<input type='submit' value='Zarejestruj'><br>";
  10. if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["email"]) ) { //sprawdza czy wszystkie pola zostaly uzupelnione
  11. if(mysql_num_rows(mysql_query("SELECT * FROM users where user_login='".htmlspecialchars($_POST['login'])."'"))) { //sprawdz czy nie istniej juz ktos o takim loginie
  12. echo "Uzytkownik o podanym loginie juz istnieje";
  13. if($_POST['haslo'] == $_POST['haslo1']){ //sprawdza czy hasla sa takie same
  14. mysql_query("INSERT INTO users VALUES(NULL, '".htmlspecialchars($_POST['login'])."', '".htmlspecialchars($_POST['haslo'])."', '".htmlspecialchars($_POST['email'])."')"); //dodaje uzytkownia do bazy danych
  15. echo "Rejestracja zakonczona sukcesem";
  16. } else {
  17. echo "Hasla nie pasuja do siebie";
  18. }
  19. } else echo "Nie uzupelniono wszystkich pol";
  20. }
  21. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
neuroine
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 3
Dołączył: 6.05.2009

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


bo masz w If
  1. (!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["email"]) )
Co oznacze że jeśli wypełnisz wszystkie pola zwraca TRUE, a tobie chodzi o odwrotny efekt

I taka moja sugestia porównanie hasła z pierwszego i drugiego pola jest również potrzebne.

  1. if(empty($_POST["login"]) || empty($_POST["haslo"]) || empty($_POST["email"]) ){// }
Go to the top of the page
+Quote Post
outsider
post
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


poniewaz ten komunikat pojawia sie gdy w bazie jest juz rekord o user_login=$_POST['login'], dokladnie chodzi o linijke 11 w kodzie. Wpisz inny login.

Masz tu dobry kod:

  1. <?php
  2. require_once "conn.php";
  3.  
  4. echo "<form acton='index.php' method='POST'>";
  5. echo "Login: <input type='text' name='login'><br>";
  6. echo "Haslo: <input type='text' name='haslo'><br>";
  7. echo "Powtorz Haslo: <input type='text' name='haslo1'><br>";
  8. echo "Email: <input type='text' name='email'><br>";
  9. echo "<input type='submit' value='Zarejestruj'><br>";
  10. if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["email"]) ) { //sprawdza czy wszystkie pola zostaly uzupelnione
  11. if(mysql_num_rows(mysql_query("SELECT * FROM users where user_login='".htmlspecialchars($_POST['login'])."'"))) { //sprawdz czy nie istniej juz ktos o takim loginie
  12. echo "Uzytkownik o podanym loginie juz istnieje";
  13. if($_POST['haslo'] == $_POST['haslo1']){ //sprawdza czy hasla sa takie same
  14. mysql_query("INSERT INTO users VALUES(NULL, '".htmlspecialchars($_POST['login'])."', '".htmlspecialchars($_POST['haslo'])."', '".htmlspecialchars($_POST['email'])."')"); //dodaje uzytkownia do bazy danych
  15. echo "Rejestracja zakonczona sukcesem";
  16. } else {
  17. echo "Hasla nie pasuja do siebie";
  18. }
  19. } else echo "Konto o tym loginie juz istnieje";
  20. } else echo "Nie uzupelniono wszystkich pol";
  21. ?>
Go to the top of the page
+Quote Post
ghastblood
post
Post #4





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Niestety jest kolejny problem z "Konto o tym loginie juz istnieje"
domyślam się że gdzieś jest błędny warunek ale nie mogę znaleźć gdzie.
Mam jeszcze pytanie w jaki sposób mogę zabezpieczyć formularz, zablokować niektóre znaki albo coś innego.
  1. <?php
  2. require_once "conn.php";
  3.  
  4. echo "<form acton='index.php' method='POST'>";
  5. echo "Login: <input type='text' name='login'><br>";
  6. echo "Haslo: <input type='text' name='haslo'><br>";
  7. echo "Powtorz Haslo: <input type='text' name='haslo1'><br>";
  8. echo "Email: <input type='text' name='email'><br>";
  9. echo "<input type='submit' value='Zarejestruj'><br>";
  10. if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["haslo1"]) &&!empty($_POST["email"]) ) { //sprawdza czy wszystkie pola zostaly uzupelnione
  11. if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'")))) { //sprawdz czy nie istniej juz ktos o takim loginie
  12. if($_POST['haslo'] == $_POST['haslo1']){ //sprawdza czy hasla sa takie same
  13. mysql_query("INSERT INTO users VALUES(NULL, '".htmlspecialchars($_POST['login'])."', '".htmlspecialchars($_POST['haslo'])."', '".htmlspecialchars($_POST['email'])."')"); //dodaje uzytkownia do bazy danych
  14. echo "Rejestracja zakonczona sukcesem<br>";
  15. } else echo "Hasla nie pasuja do siebie<br>";
  16. } else echo "Konto o tym loginie juz istnieje";
  17. } else echo "Nie uzupelniono wszystkich pol<br>";
  18. ?>


Ten post edytował ghastblood 6.07.2010, 19:19:32
Go to the top of the page
+Quote Post
outsider
post
Post #5





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


Przy kazdym zapytaniu do bazy, musisz sie zabezpieczyc przed atakiem, musisz kazda zmienna wykorzystywana w zapytaniu przefiltrowac funkcja mysql_real_escape_string

  1. mysql_query("INSERT INTO users VALUES(NULL, '".mysql_real_escape_string(htmlspecialchars($_POST['login']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['haslo']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['email']))."')");


a jesli zmienna musi miec wartosc liczbowa, calkowita, to uzywasz zamiast mysql_real_escape_string funkcji int_val(), np.


  1. mysql_query("SELECT * FROM tablea WHERE id =".int_val($_GET['id']));
lub
  1. mysql_query("SELECT * FROM tablea WHERE id =".(int)$_GET['id']);


Ten post edytował *OuTSideR* 7.07.2010, 09:37:52
Go to the top of the page
+Quote Post
ghastblood
post
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


A co z problemem ze sprawdzeniem czy dany login już istnieje gdzieś w warunki jest błąd. Ale mogę go znaleźć.

Pozdrawiam
Go to the top of the page
+Quote Post
outsider
post
Post #7





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


tylko ten warunek zmien:
  1. <?php
  2. if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))) < 1)
  3. ?>


mniejsze od 1, poniewaz ten kod ma byc wykonany jesli nie znaleziono rekordu (czyli login nie istnieje), w przeciwnym wypadku (login istnieje) wyskakuje komunikat. I nie zapomnij zabezpieczyc tego zapytania funkcja ktora podalem we wczesniejszym poscie.

Ten post edytował *OuTSideR* 7.07.2010, 13:42:24
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: 14.09.2025 - 18:50