Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка, существует ли такой логин в базе данных
 
 автор: aleksej_sumarok   (19.09.2008 в 19:24)   письмо автору
 
 

Подскажите как проверить существует ли такой логин в базе данных? Если существует вывести $log на этой же странице и не регистрировать пользователя, а если не существует то зарегистрировать и занести в базу данных.
Проблема в том если логин существует он выводит $log, но и регистрирует пользователя...


<?
$result 
mysql_query("SELECT user_id, login FROM users WHERE user_id<>'none'"); 
while (
$row mysql_fetch_row($result)) 

if (
$login == $row[1])
{
 
$log '<font face="Verdana" color="red" size="2"><b>существует</b></font>';
}

elseif (
$register)
{
 
$pwhash sha1($pass);
 
$query mysql_query("INSERT INTO users (login, pass) VALUES ('$login', '$pwhash')");
 
$reg "<font face='Verdana' color='green' size='2'><b>Вы успешно зарегистрировали пользователя!</b></font>";    
}
?>

  Ответить  
 
 автор: sim5   (19.09.2008 в 19:31)   письмо автору
 
   для: aleksej_sumarok   (19.09.2008 в 19:24)
 

И чему у вас равно $login, не видно чтобы оно определялось где-то.

  Ответить  
 
 автор: dima_s_d_s   (19.09.2008 в 19:39)   письмо автору
 
   для: aleksej_sumarok   (19.09.2008 в 19:24)
 


<? 
$result 
mysql_query("SELECT user_id, login FROM users WHERE user_id<>'none'");  
while (
$row mysql_fetch_row($result))  

