Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Formularz rejestracji - połączenie z mysql
Forum PHP.pl > Forum > Przedszkole
envoray
Witam, posługując się tutorialem z w3schools napisałem taki formularz:
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  2. Imię: <input type="text" name="name" value="<?php echo $name;?>">
  3. <span class="error">* <?php echo $nameErr;?></span><br><br>
  4.  
  5. Nazwa użytkownika: <input type="text" name="username" value="<?php echo $username;?>">
  6. <span class="error">* <?php echo $usernameErr;?></span><br><br>
  7.  
  8. Mail: <input type="text" name="email" value="<?php echo $email;?>">
  9. <span class="error">* <?php echo $emailErr;?></span><br><br>
  10.  
  11. Hasło: <input type="password" name="password" value="<?php echo $password;?>">
  12. <span class="error">* <?php echo $passwordErr;?></span><br><br>
  13. <input type="submit" name="submit" value="Potwierdź">
  14. </form>

oraz poniższy skrypt php do niego:
  1. <?php
  2. // define variables and set to empty values
  3. $name = $username = $email = $password = "";
  4. $nameErr = $usernameErr = $emailErr = $passwordErr = "";
  5.  
  6. if ($_SERVER["REQUEST_METHOD"] == "POST")
  7. {
  8. if (empty($_POST["name"]))
  9. {$nameErr = "Imię jest wymagane!";}
  10. else
  11. {
  12. $name = test_input($_POST["name"]);
  13. if (!preg_match("/^[a-zA-ZążśźęćńółĄŻŚŹĘĆŃÓŁ]*$/u",$name))
  14. {$nameErr = "Niepoprawne imię, tylko litery są dozwolone"; }
  15. }
  16.  
  17. if (empty($_POST["username"]))
  18. {$usernameErr = "Nazwa użytkownika jest wymagana!";}
  19. else
  20. {$username = test_input($_POST["username"]);}
  21.  
  22. if (empty($_POST["email"]))
  23. {$emailErr = "Mail jest wymagany!";}
  24. else
  25. {
  26. $email = test_input($_POST["email"]);
  27. if (!filter_var($email, FILTER_VALIDATE_EMAIL))
  28. {$emailErr = "Niepoprawny mail";}
  29. }
  30.  
  31. if (empty($_POST["password"]))
  32. {$passwordErr = "Hasło jest wymagane!";}
  33. else
  34. {$password = test_input($_POST["password"]);}
  35. }
  36.  
  37. function test_input($data)
  38. {
  39. $data = trim($data);
  40. $data = stripslashes($data);
  41. $data = htmlspecialchars($data);
  42. return $data;
  43. }
  44.  
  45. ?>

To wszystko powyżej działa elegancko, obsługa błędów poprawnie wyrzuca errory itp. Problem w tym, że niestety nie było nic napisane jak wysłać to wszystko na serwer. Próbowałem dopisać potrzebny kod w oparciu o gotowy skrypt znaleziony na forum ale jako że jestem początkujący w php/mysql niestety nic z tego nie wyszło.
Prosiłbym o pomoc w poprawieniu kodu żebym mógł tworzyć konta na serwerze.

Poniżej moja niedziałająca wersja, po kliknięciu wyślij w formularzu dostaje błąd:
"Wystąpił błąd i nie udało się zarejestrować użytkownika."
  1. <?php
  2. require_once "connect.php"; //dane do serwera
  3.  
  4. $polaczenie = @new mysqli($host,$user,$pass,$name);
  5.  
  6. if($polaczenie->connect_errno!=0)
  7. {
  8. echo "Error: ".$polaczenie->connect_errno;
  9. }
  10.  
  11.  
  12. // define variables and set to empty values
  13. $name = $username = $email = $password = "";
  14. $nameErr = $usernameErr = $emailErr = $passwordErr = "";
  15.  
  16. if ($_SERVER["REQUEST_METHOD"] == "POST")
  17. {
  18. if (empty($_POST["name"]))
  19. {$nameErr = "Imię jest wymagane!";}
  20. else
  21. {
  22. $name = test_input($_POST["name"]);
  23. if (!preg_match("/^[a-zA-ZążśźęćńółĄŻŚŹĘĆŃÓŁ]*$/u",$name))
  24. {$nameErr = "Niepoprawne imię, tylko litery są dozwolone"; }
  25. }
  26.  
  27. if (empty($_POST["username"]))
  28. {$usernameErr = "Nazwa użytkownika jest wymagana!";}
  29. else
  30. {$username = test_input($_POST["username"]);}
  31.  
  32. if (empty($_POST["email"]))
  33. {$emailErr = "Mail jest wymagany!";}
  34. else
  35. {
  36. $email = test_input($_POST["email"]);
  37. if (!filter_var($email, FILTER_VALIDATE_EMAIL))
  38. {$emailErr = "Niepoprawny mail";}
  39. }
  40.  
  41. if (empty($_POST["password"]))
  42. {$passwordErr = "Hasło jest wymagane!";}
  43. else
  44. {$password = test_input($_POST["password"]);}
  45.  
  46.  
  47. $existsLogin = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE username='$username' LIMIT 1"));
  48. $errors = '';
  49.  
  50. if ($existsLogin[0] >= 1) $errors .= 'Nazwa użytkownika jest już zajęta<br />';
  51.  
  52. if ($errors != '')
  53. {
  54. echo '<p class="error">Rejestracja nie powiodła się: <br />'.$errors.'</p>';
  55. }
  56. else
  57. {
  58. mysql_query("INSERT INTO users (name, username, email, password) VALUES('$name','$username','$email','$password');") or die ('<p class="error">Wystąpił błąd i nie udało się zarejestrować użytkownika.</p>');
  59.  
  60. echo '<p class="success">Konto pomyślnie założone. Możesz teraz się zalogować</p>';
  61. }
  62. }
  63.  
  64. function test_input($data)
  65. {
  66. $data = trim($data);
  67. $data = stripslashes($data);
  68. $data = htmlspecialchars($data);
  69. return $data;
  70. }
  71.  
  72. $polaczenie->close();
  73. ?>
bobek358
Łączysz się z bazą przez mysqli a używasz mysql_query. Tak się nie robi. Poprawnie:

  1. $result = $polaczenie -> query('SELECT * FROM tabela');


Zrób sobie
  1. echo "INSERT INTO users (name, username, email, password) VALUES('$name','$username','$email','$password');"
i wklej w phpMA i będziesz wszystko wiedział.
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.