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
Форумы портала PHP.SU :: Версия для печати :: Duplicate entry 'Mike' for key 'login'
Форумы портала PHP.SU » » Вопросы новичков » Duplicate entry 'Mike' for key 'login'

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

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

Пользователь John уже зарегистрированDuplicate entry 'John' for key 'login
2. OrmaJever - 13 Мая, 2013 - 20:18:15 - перейти к сообщению
Ну всё же зависит от вашего кода. Во-первых если делать запрос на выборку то такой ошибки не будет, во-вторых даже если делает insert или как-то ещё то ошибка сама по себе не выводится, вы её сами где-то выводите
3. teddy - 13 Мая, 2013 - 20:27:42 - перейти к сообщению
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. }



Сам код тестовый, просто решил попробовать сделать подобную фишку. Я тоже удивляюсь, почему выдает ошибку.. Может вы, подскажете? )
(Добавление)
ю
4. OrmaJever - 13 Мая, 2013 - 20:33:49 - перейти к сообщению
При условии что поле логин уникальное то можно написать так
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.
5. teddy - 13 Мая, 2013 - 20:37:19 - перейти к сообщению
OrmaJever
Спасибо ) а можно ли это как то решить по другому, тоесть не используя --> ?: <-- Что то меня не очень привлекает эта конструкция ) Она вроде в PHP 5.3 появилась, если я ничего не путаю, если так, то скорее всего должно быть другое решение )
6. DelphinPRO - 13 Мая, 2013 - 20:42:48 - перейти к сообщению
Обычный 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
7. teddy - 14 Мая, 2013 - 00:34:03 - перейти к сообщению
DelphinPRO
Благодарю ) сработало! Хорошо

 

Powered by ExBB FM 1.0 RC1