Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z rejestrowaniem się
Forum PHP.pl > Forum > PHP
madik
Witam
Wyskakują mi błędy
http://www.obserwacje.scz.pl/obserwacje/rejestracja.php
I to że "spróbuj jeszcze raz i nie chce się zarejestrować. Co zrobić?
Kod dla rejestracja.php
  1. <?php
  2. include "naglowek.php"; include "conect_mysql.php"
  3. ?>
  4. <html>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Zarejestruj się!</title>
  7.  
  8. </html>
  9. <?php
  10. if (isset($_POST['submit'])){ //Obsłuż formularz
  11. //zarejestruj się w bazie danych
  12. //utwórz funkcję znaków specjalnych
  13. function escape_data ($data){
  14. global $dbc; // Potrzebujemy połączenia.
  15. if (ini_get('magic_quotes_gpc')) {
  16. $data = stripslashes ($data);
  17. }
  18. return mysql_real_escape_string($data, $dbc);
  19. } //konic funkcji
  20. $message = NULL; //utwórz nową,pustą zmienną.
  21. //Sprawdź imię
  22. if (empty($_POST['first_name'])) {
  23. $fn = FALSE;
  24. $message .= '<p>Zapomniałeś podać swoje imię!</p>';
  25. } else {
  26. $fn = escape_data($_POST['first_name']);
  27. }
  28. //Sprawdź nazwisko.
  29. if (empty($_POST['last_name'])) {
  30. $ln = FALSE;
  31. $message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
  32. } else {
  33. $ln = escape_data($_POST['last_name']);
  34. }
  35. //Sprawdź adres e-mail
  36. if (empty($_POST['email'])) {
  37. $e = FALSE;
  38. $message .= '<p>Zapomniałeś podać swój adres e-mail!</p>';
  39. } else {
  40. $e = escape_data($_POST['email']);
  41. }
  42. //Sprawdź nazwę użytkownika
  43. if (empty($_POST['username'])) {
  44. $u = FALSE;
  45. $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika</p>';
  46. } else {
  47. $u = escape_data($_POST['username']);
  48. }
  49. //Sprawdź hasło i potwierdzenie
  50. if (empty($_POST['password1'])) {
  51. $p = FALSE;
  52. $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  53. } else {
  54. if ($_POST['password1'] == $_POST['password2']) {
  55. $p = escape_data($_POST['password1']);
  56. } else {
  57. $p = FALSE;
  58. $message .= '<p>Za drugim razem wpisałeś inne hasło!</p>';
  59. }
  60. }
  61. if ($fn && $ln && $e && $u && $p) { //jeżeli wszystko ok.
  62. $query = "SELECT user_id FROM users WHERE username= '$u'";
  63. $result = @mysql_query ($query); //Wykonaj zapytanie.
  64. if (mysql_num_rows ($reult) == 0) {
  65. //Utwórz zapytanie
  66. $query = "INSERT INTO users (username, first_name, last_name, email, password, registration_date) VALUES ('$u', '$fn', '$ln', '$e', PASSWORD('$p'), NOW () )";
  67. $result = @mysql_query ($query);//WYKONAJ zapytanie
  68. if ($result) {//JEŻELI zostało wykonane bez przeszkód
  69. //WYŚLIJ MAILA JEŚLI POTRZEBA
  70. echo '<p><b>Zostałeś zarejestrowany!</b></p>';
  71. exit(); //OPUŚĆ skrypt
  72. } else { //JEŻELI zapytanie nie zostało wykonane.
  73. $message = '<p> Nie zostałeś zarejestrowany z powodu awarii naszego systemu. Przepraszamy za kłopot.</p><p> .mysql_error().</p>';
  74. }
  75. } else {
  76. $message = '<p>Ktoś wybrał już sobie tę nazwę użytkownika.</p>';
  77. }
  78. mysql_close(); //zamknij połączenie z bazą danych
  79. } else {
  80. $message .= '<p>Spróbuj jeszcze raz.</p>';
  81. }
  82. } // KONIEC głównego wyrażenia SUBMIT
  83. //JEŻELI JESZCZE JAKIŚ BŁĄD
  84. if (isset ($message)) {
  85. echo '<font color= "red">',$message, '</font>';
  86. }
  87. ?>
  88. <html>
  89. <form action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  90. <fieldset><legend>Wprowadź do poniższego formularza informacje na swój temat aby uzyskać dostęp do gier:</legend>
  91. <p><b>Imię:</b><input type= "text" name= "first_name" size="15" maxlength="15" value="<?php if (isset($_POST['first_name'])) echo $_POST['first_name'];?>"/></p>
  92. <p><b>Nazwisko:</b><input type="text" name="last_name" size="20" maxlength="40" value="<?php if (isset($_POST['last_name'])) echo $_POST['last_name'];?>"/></p>
  93.  
  94. <p><b>Adres e-mail:</b><input type="text" name="email" size="40" maxlength="60" value="<?php if (isset($_POST['email'])) echo $_POST['email'];?>"/></p>
  95.  
  96. <p><b>Nazwa użytkownika:</b><input type="text" name="username" size="20" maxlength="40" value="<?php if (isset($_POST['username'])) echo $_POST['username'];?>"/></p>
  97. <p><b>Hasło:</b><input type="password" name="password1" size="20" maxlength="40" /></p>
  98. <p><b>Potwierdź hasło:</b><input type="password" name="password2" size="20" maxlength="40" /></p>
  99. </fieldset>
  100. <div align="center"<input type="submit" name="submit" value="Wyślij dane"/></div>
  101. </form>


Dla conect_mysql.php (zamazałem hasła :-))
  1. $user = 'XXXX';
  2. $password = 'XXX';
  3. $database = 'XX';
  4.  
  5. mysql_connect('localhost', $user, $password);
  6. @mysql_select_db($database) or die("Nie udalo sie wybrac bazy danych:". mysql_error());
darko
w funkcji escape_data daj print_r($dbc); i napisz co widzisz (pewnie nic) upewnij się, że zmienna ta jest !is_null, opcjonalnie w return mysql_real_escape_string($data, $dbc); podaj tylko pierwszy argument do funkcji, czyli return mysql_real_escape_string($data); gdyż ten drugi jest opcjonalny i wygląda na to, że jest null.
madik
Ok,dzięki już ta część działa. Teraz wyświetla Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /obserwacje/rejestracja.php on line 64
Niby z mojej książki do php powinno działać a tu nic. Żeby nie było w 64 linijce jest $result.
Dzięki Darko za szybką i trafną odpowiedź
darko
linia 64: if (mysql_num_rows ($reult) == 0) { to nie to samo co: if (mysql_num_rows ($result) == 0) {
madik
Napisałem wcześniej:
"Żeby nie było w 64 linijce jest $result."
darko
ok, to echo $query oraz print_r($result); (ale usuń wcześniej tłumienie przed mysql_query) najlepiej byłoby
  1. mysql_query($query) or die(mysql_error());


linia 63 tuż przed błędem
zamień na

  1. $res = mysql_query($query);
  2. if(!$res) {
  3. echo "<br />\$query: ".$query."<br />mysql error: ".mysql_error());
  4. }


// i napisz co widzisz winksmiley.jpg
madik
Poczekaj bo trochę się pogubiłem... Co mam zrobić z echo $query oraz print_r($result) ? Jak coś to w której linijce

Mam coś takiego:
  1. <?php
  2. include "naglowek.php"; include "conect_mysql.php"
  3. ?>
  4. <html>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Zarejestruj się!</title>
  7.  
  8. </html>
  9. <?php
  10. if (isset($_POST['submit'])){ //Obsłuż formularz
  11. //zarejestruj się w bazie danych
  12. //utwórz funkcję znaków specjalnych
  13. function escape_data ($data){
  14. global $dbc; // Potrzebujemy połączenia.
  15. if (ini_get('magic_quotes_gpc')) {
  16. $data = stripslashes ($data);
  17. }
  18. return mysql_real_escape_string($data);
  19. } //konic funkcji
  20. $message = NULL; //utwórz nową,pustą zmienną.
  21. //Sprawdź imię
  22. if (empty($_POST['first_name'])) {
  23. $fn = FALSE;
  24. $message .= '<p>Zapomniałeś podać swoje imię!</p>';
  25. } else {
  26. $fn = escape_data($_POST['first_name']);
  27. }
  28. //Sprawdź nazwisko.
  29. if (empty($_POST['last_name'])) {
  30. $ln = FALSE;
  31. $message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
  32. } else {
  33. $ln = escape_data($_POST['last_name']);
  34. }
  35. //Sprawdź adres e-mail
  36. if (empty($_POST['email'])) {
  37. $e = FALSE;
  38. $message .= '<p>Zapomniałeś podać swój adres e-mail!</p>';
  39. } else {
  40. $e = escape_data($_POST['email']);
  41. }
  42. //Sprawdź nazwę użytkownika
  43. if (empty($_POST['username'])) {
  44. $u = FALSE;
  45. $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika</p>';
  46. } else {
  47. $u = escape_data($_POST['username']);
  48. }
  49. //Sprawdź hasło i potwierdzenie
  50. if (empty($_POST['password1'])) {
  51. $p = FALSE;
  52. $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  53. } else {
  54. if ($_POST['password1'] == $_POST['password2']) {
  55. $p = escape_data($_POST['password1']);
  56. } else {
  57. $p = FALSE;
  58. $message .= '<p>Za drugim razem wpisałeś inne hasło!</p>';
  59. }
  60. }
  61. if ($fn && $ln && $e && $u && $p) { //jeżeli wszystko ok.
  62. $query = "SELECT user_id FROM users WHERE username= '$u'";
  63. $result = @mysql_query ($query); //Wykonaj zapytanie.
  64.  
  65. $res = mysql_query($query);
  66.  
  67. if(!$res) {
  68.  
  69. echo "<br />\$query: ".$query.'<br />mysql error: '.mysql_error());
  70.  
  71.  
  72. }
  73. if (mysql_num_rows ($result) == 0) {
  74.  
  75. //Utwórz zapytanie
  76. $query = "INSERT INTO users (username, first_name, last_name, email, password, registration_date) VALUES ('$u', '$fn', '$ln', '$e', PASSWORD('$p'), NOW () )";
  77. $result = @mysql_query ($query);//WYKONAJ zapytanie
  78. if ($result) {//JEŻELI zostało wykonane bez przeszkód
  79. //WYŚLIJ MAILA JEŚLI POTRZEBA
  80. echo '<p><b>Zostałeś zarejestrowany!</b></p>';
  81. exit(); //OPUŚĆ skrypt
  82. } else { //JEŻELI zapytanie nie zostało wykonane.
  83. $message = '<p> Nie zostałeś zarejestrowany z powodu awarii naszego systemu. Przepraszamy za kłopot.</p><p> .mysql_error().</p>';
  84. }
  85. } else {
  86. $message = '<p>Ktoś wybrał już sobie tę nazwę użytkownika.</p>';
  87. }
  88. mysql_close(); //zamknij połączenie z bazą danych
  89. } else {
  90. $message .= '<p>Spróbuj jeszcze raz.</p>';
  91. }
  92. } // KONIEC głównego wyrażenia SUBMIT
  93. //JEŻELI JESZCZE JAKIŚ BŁĄD
  94. if (isset ($message)) {
  95. echo '<font color= "red">',$message, '</font>';
  96. }
  97. ?>
  98. <html>
  99. <form action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  100. <fieldset><legend>Wprowadź do poniższego formularza informacje na swój temat aby uzyskać dostęp do gier:</legend>
  101. <p><b>Imię:</b><input type= "text" name= "first_name" size="15" maxlength="15" value="<?php if (isset($_POST['first_name'])) echo $_POST['first_name'];?>"/></p>
  102. <p><b>Nazwisko:</b><input type="text" name="last_name" size="20" maxlength="40" value="<?php if (isset($_POST['last_name'])) echo $_POST['last_name'];?>"/></p>
  103.  
  104. <p><b>Adres e-mail:</b><input type="text" name="email" size="40" maxlength="60" value="<?php if (isset($_POST['email'])) echo $_POST['email'];?>"/></p>
  105.  
  106. <p><b>Nazwa użytkownika:</b><input type="text" name="username" size="20" maxlength="40" value="<?php if (isset($_POST['username'])) echo $_POST['username'];?>"/></p>
  107. <p><b>Hasło:</b><input type="password" name="password1" size="20" maxlength="40" /></p>
  108. <p><b>Potwierdź hasło:</b><input type="password" name="password2" size="20" maxlength="40" /></p>
  109. </fieldset>
  110. <div align="center"<input type="submit" name="submit" value="Wyślij dane"/></div>
  111. </form>

I błąd Parse error: syntax error, unexpected ')', expecting ',' or ';' in /obserwacje/rejestracja.php on line 69
Coś z znakami ' i "
darko
Jeden nawias za dużo, powinno być tak

  1. echo "<br />\$query: ".$query.'<br />mysql error: '.mysql_error();
madik
teraz mi pisze
$query: SELECT user_id FROM users WHERE username= 'asd'
mysql error: Table 'scz6.users' doesn't exist
darko
A masz bazę scz6 questionmark.gif zrób mysql_select_db("NAZWA_BAZY_O_KTORA_CI_CHODZI"); przed wykonaniem jakichkolwiek zapytań, albo explicite w zapytaniu:
$query = "SELECT user_id FROM NAZWA_BAZY_O_KTORA_CI_CHODZI.users WHERE username= '$u'";
madik
Dziwne bo ją sam nawet zakładałem sadsmiley02.gif
Z tego co patrze to linijki z pierwszego mojego postu: 62,63,64,75,76 według mojej książki powinny być odpowiedzialne za sprawdzenie czy ktoś już sobie wybrał nick, aby nie było kilku użytkowników o takim samym nicku.

Aaaa... Chyba zapomniałem utorzyć tabeli w bazie danych... czy to może być przyczyną ?
darko
Nie doczytałem, nie chodzi o nazwę bazy, ale o nazwę tabeli, na pewno masz tam tabelę users questionmark.gif

lol smile.gif
madik
Ehh... Zrobiłem te kolumny...

i mi wyświetla:
Nie zostałeś zarejestrowany z powodu awarii naszego systemu. Przepraszamy za kłopot.

.mysql_error().
A zresztą sami zobaczcie.
Dzięki z góry, później jeszcze nagrodze za pomocą "pomógł"
madik
I nic sciana.gif ... nie wiem dlaczego to nie działa. Niby zgodnie wszystko z książką a nie działa. A może ktoś zna sprawdzony sposób na rejestracje (z kontrolowaniem aby nie było kilku użytkowników o takiej samej nazwie)?
darko
Cytat(onkel @ 3.12.2009, 21:57:40 ) *
69. echo "<br />\$query: ".$query.'<br />mysql error: '.mysql_error());


Wtf? Nie rozumiem tego kawalka kodu.

Nie lepiej dac

  1. 69. echo 'blad w polaczeniu';


A co tu rozumieć questionmark.gif Printujesz treść zapytania i błędu, a co Ci powie Twoje echo 'blad w polaczeniu' questionmark.gif Czego się z tego dowiesz questionmark.gif

Cytat
A i gdzie masz polaczenie z baza danych?


Właśnie, madik, pokaż jak się łączysz z bazą, mysql_connect, myślałem, że w $dbc przechowujesz zasób połączenia.
madik
Ja mam
  1. 1.
  2. $user = 'XXXX';
  3. 2.
  4. $password = 'XXX';
  5. 3.
  6. $database = 'XX';
  7. 4.
  8.  
  9. 5.
  10. mysql_connect('localhost', $user, $password);
  11. 6.
  12. @mysql_select_db($database) or die("Nie udalo sie wybrac bazy danych:". mysql_error());

i chyba źle...
Próbowałem zrobić z define aby mieć $dbc ale na moim serwerze to nie działało.
darko
To inaczej: pokaż treść błędu i/lub opisz, co się (nie)dzieje, bo "I nic" niewiele mówi...
madik
Zamieszczam kod z użyciem "define"
  1. <?php
  2. define ('DB_USER', 'scz6');
  3. define ('DB_PASSWORD', 'xxx');
  4. define ('DB_HOST', 'localhost');
  5. define ('DB_NAME', 'scz6');
  6. $dbc= mysql_connect (DB_HOST ,DB_USER, DB_PASSWORD);
  7. mysql_select_db (DB_NAME)
  8. ?>

Hasło zamazałem. Teraz wyświetla mi komunikat:
Cytat(obserawcje.scz.pl)
$query: SELECT user_id FROM users WHERE username= 'a'
mysql error: No database selected

Ktoś ma jakiś pomysł?
PS. Mam także strony oparte o CMS (mambo) i forum phpbb. Może zobaczyć jak te łączą się z bazą danych?
//Ok poprawiłem i ten kod już chyba działa. Jednak chyba nie może wykonać zapytania do bazy danych ponieważ pisze"Nie zostałeś zarejestrowany z powodu awarii naszego systemu. Przepraszamy za kłopot."

Jupi! guitar.gif Uporałem się ze skryptem i działa temat do zamknięcia. Dziękuje za pomoc!
Link http://www.obserwacje.scz.pl/obserwacje/rejestroj.php
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.