[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: поиск по БД
DoGGy
приветствую всех.. я новичок- пишу скрипт регистрации и авторизации на сайте, как осуществить поиск по БД, а именно есть ли такой пользователь уже в БД.... если есть выдать сообщение если нету-зарегистрировать, посмотрите пожалуйста, что не правильно..???
Код
<?php
$mysql=mysql_connect("localhost","root","") or die("Не могу соединиться с БД");
mysql_select_db("registry") or die("Такой БД не существует");
$user="select login from reg where login = '$login'";
if($result=mysql_query($user))
{
echo "Такой пользователь уже существует";
}
else
{
$query="insert into reg(login,passwd,name,surname,mail) values('$login','$passwd','$name','$surname','$mail')";
mysql_query($query) or die("Query failed");
mysql_close($mysql);
echo "Спасибо за регистрацию <b>".$login."</b>";
}

?>




Спустя 49 минут, 50 секунд (3.07.2008 - 16:55) Viking написал(а):
а с чего ты взял что чтото неправильно?

Спустя 10 минут, 55 секунд (3.07.2008 - 17:06) redow написал(а):
Да, чуть не правильно сделал.

вот сдесь: if($result=mysql_query($user))

если в базе не найдено ни одного совпадения, то mysql_query() всеравно возвращает true, тоесть если такого пользователя нет, то всеравно условие выполняется.
Следует чуть переделать вот так:

$user=mysql_query("select login from reg where login = '$login' ");
$num = @mysql_num_rows($user); // смотрим количество выбраных строк из БД.
// если mysql_query() возвращает 0 строк, mysql_num_rows() возвращает false и выводит ошибку,
// что бы ошибка не высвечивалась, ставим @ перед ней.
if( $num>0 ) // если строк больше 0, то пользователь существует
{
echo "Такой пользователь уже существует";
}
else
{
...
}


и будет все работать как нужно.

Спустя 9 часов, 10 минут, 53 секунды (4.07.2008 - 02:17) dector написал(а):
не забудь про безопасное программирование.
SQL иньекция очень возможна

Спустя 9 часов, 51 минута, 58 секунд (4.07.2008 - 12:09) aultman написал(а):
if(mysql_num_rows($user) > 0)
{
echo "Такой пользователь уже существует";
}
else{
$query="insert into `registry`.`reg`(`login`,`passwd`,`name`,`surname`,`mail`) values('$login',PASSWORD('$passwd'),'$name','$surname','$mail')";
mysql_query($query) or die("Query failed");
mysql_close($mysql);
echo "Спасибо за регистрацию <b>".$login."</b>";
}

Вот некоторые изменения.

Намек, храни подключение к БД в отдельном файле, и подключай когда нужно.
Ещё намек, храни название ячеек и таблиц в (` `) косых кавычках во избежания неприятных инцидентов со совпаданием имен ячеек и операторов баз данных.
Можно сразу открыть сессию и перенаправить пользователя на защищеную страницу, я лично так делаю smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.