if (
$login == $row[1]) 

 
$log '<font face="Verdana" color="red" size="2"><b>существует</b></font>'

}  else { 
 
$pwhash sha1($pass); 
 
$query mysql_query("INSERT INTO users (login, pass) VALUES ('$login', '$pwhash')"); 
 
$reg "<font face='Verdana' color='green' size='2'><b>Вы успешно зарегистрировали пользователя!</b></font>";     


?>

-- SIM5 - Логин у него в $row[1] --

  Ответить  
 
 автор: sim5   (19.09.2008 в 19:41)   письмо автору
 
   для: dima_s_d_s   (19.09.2008 в 19:39)
 

Вы только дуру не городите. Я вижу, что сравнивается $row[1] с $login, значение которого я не вижу чтобы определялось где-то ранее.

  Ответить  
 
 автор: dima_s_d_s   (19.09.2008 в 19:48)   письмо автору
 
   для: sim5   (19.09.2008 в 19:41)
 

А зачем его видеть?
Был четко поставленный вопрос, и из данного вопроса, и дополнения к вопросу было видно, что в коде есть ошибка в логике выполнения данного скрипта.

  Ответить  
 
 автор: sim5   (19.09.2008 в 19:56)   письмо автору
 
   для: dima_s_d_s   (19.09.2008 в 19:48)
 

Уваважаемый, товарищ проверяет две переменные, бог знает какие, о которых я спрашиваю. И не факт, что они равны тому, с чем он их сравнивает. Вы лишь изменили условие else вот и все.

  Ответить  
 
 автор: dima_s_d_s   (19.09.2008 в 20:01)   письмо автору
 
   для: sim5   (19.09.2008 в 19:56)
 

Не вижу смысла что-то доказывать, факт остаётся фактом.

  Ответить  
 
 автор: sim5   (19.09.2008 в 20:09)   письмо автору
 
   для: dima_s_d_s   (19.09.2008 в 20:01)
 

Факт чего? Автор еще хочет сделать проверку на пароль, это раз. Два, если мне надо проверить существует ли такой юзер по логину и паролю, то я и сделаю запрос на единственного юзера, а не буду получать весь список юзеров и проверять потом. Если вам ясно что хочет автор, я не спорю. А я же спрашиваю просто, мне охота узнать. Вопросы есть?

  Ответить  
 
 автор: aleksej_sumarok   (19.09.2008 в 21:23)   письмо автору
 
   для: sim5   (19.09.2008 в 20:09)
 

Вот если сделать такой пример всё работает отлично, а мне надо сравнить $login с $row[1], а не с 'admin'

[
<?
if ($login == 'admin'

 
$log '<font face="Verdana" color="red" size="2"><b>существует</b></font>'


elseif (
$register

 
$pwhash sha1($pass); 
 
$query mysql_query("INSERT INTO users (login, pass) VALUES ('$login', '$pwhash')"); 
 
$reg "<font face='Verdana' color='green' size='2'><b>Вы успешно зарегистрировали пользователя!</b></font>";     
}
?>

  Ответить  
 
 автор: sim5   (19.09.2008 в 21:24)   письмо автору
 
   для: aleksej_sumarok   (19.09.2008 в 21:23)
 

Я не могу понять, зачем вы получаете весь список юзеров, вместо того чтобы проверить по логину и паролю - есть ли такой в базе и проверить результат запроса?

PS. Кстати, пароль в базе лучше держать в виде хеша, а логин проверять на допустимые символы. Вы же не проверив пихаете так в базу, а вот потом, при запросе к базе, может произойти пренеприятное.

  Ответить  
 
 автор: aleksej_sumarok   (19.09.2008 в 21:40)   письмо автору
 
   для: sim5   (19.09.2008 в 21:24)
 

Ну вот я не знаю как это сделать.... Поэтому пишу!

  Ответить  
 
 автор: sim5   (19.09.2008 в 21:46)   письмо автору
 
   для: aleksej_sumarok   (19.09.2008 в 21:40)
 

SELECT user_id, login FROM users WHERE user_id = запрашиваему логину AND ...
вот тут должно быть поле пароля равное md5(пароль),
но его я в вашей таблице не вижу.


Ан нет, при вставке вы его указываете. Все, далее вам помогут как, а у меня уже глаза на лбу :)

  Ответить  
 
 автор: aleksej_sumarok   (19.09.2008 в 22:08)   письмо автору
 
   для: sim5   (19.09.2008 в 21:46)
 

При чём здесь Md5? Вроде простой вопрос, а ответа толкого до сих пор не услышал..... :)

  Ответить  
 
 автор: sim5   (20.09.2008 в 07:34)   письмо автору
 
   для: aleksej_sumarok   (19.09.2008 в 22:08)
 

Уважаемый, вы пишете вот это:
"INSERT INTO users (login, pass) VALUES ('$login', '$pwhash')"
Более ничего не видно к сожалению. Поэтому вопрос: вы проверяете то, что вам вводят в качестве логина и пароля перед занесением в базу? Как вы храните пароль в базе?

  Ответить  
 
 автор: aleksej_sumarok   (20.09.2008 в 14:40)   письмо автору
 
   для: sim5   (20.09.2008 в 07:34)
 

Prichjom zdesj parolj zabudte pro nego, mne nuzno proveritj tolko login gde pri registracii vvodit polzovatelj v tekstovoe pole. $login = $_POST('login')

  Ответить  
 
 автор: Trianon   (20.09.2008 в 14:59)   письмо автору
 
   для: aleksej_sumarok   (20.09.2008 в 14:40)
 

вот этой строки:
$login = $_POST('login')
в коде , который Вы привели, нигде не наблюдалось.

  Ответить  
 
 автор: aleksej_sumarok   (20.09.2008 в 15:42)   письмо автору
 
   для: Trianon   (20.09.2008 в 14:59)
 

Ja dumal eto mozno dogadatsja jesli ja napisal chto eto registracija polzovatelja, znachit i jestj tekstovoe pole

  Ответить  
 
 автор: Trianon   (20.09.2008 в 15:43)   письмо автору
 
   для: aleksej_sumarok   (20.09.2008 в 15:42)
 

а по-русски?

  Ответить  
 
 автор: aleksej_sumarok   (20.09.2008 в 18:20)   письмо автору
 
   для: Trianon   (20.09.2008 в 15:43)
 

Ja pishu s mobilnika u menja netu russkix bukv

  Ответить  
 
 автор: aleksej_sumarok   (20.09.2008 в 18:20)   письмо автору
 
   для: Trianon   (20.09.2008 в 15:43)
 

Ja pishu s mobilnika u menja netu russkix bukv

  Ответить  
 
 автор: mehelson   (20.09.2008 в 20:33)   письмо автору
 
   для: aleksej_sumarok   (20.09.2008 в 18:20)
 

>Подскажите как проверить существует ли такой логин в базе данных?
может быть так :
<?php
$query 
"SELECT (*) FROM `users` WHERE `login` = ".$login;
$usr mysql_query($query);
if(!
$usr) exit("Ошибка - ".mysql_error());
$number mysql_result($usr0);
if(
$number 0) exit("Такое имя уже есть");
//иначе регистрируем
?>

  Ответить  
 
 автор: Trianon   (20.09.2008 в 20:52)   письмо автору
 
   для: mehelson   (20.09.2008 в 20:33)
 

Браво! :)

А что это за зверь такой (*) ?

  Ответить  
 
 автор: mehelson   (20.09.2008 в 21:07)   письмо автору
 
   для: Trianon   (20.09.2008 в 20:52)
 

:) опечатка
$query = "SELECT COUNT(*) FROM `users` WHERE `login` = ".$login;

  Ответить  
 
 автор: BinLaden   (20.09.2008 в 22:12)   письмо автору
 
   для: mehelson   (20.09.2008 в 21:07)
 

В MySQL строки обрамляются апострофами или кавычками...

  Ответить  
 
 автор: Mehelson   (20.09.2008 в 22:37)   письмо автору
 
   для: mehelson   (20.09.2008 в 21:07)
 

$query = "SELECT COUNT(*) FROM `users` WHERE `login` = '$login'";

  Ответить  
 
 автор: BinLaden   (20.09.2008 в 22:43)   письмо автору
 
   для: Mehelson   (20.09.2008 в 22:37)
 

Еще в MySQL существует экранирование спец. символов для правильного формирования литеральной константы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования