Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rejestracja
Forum PHP.pl > Forum > Przedszkole
Mamazur
Mam stronkę i potrzebuję zrobić do niej rejestrację (wiem, że to jeden z najczęściej poruszanych tematów). Ponieważ nie lubię gotowców piszę własny skrypt. Po wrzuceniu na serwer wyświetla się, że niby w pliku rejestracja.php jest błąd. Dlaczego i jak to poprawić? Po drugie czy ten skrypt jest bezpieczny, a jeśli nie, to co zrobić, żeby był bezpieczny. A i jeszcze jedno, nie pytajcie po co mi i nick i login... Oto kody:
  1. !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <style type="text/css">
  5. .style1
  6. {
  7. width: 160px;
  8. }
  9. .style2
  10. {
  11. width: 182px;
  12. }
  13. </style>
  14. </head>
  15. <form id="form1" action="rejestracja.php" method="post">
  16.  
  17. <table border="0">
  18. <tr>
  19. <td align="center" colspan="2">
  20. Zarejestruj się!</td>
  21. </tr>
  22. <tr>
  23.  
  24. <td align="right">
  25.  
  26. Nazwa użytkownika:</td>
  27.  
  28. <td class="style1">
  29. <input type="text" name="nick"/></td>
  30. </tr>
  31. <tr>
  32.  
  33. <td align="right">
  34.  
  35. Login:</td>
  36.  
  37. <td class="style1">
  38. <input type="text" name="login"/></td>
  39. </tr>
  40. <tr>
  41. <td align="right" class="style2">
  42. Hasło:</td>
  43. <td class="style1">
  44. <input type="password" name="haslo" />
  45. </td>
  46. </tr>
  47. <tr>
  48. <td align="right" class="style2">
  49. Potwierdź hasło:</td>
  50. <td class="style1">
  51. <input type="password" name="vhaslo" />
  52. </td>
  53. </tr>
  54. <tr>
  55. <td align="right" class="style2">
  56. E-mail:
  57. </td>
  58. <td class="style1">
  59. <input type="text" name="email" />
  60. </td>
  61. </tr>
  62. <tr>
  63. <td align="right" class="style2">
  64. Pytanie bezpieczeństwa:</td>
  65. <td class="style1">
  66. <input type="text" name="pytanie" />
  67. </td>
  68. </tr>
  69. <tr>
  70. <td align="right" class="style2">
  71. Twoja odpowiedź:</td>
  72. <td class="style1">
  73. <input type="text" name="odpowiedz" />
  74. </td>
  75. </tr>
  76. <tr>
  77. <td align="right" class="style2">Płeć:
  78. </td>
  79. <td class="style1"><select name="plec">
  80. <option value="brak">Wybierz płeć</option>
  81. <option value="Kobieta">Kobieta</option>
  82. <option value="Mężczyzna">Mężczyzna</option>
  83. </select>
  84. </td>
  85. </tr>
  86. <tr>
  87. <td align="right" class="style2">Podaj sumę długości loginu i 2:</td>
  88. <td class="style1"><input type="text" name="token" /></td>
  89. </tr>
  90. <tr>
  91. <td align="center" colspan="2">
  92. <input id="Reset1" type="reset" value="Reset" /> <input type="submit" value="Wyślij" /></td>
  93. <td> </td>
  94. </tr>
  95.  
  96. </table>
  97. </form>
  98. </body>
  99. </html>

  1. <?php
  2. $nick =  $_POST['nick'];
  3. $login =  $_POST['login'];
  4. $haslo =  $_POST['haslo'];
  5. $vhaslo =  $_POST['vhaslo'];
  6. $email =  $_POST['email'];
  7. $pytanie =  $_POST['pytanie'];
  8. $odpowiedz =  $_POST['odpowiedz'];
  9. $token = $_POST['token'];
  10. $token2 = strlen($login) + 2;
  11. $bledy = 0;
  12. if($haslo != $vhaslo)
  13. {
  14. echo "Hasła nie są takie same!";
  15. $bledy++;
  16. }
  17. if(strlen($haslo)<6 || strlen($haslo)>12)
  18. {
  19. echo "Hasło musi mieć od 6 do 12 znaków!";
  20. $bledy++;
  21. }
  22. if(strlen($nick)<3 || strlen($nick)>15)
  23. {
  24. echo "Nick musi mieć od 3 do 15 znaków!";
  25. $bledy++;
  26. }
  27. if(strlen($login)<3 || strlen($login)>12)
  28. {
  29. echo "Login musi mieć od 3 do 12 znaków!";
  30. $bledy++;
  31. }
  32. if(strlen($email)>30 || strlen($email)<6)
  33. {
  34. echo "E-mail musi mieć od 6 do 30 znaków!";
  35. $bledy++;
  36. }
  37. if(strlen($pytanie)<5 || strlen($odpowiedz)<5)
  38. {
  39. echo "Pytanie i odpowiedź muszą mieć przynajmniej 5 znaków!";
  40. $bledy++;
  41. }
  42. if($_POST['plec'] == brak)
  43. {
  44. echo "Musisz wybrać płeć!";
  45. $bledy++;
  46. }
  47. else
  48. {
  49. $plec = $_POST['plec'];
  50. }
  51. if($token != $token2)
  52. {
  53. echo "Niepoprawny token";
  54. }
  55. $connection = @mysql_connect('mniejsza o to', 'mniejszaoto', 'mniejsza o to');
  56. $db = @mysql_select_db('db885306', $connection);
  57. $sprawdz = mysql_query('SELECT * FROM table WHERE nick = '.$nick.'')
  58. $zajete = mysql_num_rows($result);
  59. if($zajete = 0)
  60. {
  61. }
  62. else
  63. {
  64. echo "Podany nick, jest już zajęty!";
  65. $bledy++;
  66. }
  67. if($bledy == 0)
  68. {
  69. $zapytanie = "INSERT INTO `players` (`id`, `nick`, `login`, `haslo` , `email` , `pytanie` , `odpowiedz`  , `plec`) VALUES ('', '$nick', '$login', '$haslo', '$email', '$pytanie', '$odpowiedz',  '$plec')";
  70. $idzapytania = mysql_query($zapytanie);
  71. mysql_close($connection);
  72. }
  73. ?>
wookieb
Cytat
że niby w pliku rejestracja.php jest błąd.

A że niby jaki bład? Nie sądzisz, że powinno sie podać jego treść?
michal_robak
jezeli przegladarka krzyczy to do tej linijki (BRAK ŚREDNIKA):

  1. <?php
  2. $sprawdz = mysql_query('SELECT * FROM table WHERE nick = '.$nick.'')
  3. ?>


ale własnie musisz podać cos wiecej jak pisze wookieb
Pawel_W
  1. <?php
  2. if($_POST['plec'] == brak)
  3. {
  4. echo "Musisz wybrać płeć!";
  5. $bledy++;
  6. }
  7. ?>

tak nie może być ;p
Wicepsik
  1. <?php
  2. if($_POST['plec'] == 'brak')
  3. {
  4. echo "Musisz wybrać płeć!";
  5. $bledy++;
  6. }
  7. ?>
Pawel_W
  1. <?php
  2. if($zajete = 0)
  3. {
  4. }
  5. ?>

kolejny błąd, powinno być ==
krzysiekk
  1. <?php
  2. $nick =  $_POST['nick'];
  3. $login =  $_POST['login'];
  4. $haslo =  $_POST['haslo'];
  5. $vhaslo =  $_POST['vhaslo'];
  6. $email =  $_POST['email'];
  7. $pytanie =  $_POST['pytanie'];
  8. $odpowiedz =  $_POST['odpowiedz'];
  9. $token = $_POST['token'];
  10. $token2 = strlen($login) + 2;
  11. $bledy = 0;
  12. if($haslo != $vhaslo)
  13. {
  14. echo "Hasła nie są takie same!";
  15. $bledy++;
  16. }
  17. if(strlen($haslo)<6 || strlen($haslo)>12)
  18. {
  19. echo "Hasło musi mieć od 6 do 12 znaków!";
  20. $bledy++;
  21. }
  22. if(strlen($nick)<3 || strlen($nick)>15)
  23. {
  24. echo "Nick musi mieć od 3 do 15 znaków!";
  25. $bledy++;
  26. }
  27. if(strlen($login)<3 || strlen($login)>12)
  28. {
  29. echo "Login musi mieć od 3 do 12 znaków!";
  30. $bledy++;
  31. }
  32. if(strlen($email)>30 || strlen($email)<6)
  33. {
  34. echo "E-mail musi mieć od 6 do 30 znaków!";
  35. $bledy++;
  36. }
  37. if(strlen($pytanie)<5 || strlen($odpowiedz)<5)
  38. {
  39. echo "Pytanie i odpowiedź muszą mieć przynajmniej 5 znaków!";
  40. $bledy++;
  41. }
  42. if($_POST['plec'] == brak)
  43. {
  44. echo "Musisz wybrać płeć!";
  45. $bledy++;
  46. }
  47. else
  48. {
  49. $plec = $_POST['plec'];
  50. }
  51. if($token != $token2)
  52. {
  53. echo "Niepoprawny token";
  54. }
  55.  
  56.  
  57. $connection = mysql_connect('localhost', 'xxx', 'xxx');
  58. $db = mysql_select_db('test', $connection);
  59.  
  60. $sprawdz = mysql_query("SELECT * FROM `table` WHERE `nick` ='$nick'");
  61. $zajete = mysql_num_rows($sprawdz);
  62.  
  63. if($zajete == 0)
  64. {
  65.  
  66.  
  67.  
  68. if($bledy == 0)
  69. {
  70.    
  71. $zapytanie ="INSERT INTO `table` (`id`, `nick`, `login`, `haslo` , `email` , `pytanie` , `odpowiedz`  , `plec`) VALUES (NULL, '$nick', '$login', '$haslo', '$email', '$pytanie', '$odpowiedz',  '$plec')";
  72. if(mysql_query($zapytanie)){  print'Doadano';}
  73. else{print 'ERROR';}
  74. mysql_close($connection);
  75.  
  76.  
  77. }
  78. }
  79.  
  80. else
  81. {
  82. echo "Podany nick, jest już zajęty!";
  83. $bledy++;
  84. }
  85.  
  86. ?>

zobacz powinno działac
poza tym walidacje danych proponuje zrobic przed wysłaniem na serwer oparta o JS.
Mamazur
Na stronie php.net napisane było, że po zapytaniu nie daje się średnika... sciana.gif

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\iluvatar\website1\rejestracja.php on line 61
ERROR
znowu źle

diabeł tkwi w tym

$sprawdz = mysql_query("SELECT * FROM `table` WHERE `nick` ='$nick'");$zajete = mysql_num_rows($sprawdz);" title="Zobacz w manualu PHP" target="_manual
piotrooo89
  1. <?php
  2. $sprawdz = mysql_query("SELECT * FROM table WHERE nick='".$nick."'") or die(mysql_error());
  3. ?>


daj tak.
Mamazur
chyba wszystko ok
bmL
Cytat(Mamazur @ 4.07.2009, 09:41:42 ) *
Na stronie php.net napisane było, że po zapytaniu nie daje się średnika... sciana.gif

W sensie że w składni zapytania a nie w składni php. W zapytaniu nie stosuje się średnika dla tego że po tym zapytaniu nic więcej nie występuje, tak samo jest w php. Przed tagiem zamykającym "?>" nie trzeba stosować średnika.

  1. <?php
  2.  
  3. echo 'abc';
  4. echo 'cde'
  5.  
  6. ?>


Chyba dobrze mówię? smile.gif
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.