[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск логина в MySQL
ak167
Всем привет! Пишу свой движок и вот на стадии написания скрипта регистрации пользователя нужно сделать так чтобы пр регистрации скрипт проверял существует ли уже пользователь с таким именем или нет!
Как сделать такой скрипт на php я знаю, но я НЕ знаю каким sql-запросом проверить наличие пользователя с таким именем в MySQL!!!
Подскажите как это сделать, пожалуйста.





Спустя 7 минут, 41 секунда (3.04.2010 - 22:19) sergeiss написал(а):
Переведи на язык SQL такой текст:
"Выбрать из нужной таблицы запись (или набор полей), у которой определенное поле, содержащее логин, равно указанной величине".

Далее надо проверить, сколько строк было выбрано. Если 1 - то всё ОК. Если ноль - нету такого логина. Если больше 1 - какие-то проблемы с БД, если дубли логинов.

Спустя 3 минуты, 42 секунды (3.04.2010 - 22:22) phz написал(а):
Как-то так....


$sql = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table` WHERE `login` = '".mysql_real_escape_string($POST['user']) ."'");

if (mysql_result($sql, 0) == 0)
{
// всё ок. делаем след. шаг...
}

Спустя 1 час, 7 минут, 51 секунда (3.04.2010 - 23:30) Soldier Ghost написал(а):
Цитата (phz @ 3.04.2010 - 19:22)
Как-то так....


$sql = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table` WHERE `login` = '".mysql_real_escape_string($POST['user']) ."'");

if (mysql_result($sql, 0) == 0)
{
// всё ок. делаем след. шаг...
}

помоему можно и без COUNT
$search = mysql_query("SELECT `login` FROM `users` WHERE `user_login` = '".mysql_real_escape_string($_POST['user_login'])."'");
if(mysql_num_rows($search) = 0)
{
// всё ок. делаем след. шаг...
}
else
{
echo 'Такой уже есть';
}

Спустя 2 минуты, 49 секунд (3.04.2010 - 23:33) ak167 написал(а):
sergeiss, спасибо! Правда сразу после того, как я разместил здесь эту тему я и сам до этого додумался, но всеравно спасибо, что помогли!)))


phz, тоже спасибо!))) Твой способ лучше предложенного
sergeiss'ом?


Я сделал так:


// проверим есть ли такой логин в БД
$err_sql="SELECT login FROM $db_name_user_table WHERE login='".$_POST['login']."'";
$sql="INSERT INTO $db_name_user_table (login, password, email, data) values ('".$_POST['login']."', '".$_POST['pass']."', '".$_POST['email']."', now())";
$connect=mysql_connect($db_server, $db_user, $db_pass);
mysql_select_db($db_name, $connect);
$err_result=mysql_query($err_sql, $connect);

$err=mysql_num_rows($err_result);
if($err>0){echo "Пользователь с таким именем уже существует!";}

// запишем данные в БД, если такого логина нет
if(err=0){
$result=mysql_query($sql, $connect);
echo "<br>Регистрация прошла успешно!<br>";
}


Проверьте пожалуйста не намудрил ли я тут чего-то лишнего? А то у меня это иногда бывает)))

Спустя 18 часов, 9 минут, 5 секунд (4.04.2010 - 17:42) revaninfo написал(а):
И когда вы научитесь данные фильтровать...


$connect=mysql_connect($db_server, $db_user, $db_pass);
mysql_select_db($db_name);
mysql_query("SET NAMES utf-8");

$_POST['login'] = htmlspecialchars($_POST['login']);
$_POST['pass'] = htmlspecialchars($_POST['pass']);
$_POST['email'] = htmlspecialchars($_POST['email']);

$err = mysql_query("SELECT `login` FROM $db_name_user_table WHERE `login`='{$_POST['login']}'");
if (mysql_num_rows($err)>0) {
echo "Пользователь с таким именем уже существует!";
} else {
$insert = mysql_query("INSERT INTO $db_name_user_table (`login`, `password`, `email`, `data`) values ('{$_POST['login']}', '{$_POST['pass']}', '{$_POST['email']}', NOW()");
if ($insert) {
echo "Регистрация прошла успешно!";
} else {
echo "Ошибка!";
}
}


Спустя 2 часа, 20 минут, 44 секунды (4.04.2010 - 20:03) phz написал(а):
А может лучше на входе mysql_real_escape_string, а на выходе htmlspecialchars

Спустя 9 минут, 35 секунд (4.04.2010 - 20:12) ИНСИ написал(а):
Цитата
$sql = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table` WHERE `login` = '".mysql_real_escape_string($POST['user']) ."'");

if (mysql_result($sql, 0) == 0)
{
// всё ок. делаем след. шаг...
}


такой странный подход вижу первый раз smile.gif

Спустя 5 минут, 8 секунд (4.04.2010 - 20:17) ИНСИ написал(а):
	$connect = mysql_connect($db_server, $db_user, $db_pass);
mysql_select_db($db_name);
mysql_query("SET NAMES utf-8");

$_POST['login'] = mysql_real_escape_string(stripslashes($_POST['login']));
$_POST['pass'] = mysql_real_escape_string(stripslashes($_POST['pass']));

if(preg_match("|^[a-z0-9_\.-]+@([a-z0-9]+\.)+[a-z]{2,4}$|i", $_POST['email'])) {

$err = mysql_query("
SELECT `login`
FROM `
{$db_name_user_table}`
WHERE `login` = '
{$_POST['login']}'
"
);

if (mysql_num_rows($err) > 0) {
echo "Пользователь с таким именем уже существует!";
} else {
$insert = mysql_query("
INSERT
INTO `
{$db_name_user_table}`(`login`, `password`, `email`, `data`)
VALUES('
{$_POST['login']}', '{$_POST['pass']}', '{$_POST['email']}', NOW()
"
);

if ($insert) {
echo "Регистрация прошла успешно!";
} else {
echo "Ошибка!";
}
}
}
else {
echo 'Вы вводите неверного формата email';
}
Быстрый ответ:

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