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]   

> Описание: WTF
kamikadze
Отправлено: 07 Июня, 2008 - 13:20:52
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


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




PHP:
скопировать код в буфер обмена
  1. $s=mysql_query("SELECT `id` FROM `users` WHERE `name`='".$_POST[user]."'");
  2. $user = mysql_escape_string($_POST['user']);
  3. $pass = md5($_POST['pass']."3dh");
  4. if ($s==FALSE){ mysql_query("INSERT INTO `users`(login, pass) VALUES('".$user."','".$pass."')");}
  5. ........

$s - постоянно FALSE и не выходит его через mysql_result() вывести... Подскажите в чем трабла.

Ошибок никаких не выдает, разве что если задействовать mysql_result()

Цитата:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/thinkin/public_html/kami/r eg.php on line 24

(Отредактировано автором: 07 Июня, 2008 - 13:22:27)

 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2008 - 13:36:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Отладку делали? Что попадает в $_POST?
Рекомендую добавить проверку $_POST['user'] в запросе выборки - иначе запрос может привести к injection;
Цитата:

Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.

Кроме того, сравнение "==" приводит типы. Используйте "===", чтобы сравнивать не только приводимые значения, но и типы. (в Вашем случае может быть так, что 0==FALSE)
Также рекомендую использовать mysql_num_rows или COUNT(*) в запросе.

(Отредактировано автором: 07 Июня, 2008 - 13:37:51)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
kamikadze
Отправлено: 07 Июня, 2008 - 13:38:40
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


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




Думаю весь код будет полезнее

PHP:
скопировать код в буфер обмена
  1. <?function form($message){
  2.     ?>
  3. <span class='login_error'><?  echo $message ?> </span> <br/>
  4. <Form method="post"  name='form' id='form' action='reg.php' class='login_form'>
  5. <B>Логин:</B>
  6. <input type='text' name='user' maxlength='20' class='login_user'/>
  7.  
  8.  
  9. <B>Пароль:</B>
  10. <input type='password' name='pass' maxlength='20' class='login_pass'/>
  11. <input  type='submit' value="Вход" name='subm' class='login_submit'/>
  12. </Form>
  13. <?
  14.     die();  }
  15. if(!isset($_POST['subm'])) form('');
  16. if(!isset($_POST['user']) OR !isset($_POST['pass']) OR empty($_POST['user']) OR empty($_POST['pass']))
  17.     form("Вы не ввели данные для регистрации");
  18. include ("db.php");
  19. $s=mysql_query("SELECT `id` FROM `users` WHERE `name`='".$_POST[user]."'");
  20. $user = mysql_escape_string($_POST['user']);
  21. $pass = md5($_POST['pass']."3dh");
  22. $o=mysql_result($s,1);
  23. echo $o;
  24. if ($s==FALSE){ mysql_query("INSERT INTO `users`(login, pass) VALUES('".$user."','".$pass."')");}
  25. else{
  26. if (mysql_num_rows($s)>0) {form("Такой логин уже существует в системе");}
  27. else
  28. {
  29. mysql_query("INSERT INTO `users`(login, pass) VALUES('".$user."','".$pass."')");}}
  30. ?>


дело в том что в базу данные попадают, НО могуг зарегестрироватся 2 одинаковых

(Отредактировано автором: 07 Июня, 2008 - 13:40:30)

 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2008 - 13:44:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Например, так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $res=mysql_query("SELECT `id` FROM `users` WHERE `name`='".$_POST['user']."'");
  4. $user = mysql_escape_string($_POST['user']);
  5. $pass = md5($_POST['pass']."3dh");
  6. if (!mysql_num_rows($res))
  7. {
  8.    mysql_query("INSERT INTO `users`(login, pass) VALUES('".$user."','".$pass."')");
  9. }
  10. ?>
  11.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
kamikadze
Отправлено: 07 Июня, 2008 - 13:48:50
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


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




Вот что думает PHP по этому поводу))

Цитата:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/thinkin/public_html/kami/r eg.php on line 24

(Добавление)
Евгений, мы только что Не понял ошибку в запросах))) Спасибо большое, поле то login а в запросе name))
 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2008 - 14:16:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ну, у меня были подозрения на это, но как у Вас устроена таблица - я не знаю (может, и не ошибка вовсе, а особенность логики такая). Так что писать не стал.
Думаю, теперь проблема решена.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
kamikadze
Отправлено: 07 Июня, 2008 - 14:28:23
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


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




Улыбка Да вот давненько не кодил, и допускаю дурацкие ошибки)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB