Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Problem z rejestracja
Forum PHP.pl > Forum > Przedszkole
edwarpan
Witam, posiadam skrypt:
  1. <?php
  2.  
  3. if (isset($_POST['submit'])) { // if form has been submitted
  4.  
  5. /* check they filled in what they supposed to,
  6.  
  7. passwords matched, username
  8.  
  9. isn't already taken, etc. */
  10.  
  11. if (!$_POST['uname'] || !$_POST['passwd'] ||
  12.  
  13. !$_POST['passwd_again'] || !$_POST['email']) {
  14.  
  15. die('You did not fill in a required field.');
  16.  
  17. }
  18.  
  19. //validate the inputs
  20.  
  21. $_POST['uname'] = safe($_POST['uname']);
  22.  
  23. $_POST['passwd'] = safe($_POST['passwd']);
  24.  
  25. $_POST['email'] = safe($_POST['email']);
  26.  
  27. $_POST['tele'] = safe($_POST['tele']);
  28.  
  29. $_POST['gg'] = safe($_POST['gg']);
  30.  
  31. // check if username exists in database.
  32.  
  33. $qry = "SELECT 'username' FROM 'users' WHERE 'username' = '".$_POST['uname']."'";
  34.  
  35. $sqlmembers = mysql_query($qry) or die(mysql_error()) ;
  36.  
  37. $name_check = mysql_fetch_array ($sqlmembers);
  38.  
  39. $name_checkk = mysql_num_rows ($sqlmembers);
  40.  
  41. if ($name_checkk != 0) {
  42.  
  43. die('Sorry, the username: <strong>'.$_POST['uname'].'</strong>'
  44.  
  45. . ' is already taken, please pick another one.');
  46.  
  47. }



Wywala błąd:
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' WHERE 'username' = 'test'' at line 1

Już sam nie wiem, nie można usunąć, ponieważ jak dobrze rozumiem wtedy by można kilka razy rejestrować ten sam login. Proszę o pomoc.
RiE
Sprobuj zmienic zapytanie na takie:
  1. $login = $_POST['uname'];
  2. $qry = "SELECT username FROM users WHERE username = '$login'";
edwarpan
Teraz niby bez błędów, lecz w bazie nie jest tworzony user.
Michaxxx
A gdzie masz tworzenie użytkownika? Bo jakoś tego nie widzę
DOdawanie rekordów do MYSQL
edwarpan
  1. $insert = "INSERT INTO 'users' (
  2.  
  3. username,
  4.  
  5. password,
  6.  
  7. regdate,
  8.  
  9. email,
  10.  
  11. tele,
  12.  
  13. gg,
  14.  
  15. show_email)
  16.  
  17. VALUES (
  18.  
  19. '".$_POST['uname']."',
  20.  
  21. '".$_POST['passwd']."',
  22.  
  23. '$regdate',
  24.  
  25. '".$_POST['email']."',
  26.  
  27. '".$_POST['tele']."',
  28.  
  29. '".$_POST['gg']."',
  30.  
  31. '".$_POST['show_email']."')";
  32.  
  33.  
  34.  
  35. $sqlmembers = mysql_query($insert);

?
RiE
Nie bardzo widze skad wziales $_POST['show_email'] nie ma w kodzie ktory podales w pierwszym poscie
edwarpan
Tak więc z dedykacją dla Ciebie, cały kod:
  1. <?php
  2.  
  3. if (isset($_POST['submit'])) { // if form has been submitted
  4.  
  5. /* check they filled in what they supposed to,
  6.  
  7. passwords matched, username
  8.  
  9. isn't already taken, etc. */
  10.  
  11. if (!$_POST['uname'] || !$_POST['passwd'] ||
  12.  
  13. !$_POST['passwd_again'] || !$_POST['email']) {
  14.  
  15. die('You did not fill in a required field.');
  16.  
  17. }
  18.  
  19. //validate the inputs
  20.  
  21. $_POST['uname'] = safe($_POST['uname']);
  22.  
  23. $_POST['passwd'] = safe($_POST['passwd']);
  24.  
  25. $_POST['email'] = safe($_POST['email']);
  26.  
  27. $_POST['tele'] = safe($_POST['tele']);
  28.  
  29. $_POST['gg'] = safe($_POST['gg']);
  30.  
  31. // check if username exists in database.
  32.  
  33. $qry = "SELECT 'username' FROM 'users' WHERE 'username' = '".$_POST['uname']."'";
  34.  
  35. $sqlmembers = mysql_query($qry) or die(mysql_error()) ;
  36.  
  37. $name_check = mysql_fetch_array ($sqlmembers);
  38.  
  39.  
  40. // check passwords match
  41.  
  42. if ($_POST['passwd'] != $_POST['passwd_again']) {
  43.  
  44. die('Passwords did not match.');
  45.  
  46. }
  47.  
  48. // check e-mail format
  49.  
  50. if (!preg_match("/.*@.*..*/", $_POST['email']) ||
  51.  
  52. preg_match("/(<|>)/", $_POST['email'])) {
  53.  
  54. die('Invalid e-mail address.');
  55.  
  56. }
  57.  
  58. // check show_email data
  59.  
  60. if ($_POST['show_email'] != 0 & $_POST['show_email'] != 1) {
  61.  
  62. die('Nope');
  63.  
  64. }
  65.  
  66. // now we can add them to the database.
  67.  
  68. // encrypt password
  69.  
  70. $_POST['passwd'] = sha1($salt.$_POST['passwd']);
  71.  
  72. $regdate = date('m d, Y');
  73.  
  74. $insert = "INSERT INTO 'users' (
  75.  
  76. username,
  77.  
  78. password,
  79.  
  80. regdate,
  81.  
  82. email,
  83.  
  84. tele,
  85.  
  86. gg,
  87.  
  88. show_email)
  89.  
  90. VALUES (
  91.  
  92. '".$_POST['uname']."',
  93.  
  94. '".$_POST['passwd']."',
  95.  
  96. '$regdate',
  97.  
  98. '".$_POST['email']."',
  99.  
  100. '".$_POST['tele']."',
  101.  
  102. '".$_POST['gg']."',
  103.  
  104. '".$_POST['show_email']."')";
  105.  
  106.  
  107.  
  108. $sqlmembers = mysql_query($insert);
  109.  
  110. ?>
  111.  
  112. <h1>Registered</h1>
  113.  
  114. <p>Thank you, your information has been added to the database,
  115.  
  116. you may now <a href="index.php?id=login" title="Login">log in</a>.</p>
  117.  
  118. <?php
  119.  
  120. } else { // if form hasn't been submitted
  121.  
  122. ?>
  123.  
  124. <h1>Register</h1>
  125.  
  126. <form action="index.php?id=register" method="post">
  127.  
  128. <table align="center" border="1" cellspacing="0" cellpadding="3">
  129.  
  130. <tr><td>Username*:</td><td>
  131.  
  132. <input type="text" name="uname" maxlength="40">
  133.  
  134. </td></tr>
  135.  
  136. <tr><td>Password*:</td><td>
  137.  
  138. <input type="password" name="passwd" maxlength="50">
  139.  
  140. </td></tr>
  141.  
  142. <tr><td>Confirm Password*:</td><td>
  143.  
  144. <input type="password" name="passwd_again" maxlength="50">
  145.  
  146. </td></tr>
  147.  
  148. <tr><td>E-Mail*:</td><td>
  149.  
  150. <input type="text" name="email" maxlength="100">
  151.  
  152. </td></tr>
  153.  
  154. <tr><td>Telefon:</td><td>
  155.  
  156. <input type="text" name="tele" maxlength="150">
  157.  
  158. </td></tr>
  159.  
  160. <tr><td>GaduGadu</td><td>
  161.  
  162. <input type="text" name="gg" maxlength="150">
  163.  
  164. </td></tr>
  165.  
  166. <tr><td>Newsletter?</td><td>
  167.  
  168. <select name="show_email">
  169.  
  170. <option value="1" selected="selected">Yes</option>
  171.  
  172. <option value="0">No</option></select>
  173.  
  174. </td></tr>
  175.  
  176. <tr><td colspan="2" align="right">
  177.  
  178. <input type="submit" name="submit" value="Sign Up">
  179.  
  180. </td></tr>
  181.  
  182. </table>
  183.  
  184. </form>
  185.  
  186. <?php
  187.  
  188. }
  189.  
  190. ?>
pedro84
Przeczytaj temat Jak poprawnie zadać pytanie, w szczególności punkt: Wykonywanie zapytań do bazy
RiE
usun apostrofy z users

  1. $insert = "INSERT INTO users (
  2.  
  3. username,
  4.  
  5. password,
  6.  
  7. regdate,
  8.  
  9. email,
  10.  
  11. tele,
  12.  
  13. gg,
  14.  
  15. show_email)
  16.  
  17. VALUES (
  18.  
  19. '".$_POST['uname']."',
  20.  
  21. '".$_POST['passwd']."',
  22.  
  23. '$regdate',
  24.  
  25. '".$_POST['email']."',
  26.  
  27. '".$_POST['tele']."',
  28.  
  29. '".$_POST['gg']."',
  30.  
  31. '".$_POST['show_email']."')";

i powinno grac
edwarpan
Na logikę wziąłem, że tam gdzie błąd usunąć z apostrof.
  1. $qry = "SELECT username FROM users WHERE username = '".$_POST['uname']."'";


Do zamknięcia!
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.