Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пишу первый скрипт (регистрация пользователя).

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Nat
Отправлено: 01 Апреля, 2013 - 22:18:58
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Доброго времени суток, друзья.
Пишу скрипт регистрации по уроку: http://ruseller[dot]com/lessons.php?[dot][dot][dot]ub=37&id=347
Какую-то часть кода в процессе работы я изменил (в целях оптимизации под свое видение), в то же время многое не понимаю.

Проблема, с которой я столкнулся, заключается вот в чем: при регистрации скрипт выдает, что пользователь с таким логином уже зарегестрирован (пользователей 0).

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  if ( isset ($_POST['login'])) { $login = $_POST['login'];}
  3.  if ( isset ($_POST['email'])) { $login = $_POST['email'];}
  4.  if (isset($_POST['password'])) { $password=$_POST['password'];} // операции, отправляющие введенные данные в перемененные
  5.  if ( (login == " ") or (password == " ") or (email == " "))
  6.  {
  7.         exit ("Вы не ввели необходимую информацию. Вернитесь и попробуйте еще раз");
  8.  
  9.  }
  10.  // защита
  11.  $login = stripslashes ($login);
  12.  $login = htmlspecialchars($login);
  13.  $email = stripslashes ($email);
  14.  $email = htmlspecialchars($email);
  15.  $password = stripslashes($password);
  16.  $password = htmlspecialchars($password);
  17.  $login = trim($login);
  18.  $email = trim($email);
  19.  $password = trim($password);
  20.  
  21.  
  22.  
  23.  include ("bd.php");
  24.  $result = mysql_query("SELECT id FROM users WHERE login='login'", $db);
  25.  $myrow = mysql_fetch_array($result);
  26.  if (empty($myrow{'id'})) {
  27.         exit ("Извините, введенный Вами логин уже зарегестрирован. Введите другой логин.");
  28.  }
  29.  $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login', '$password')");
  30.  if ($result2=='TRUE')
  31.     {
  32.     echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
  33.     }
  34.  else {
  35.     echo "Ошибка! Вы не зарегистрированы.";
  36.     }
  37.     ?>


Благодарю за помощь.
 
 Top
Михаил
Отправлено: 01 Апреля, 2013 - 22:50:15
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2010  
Откуда: Армавир, Россия


Помог: 0 раз(а)




Строка 24: $result = mysql_query("SELECT id FROM users WHERE login='login'", $db);
Заменить фрагмент кода WHERE login='login' на WHERE login='$login'
Строка 26: if (empty($myrow{'id'})) {
Заменить на
if (!empty($myrow{'id'})) {
 
 Top
Nat
Отправлено: 01 Апреля, 2013 - 22:57:35
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Благодарю! Только вот эта "проверка" проверкой, по сути, не является. Зарегистрироваться отныне можно, но совпадение логинов он не проверяет.
Не думал, кстати, что во вроде бы лаконично и красиво расписанном уроке может быть такое огромное количество ошибок и не рабочих (в сравнении с описанием) функций. Жаль, но опыта таким образом получаешь больше Улыбка

Буду рад наводке или же помощи с тем, чтобы разобраться с проверкой логина (почты) на совпадение.

(Отредактировано автором: 01 Апреля, 2013 - 22:59:51)

 
 Top
Михаил
Отправлено: 01 Апреля, 2013 - 23:03:08
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2010  
Откуда: Армавир, Россия


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  include ("bd.php");
  2.  $result = mysql_query("SELECT id FROM users WHERE login='$login'", $db);
  3.  $myrow = mysql_fetch_array($result);
  4.  if (!empty($myrow['id'])) {
  5.         exit ("Извините, введенный Вами логин уже зарегестрирован. Введите другой логин.");
  6.  }else{
  7.  $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login', '$password')");
  8.  if ($result2=='TRUE')
  9.     {
  10.     echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
  11.     }
  12.  else {
  13.     echo "Ошибка! Вы не зарегистрированы.";
  14.     }
  15. }
 
 Top
Dark-def
Отправлено: 02 Апреля, 2013 - 09:51:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. if ( (login == " ") or (password == " ") or (email == " "))
  2. // должно быть:
  3. if ( ($login == " ") or ($password == " ") or ($email == " "))


-----
while(true); - // И пусть весь мир подождет
 
 Top
re_nat
Отправлено: 02 Апреля, 2013 - 15:21:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Ошибки на каждом шагу)

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_POST['login']))
  3.         $login = $_POST['login'];
  4.  
  5. if(isset ($_POST['email']))
  6.         $email = $_POST['email'];
  7.        
  8. if(isset($_POST['password']))
  9.         $password = $_POST['password']; // операции, отправляющие введенные данные в перемененные
  10.        
  11. if( ($login == " ") or ($password == " ") or ($email == " "))
  12.         exit ("Вы не ввели необходимую информацию. Вернитесь и попробуйте еще раз");
  13.  
  14. #ЗЫ-> Если форма отправляется, переменные поста, соответствующие полям, всегда существуют
  15.        
  16. // защита
  17. $login = stripslashes($login);
  18. $login = htmlspecialchars($login);
  19.  
  20. $email = stripslashes($email);
  21. $email = htmlspecialchars($email);
  22.  
  23. $password = stripslashes($password);
  24. $password = htmlspecialchars($password);
  25.  
  26. $login = trim($login);
  27. $email = trim($email);
  28. $password = trim($password);
  29.  
  30. #ЗЫ-> Имеет смысл сперва убрать теги и лишние пробелы, а лишь затем проверять на пустоту
  31. #Например вышележащий код можно заменить так
  32. /*
  33. $login = trim(stripslashes($_POST['login']));
  34. $email = trim(stripslashes($_POST['email']));
  35. $password = trim(stripslashes($_POST['password']));
  36.        
  37. if(empty($login) or empty($email) or empty($password))
  38.         exit("Вы не ввели необходимую информацию. Вернитесь и попробуйте еще раз");
  39. */
  40.  
  41. include("bd.php");
  42.  
  43. $result = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."'", $db);
  44. $myrow = mysql_fetch_array($result);
  45.  
  46. if(empty($myrow['id']))
  47.     exit ("Извините, введенный Вами логин уже зарегИстрирован. Введите другой логин.");
  48.  
  49. $result2 = mysql_query("INSERT INTO `users` (`login`,`password`) VALUES('$login', '$password')");
  50.  
  51. if($result2)
  52.         echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
  53.  else
  54.     echo "Ошибка! Вы не зарегистрированы.";
  55. ?>


Успехов в начинаниях!=)

(Отредактировано автором: 02 Апреля, 2013 - 17:26:04)

 
 Top
Nat
Отправлено: 05 Апреля, 2013 - 12:27:10
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Ребят, всем спасибо. Только вот я бросил сей урок и начал писать сам. Если будут вопросы - отпишу в тему. Улыбка
 
 Top
Nat
Отправлено: 05 Апреля, 2013 - 21:26:03
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Столкнулся с новой проблемой.
Код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <?PHP include('db_connect.php');?>
  6. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  7. <title>Регистрация</title>
  8. </head>
  9. <body>
  10. <div align="center" id="reg_verify">
  11. <?PHP
  12. if(isset($_POST['submit'])){
  13.         $query = mysql_query("SELECT * FROM 'users' WHERE 'login'='".$_POST['login']."'"); // поиск содержимого из bd с вбитым логином
  14.         $row = mysql_num_rows($query); // считывание количества столбцов с совпадающим логином
  15.         if(empty($_POST['login'])){
  16.                 echo "Вы не ввели логин";
  17.         }
  18.         elseif(!preg_match("/[-a-zA-Z0-9]{3,15}/", $_POST['login'])){
  19.                 echo "Вы неправильно ввели логин";
  20.         }
  21.         elseif(!preg_match("/[-a-zA-Z0-9]{3,15}/", $_POST['password'])){
  22.                 echo "Вы неправильно ввели пароль";
  23.         }
  24.         elseif($row > 0){
  25.                 echo "Пользователем с таким логином уже сущесвует";
  26.         }
  27.         elseif(empty($_POST['mail'])){
  28.                 echo "Пожалуйста, введите адрес электронной почты";
  29.         }
  30.         elseif(!preg_match("/[-a-zA-Z0-9_]{3,20}@[-a-zA-Z0-9]{2,64}\.[a-zA-Z\.]{2,9}/", $_POST['mail'])){
  31.                 echo "Пожалуйста, укажите подлинный адрес электронной почты, на него мы пришлем Вам письмо с дальнейшими указаниями :)";
  32.         }
  33.         else{
  34.                 $login = $_POST['login'];
  35.                 $password = md5 ($_POST['password']);
  36.                 $mail = $_POST['mail'];
  37.                 $insert = mysql_query("INSERT INTO 'users' ('login', 'password', 'mail') VALUES ('$login', '$password', '$mail')");
  38.                 if(insert == TRUE){
  39.                         echo "Поздравляем, Вы успешно зарегестрированы!";
  40.                 }
  41.                 else{
  42.                         echo "Непредвиденная ошибка";
  43.                 }
  44.         }
  45. }
  46. ?>
  47. </div>
  48. <div align="center">
  49. <h2>Регистрация</h2>
  50. <form action="" method="post">
  51. Логин:<input name="login" type="text" size="16"><br>
  52. Пароль:<input name="password" type="password" size="16"><br>
  53. E-mail:<input name="mail" type="text" size="30"><br>
  54. <input name="submit" type="submit" value="Зарегестрироваться">
  55. </form>
  56. </div>
  57. </body>
  58.  

Ошибка - Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\project\www\join.php on line 13

//
если добавить перед 13-ой строкой

выскакивает ошибка - [1064] [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 'login'='Nat'' at line 1]

И пользователь в бд не вбивается.

(Отредактировано автором: 05 Апреля, 2013 - 21:27:58)

 
 Top
LIME
Отправлено: 05 Апреля, 2013 - 21:28:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




'users'
`users`
 
 Top
Nat
Отправлено: 06 Апреля, 2013 - 01:58:08
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Еще вопрос. Как мне организовать проверку бд во избежание регистрации с совпадающим логином (почтой)?
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = mysql_query("SELECT * FROM `user` WHERE 'login'='".$_POST['login']."'");
  3. $row = mysql_num_rows($query);
  4. ....
  5. elseif($row > 0){
  6.                 echo "Пользователем с такими данными уже сущесвует";
  7.         }
  8.  


Не работает Недовольство, огорчение. Пользователь с повторным логином все равно записывается.
 
 Top
re_nat
Отправлено: 06 Апреля, 2013 - 17:49:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




 
 Top
LIME
Отправлено: 06 Апреля, 2013 - 17:52:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




'login'
`login`

PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT * FROM `user` WHERE 'login'='".$_POST['login']."'") or die(mysql_error());

Тема закрыта!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB