Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] System rejestracji - problemy z mysql
Forum PHP.pl > Forum > Przedszkole
Hikamare
Pobrałem sobie gotowy projekt systemu rejestracji, wrzuciłem go na serwer, ustawiłem pod swoje zmienne, etc.. Jednak po wypełnieniu formularza wyskakuje mi szereg błędów na temat połączeń z my_sql (o ile dobrze zrozumiałem). W innych skryptach nie zauważyłem problemów z połączeniem się z bazą.

<- oto błędy.

  1. <?php
  2.  
  3. session_start(); // rozpoczęcie sesji
  4.  
  5. function connect() {
  6. // serwer
  7. $mysql_server = "localhost";
  8. // admin
  9. $mysql_admin = "musicdwa_db";
  10. // hasło
  11. $mysql_pass = "pIjaOO";
  12. // nazwa baza
  13. $mysql_db = "musicdwa_db";
  14. // nawiązujemy połączenie z serwerem MySQL
  15. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  16. or die('Brak połączenia z serwerem MySQL.');
  17. // łączymy się z bazą danych
  18. @mysql_select_db($mysql_db)
  19. or die('Błąd wyboru bazy danych.');
  20. }
  21.  
  22. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  23.  
  24. connect();; // połączenie się z bazą danych
  25. $tabela = 'users'; // zdefiniowanie tabeli MySQL
  26. require_once('recaptchalib.php'); // dołączenie modułu reCAPTCHA
  27. $privatekey = '6LdFpMwSAAAAAAXRTwWOMABUgklG5bmUwckLKZJI'; // prywatny klucz reCAPTCHA
  28. $publickey = '6LdFpMwSAAAAAArW2ZVIyIxAeUkvdvo-_7LME5jx'; // publiczny klucz reCAPTCHA
  29.  
  30. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  31.  
  32. // filtrowanie treści wprowadzonych przez użytkownika
  33. $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);
  34. $haslo = $_POST["haslo"];
  35. $haslo2 = $_POST["haslo2"];
  36. $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
  37. $email2 = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email2"]))), ENT_QUOTES);
  38. $resp = recaptcha_check_answer ($privatekey,
  39. $_SERVER["REMOTE_ADDR"],
  40. $_POST["recaptcha_challenge_field"],
  41. $_POST["recaptcha_response_field"]);
  42.  
  43. // system sprawdza czy prawidło zostały wprowadzone dane
  44. if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
  45. $blad++;
  46. echo '<p>Proszę poprawny wprowadzić login (od 3 do 30 znaków).</p>';
  47. } else {
  48. $wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
  49. if (mysql_num_rows($wynik) <> 0) {
  50. $blad++;
  51. echo '<p>Podana nazwa użytkownika została już zajęta.</p>';
  52. }
  53. }
  54. if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
  55. $blad++;
  56. echo '<p>Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków). </p>';
  57. }
  58. if ($haslo !== $haslo2) {
  59. $blad++;
  60. echo '<p> Podane hasła nie są ze sobą zgodne. </p>';
  61. }
  62. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  63. $blad++;
  64. echo '<p> Proszę wprowadzić poprawnie adres email.</p>';
  65. } else {
  66. $wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
  67. if (mysql_num_rows($wynik) <> 0) {
  68. $blad++;
  69. echo '<p> Podany adres e-mail jest już zajęty.</p>';
  70. }
  71. }
  72. if ($email !== $email2) {
  73. $blad++;
  74. echo '<p> Podane adresy e-mail nie są ze sobą zgodne.</p>';
  75. }
  76. if (!$resp->is_valid) {
  77. $error = $resp->error;
  78. echo '<p>Proszę wpisać poprawnie wyrazy z obrazka.</p>';
  79. $blad++;
  80. }
  81.  
  82. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  83. if ($blad == 0) {
  84.  
  85. $haslo = md5($haslo); // zaszyfrowanie hasla
  86. $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika
  87.  
  88. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  89. if ($wynik) {
  90. $list = "Witaj $login !
  91. Kliknij w poniższy link, aby aktywować swoje konto. <a href="http://www.music-dwarf.xaa.pl/verify.php?weryfikacja=potwierdz&amp;kod=$kod&quot;;" target="_blank">http://www.music-dwarf.xaa.pl/verify.php?w...#036;kod";</a>
  92. mail($email, "Rejestracja użytkownika", $list, "From: <support@music-dwarf.xaa.pl>");
  93. echo '<p>Dziękujemy za rejestrację! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z dalszymi wskazówkami rejestracji.</p>';
  94. mysql_close($polaczenie);
  95. }
  96. }
  97.  
  98. }
  99.  
  100. // tworzenie formularza HTML
  101. echo <<< KONIEC
  102.  
  103.   <form action="registry.php" method="post">
  104.   <input type="hidden" name="wyslane" value="TRUE" />
  105.  
  106.   <p>Login*: <input type="text" name="login" /></p>
  107.   <p>Has&#322o*: <input type="password" name="haslo" /></p>
  108.   <p>Powt&#243rz has&#322o*: <input type="password" name="haslo2" /></p>
  109.   <p>Adres e-mail*: <input type="text" name="email" /></p>
  110.   <p>Powt&#243rz adres e-mail*: <input type="text" name="email2" /></p>
  111. KONIEC;
  112.  
  113. echo recaptcha_get_html($publickey); // wyświetlanie reCAPTCHA
  114. echo <<< KONIEC
  115.  
  116.   <p><input type="submit" value="wy&#347lij" /></p></form>
  117. KONIEC;
  118.  
  119. } else {
  120. header('Location: / '); // zalogowany użytkownik zostaje przekierowany na stronę główną
  121. }
  122.  
  123. ?>

Kod rejestracji.

Tak, wiem, że niepotrzebne jest tam użycie funkcji connect, jednak myślałem, że skrypt po prostu nie łapie funkcji include, albo coś takiego, więc postanowiłem spróbować i tego. Tonący brzytwy się chwyta, prawda smile.gif ?
Niktoś
Nie wiem czy to rozwiąże Twój problem,ale jak zamykasz połączenie to najpierw musisz je zainicjować.Czym jest:
mysql_close($polaczenie);-nie widziałem ,żebyś użył gdzieś wcześniej zmiennej $połączenie.
Może w linii 24 zrób tak:
$połączenie=connect();
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.