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 :: Duplicate entry 'Mike' for key 'login'

 PHP.SU

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


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

> Без описания
teddy
Отправлено: 13 Мая, 2013 - 19:41:09
Post Id


Участник


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


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




Добрый вечер. При регистрации пользователей ставлю проверку, если пользователь в БД уже существует, то выдаю соответствующую ошибку. Поле логин исходя из заголовка темы уникальное. Ошибку получаю "Пользователь John уже зарегистрирован" - все работает. Но как избавиться от хвоста? В целом получаю вот что:

Пользователь John уже зарегистрированDuplicate entry 'John' for key 'login
 
 Top
OrmaJever Модератор
Отправлено: 13 Мая, 2013 - 20:18:15
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Ну всё же зависит от вашего кода. Во-первых если делать запрос на выборку то такой ошибки не будет, во-вторых даже если делает insert или как-то ещё то ошибка сама по себе не выводится, вы её сами где-то выводите


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
teddy
Отправлено: 13 Мая, 2013 - 20:27:42
Post Id


Участник


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


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




PHP:
скопировать код в буфер обмена
  1. include "connect.php";
  2.  
  3. if(isset($_POST['submit'])){
  4.  
  5. $login = trim(strip_tags($_POST['login']));
  6. $password = trim(strip_tags($_POST['password']));
  7.  
  8. $sql = mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1");
  9.  
  10. $row = mysql_fetch_assoc($sql);
  11.  
  12. if($login==$row['login']){
  13. echo "<font color='red'>Пользователь <b>$login</b> уже зарегистрирован</font>";
  14. }
  15.  
  16. else{
  17.  
  18. $password = md5($password);
  19.  
  20. $sql = "INSERT INTO users(login,password) VALUES('$login','$password')";
  21.  
  22. echo "<font color='green'>Регистрация успешно завершена!</font>";
  23.  
  24. }
  25. }



Сам код тестовый, просто решил попробовать сделать подобную фишку. Я тоже удивляюсь, почему выдает ошибку.. Может вы, подскажете? )
(Добавление)
ю
 
 Top
OrmaJever Модератор
Отправлено: 13 Мая, 2013 - 20:33:49
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




При условии что поле логин уникальное то можно написать так
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['submit'])){
  2.  
  3.         $login = trim(mysql_escape_string($_POST['login']));
  4.         $password = trim(mysql_escape_string($_POST['password']));
  5.  
  6.         $q = mysql_query("INSERT INTO users(login,password) VALUES('$login', md5('$password'))");
  7.         echo $q ? "<font color='green'>Регистрация успешно завершена!</font>" : "<font color='red'>Пользователь <b>$login</b> уже зарегистрирован</font>";
  8. }
  9.  

Если логина нет то он добавится, если он есть то mysql_query вернёт false.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
teddy
Отправлено: 13 Мая, 2013 - 20:37:19
Post Id


Участник


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


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




OrmaJever
Спасибо ) а можно ли это как то решить по другому, тоесть не используя --> ?: <-- Что то меня не очень привлекает эта конструкция ) Она вроде в PHP 5.3 появилась, если я ничего не путаю, если так, то скорее всего должно быть другое решение )
 
 Top
DelphinPRO
Отправлено: 13 Мая, 2013 - 20:42:48
Post Id



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


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


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




Обычный if-else

PHP:
скопировать код в буфер обмена
  1. if ($q) {
  2.     echo "<font color='green'>Регистрация успешно завершена!</font>";
  3. } else {
  4.     echo "<font color='red'>Пользователь <b>$login</b> уже зарегистрирован</font>";
  5. }


существует с первой версии php


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 14 Мая, 2013 - 00:34:03
Post Id


Участник


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


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




DelphinPRO
Благодарю ) сработало! Хорошо
 
 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