Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt rejestracji+formularz błędy
Forum PHP.pl > Forum > PHP
Sob0l3k
Witam dopiero zacząłem uczyć się php i stworzyłem o to skrypt php + formularz.Działa bo zapisuje zarejestrowanych userów do bazy ,ale mam problem ze sprawdzaniem czy pola zostały wypełnione przez warunek empty.Po drugie chciałem zrobić coś takiego że sprawdza czy dany user istnieje już w bazie ale coś pokręciłem proszę o sprawdzenie poprawienie i wytłumaczenie błędów,

  1. <!DOCTYPE html>
  2. <HEAD>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>Rejestracja testowa</title>
  5. </HEAD>
  6. <style type="text/css">
  7. body {
  8. background-color: 008B8B#
  9. }
  10. <DIV ALIGN="CENTER">
  11. Pole oznaczone <font color="red">*</font> są obowiązkowe
  12. <form action="register.php" method="POST">
  13. Login: <input type="text" name="login" />
  14. <br>
  15. Hasło: <input type="password" name="pass" />
  16. <br>
  17. Potwórz hasło: <input type="password" name="pass2" />
  18. <br>
  19. Imie: <input type="text" name="imie" />
  20. <br>
  21. Nazwisko: <input type="text" name="nazwisko" />
  22. <br>
  23. <!-- next to skrypt php -->
  24. <input type="submit" name="next" value="ok" />
  25. </form>
  26. </DIV>
  27. </body>
  28. </html>


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Rejestracja testowa</title>
  6. </head>
  7. <body>
  8. <?php
  9. //icnlude to mysql.php
  10. //include('mysql.php');
  11. //fuctions mysql
  12. mysql_connect('mysql3.ugu.pl', 'db584157', 'viper5') or die(mysql_error());
  13. mysql_select_db('db584157') or die('nie udało się połączyć z bazą danych'.mysql_error());
  14. //pobieramy dane zmienne
  15. $login = $_POST['login'];
  16. $password_users = md5($_POST['pass']);
  17. $password_retry = $_POST['pass2'];
  18. $imie = $_POST['imie'];
  19. $nazwisko = $_POST['nazwisko'];
  20. //warunki
  21. $next = $_POST['ok'];
  22. //jesli nacisnie guzik to...
  23. if(isset($next)) {
  24. //sprawdz czy wszystkie pola zostaly wypelnione
  25. if(empty($login) || empty($password_users) || empty($imie) || empty($nazwisko))
  26. echo 'nie wypełniono wszystkich pól'; }
  27. //Sprawdz czy hasla sie zgadzaja
  28. else if($password_users != $password_retry) {
  29. echo 'podane hasla sie nie zgadzaja';
  30. }
  31. //wykonujemy zapytania
  32. $adres_ip = $_SERVER['REMOTE_ADDR'];
  33. $data = date('Y-m-d');
  34. $zapytanie = mysql_query("INSERT INTO `register_users` VALUES('".$login."', '".$password_users."', '".$imie."', '".$nazwisko."', '".$adres_ip."', '".$data."')");
  35. //sprawdz czy w bazie jest user o podanym loginie
  36. $query = mysql_query("SELECT * FEOM `register_users` WHERE login = '$login'");
  37. //zwroc zapytanie
  38. if(mysql_num_rows($query))
  39. {
  40. echo 'podany login już istnieje w bazie';
  41. }
  42. else if($zapytanie)
  43. {
  44. echo "Rejestracja udana w dniu $data";
  45. }
  46. //zakonczamy polaczenie
  47. ?>
  48. </body>
  49. </html>
bzeebzee
Czy użytkownika istnieje możesz sprawdzić przy pomocy zapytania.
  1. $query = mysql_query("SELECT * FROM register_users WHERE username ='".$_POST['username']."'");
  2. IF(mysql_num_rows($query))
  3. // wykonanie dodawania nowego uzytkownika
Sob0l3k
No ok ale co z tym warunkiem empty nie działa mi mogę nic nie wpisać w pola i tak dodaje zapytania do bazy.
crocodillo
Po pierwsze to wykasuj dane do zalogowania z pierwszego postu. Takich rzeczy nie powinieneś pokazywać, pewnie zaraz znajdzie się jakiś czubek, co to wykorzysta

$next = $_POST['ok'];

powinno być

$next = $_POST['next'];
Methestel
Kilka rad na szybko:
1) Nie wklejaj na forum dostępu do bazy danych!
2) Dopiero zaczynasz przygodę z PHP dlatego polecam na początku każdego skryptu wywołac dwie metody:
  1. ini_set("display_errors", 1);

3) Przed wykorzystaniem tablicy $_POST zawsze upewnij się czy klucz tablicy istnieje.
  1. $login = $_POST['login']; //dostaniesz ostrzeżenie jeśli zmienna $_POST['login'] nie będzie zdefiniowana. W momencie wywałania tego przypisania powinieneś byc jeż pewien że zmienna $_POST['login'] jest zdefiniowana.

4) Poczytaj o SQL Injection
5) W ostatnim zapytaniu do bazy danych masz błąd: zamiast "FROM" masz "FEOM"

Na przyszłość polecam zacząć używać PDO
modern-web
Niech chłopak zacznie od mysqli; pdo to bardziej skomplikowana sprawa dla kogoś, kto jak sam mówisz 'dopiero zaczyna'.

I temat powinien trafić do Przedszkola...
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.