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]   

> Без описания
Crowley
Отправлено: 20 Февраля, 2014 - 21:34:16
Post Id


Гость


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


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




Вообщем, не работает определение занятости логина.
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT id FROM Auth WHERE login='$login'",$conn);
  2.     $myrow = mysql_fetch_array($result);
  3.     if (!empty($myrow['id']))
  4. {
  5.     exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
  6.     }
  7.  

При этом после регистрации 2 одинаковых логинов(Первым регистрировался пользователь Crowley с паролем SuperPass, за тем с паролем 123), БД выглядит так Недовольство, огорчениеСкрин в приложении к посту)
Прикреплено изображение (Нажмите для увеличения)
2014-02-20_233017.png
 
 Top
OrmaJever Модератор
Отправлено: 20 Февраля, 2014 - 21:41:32
Post Id



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


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


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




во-первых поле логина в самой таблице можно сделать уникальным и вторая запись уже не будет добавлена.
во-вторых, когда уже люди начнут использовать mysqi???

попробуйте так
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT id FROM Auth WHERE login='$login' LIMIT 1",$conn);
  2. if(mysql_num_rows()) exit('Занято');


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Crowley
Отправлено: 20 Февраля, 2014 - 21:54:48
Post Id


Гость


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


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




OrmaJever пишет:
во-первых поле логина в самой таблице можно сделать уникальным и вторая запись уже не будет добавлена.

Не подскажите, как?
P.S. Код все равно не работает.
 
 Top
Lonewi
Отправлено: 20 Февраля, 2014 - 22:19:49
Post Id


Новичок


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


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




Попробуй проверить результат:
 
 Top
Crowley
Отправлено: 20 Февраля, 2014 - 22:34:02
Post Id


Гость


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


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




[quote=Lonewi][/quote]
Даже не пробуя вижу, что это бред.
 
 Top
OrmaJever Модератор
Отправлено: 20 Февраля, 2014 - 23:09:28
Post Id



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


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


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




Crowley пишет:
Не подскажите, как?

очистите таблицу, выберите поле login, нажмите изменить, и там должен быть выпадающий список с unique.
Как это выглядит в запросе я не помню.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Crowley
Отправлено: 21 Февраля, 2014 - 13:02:50
Post Id


Гость


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


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




Так, тем не менее, вопрос остается... Проблема не решена. Нужно завершать скрипт, если такой логин уже есть в базе.
 
 Top
KingStar
Отправлено: 21 Февраля, 2014 - 16:28:51
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(*) FROM Auth WHERE login='$login'


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Hapson
Отправлено: 21 Февраля, 2014 - 16:49:10
Post Id



Посетитель


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


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

[+]


Crowley
Вариантов масса, нужно только заглянуть на php.net
Касательно первого поста... ты читал описание mysql_fetch_array ? Мне кажется нет. Как это ты на empty проверяешь то, чего вообще может не быть. Не надежнее ли использовать mysql_num_rows ?
Куча вариантов, нужно мануал почитать.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Crowley
Отправлено: 22 Февраля, 2014 - 14:37:45
Post Id


Гость


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


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




Hapson пишет:
Crowley
Вариантов масса, нужно только заглянуть на php.net
Касательно первого поста... ты читал описание mysql_fetch_array ? Мне кажется нет. Как это ты на empty проверяешь то, чего вообще может не быть. Не надежнее ли использовать mysql_num_rows ?
Куча вариантов, нужно мануал почитать.


PHP:
скопировать код в буфер обмена
  1.  
  2.     $result = mysql_query("SELECT * FROM `Auth`  WHERE `login`='".$_POST['login']."'",$conn);
  3.     $nr = mysql_num_rows($result);
  4.  

При таком раскладе в переменной $nr пусто.
 
 Top
OrmaJever Модератор
Отправлено: 22 Февраля, 2014 - 14:53:59
Post Id



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


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


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




Crowley
Проверьте очень внимательно логин в базе и тот что приходит в $_POST['login'], если они совпадают mysql_num_rows($result) должна вернуть 1, иначе магия получается, а я в магию не верю


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Crowley
Отправлено: 22 Февраля, 2014 - 17:29:41
Post Id


Гость


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


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




OrmaJever пишет:
Crowley
Проверьте очень внимательно логин в базе и тот что приходит в $_POST['login'], если они совпадают mysql_num_rows($result) должна вернуть 1, иначе магия получается, а я в магию не верю

Я тоже. Но авторизация точно проходит, т.к. если бы она не прошла, новое значение в базу бы не занеслось. Касаемо $_POST['login'] там 100% значение, которое уже есть в БД(Я сделал вывод этой переменной через echo, и проверил)
(Добавление)
Решил проблему. Все дело было в лишних, очень запутанных условиях(которые, скорее всего, были неправильными).
Вот и слушай потом всяких ********** вроде Евгения Попова. Зла не хватает.
 
 Top
OrmaJever Модератор
Отправлено: 22 Февраля, 2014 - 19:06:17
Post Id



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


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


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




Crowley пишет:
Вот и слушай потом всяких ********** вроде Евгения Попова

ахахаха дак с этого и нужно было начинать. Мы тут любим попава, настолько что даже приготовили ему отдельный котёл в аду.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 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