Есть таблица users
id
login
name
password
Как сделать при регистрации проверку на занятость логина?
Есть код:
$login = $_POST['login'];
$name = filter_var(trim($_POST['name']),FILTER_SANITIZE_STRING);
$password = filter_var(trim($_POST['password']),FILTER_SANITIZE_STRING);
if (mb_strlen($login) < 3 || mb_strlen($login) > 91) {
echo "Логин должен быть от 3 до 91 символов.";
exit();
} else if (mb_strlen($name) < 3 || mb_strlen($name) > 99) {
echo "Имя должно быть от 3 до 99 символов.";
exit();
} else if (mb_strlen($password) < 6 || mb_strlen($password) > 99) {
echo "Пароль должен быть от 6 до 99 символов.";
exit();
}
$mysqli = new mysqli('localhost', 'root', '123', 'db');
$mysqli->query("INSERT INTO `users` (`login`, `password`, `name`)
VALUES('$login', '$password', '$name')");
$mysqli->close();
header("Location: ".$_SERVER["HTTP_REFERER"]);
Я попробовал сделать так:
$r = "SELECT `id` FROM `users` WHERE `login`=$logincheck";
else if ($login == $logincheck) {
echo "Логин занят";
exit();
}
Но ничего не получается. Этот код просто напросто игнорируется.
UPD.
$login = $_POST['login'];
$name = filter_var(trim($_POST['name']),FILTER_SANITIZE_STRING);
$password = filter_var(trim($_POST['password']),FILTER_SANITIZE_STRING);
$mysqli = mysqli_connect('localhost', 'root', '123', 'db');
$r = $mysqli->query("SELECT `id` FROM `users` WHERE `login`= $logincheck");
// узнаем количество строк, если не 0 - логин уже занят
$result = $r->num_rows;
if($result > 0) {
echo "Логин занят";
exit();
}
if (mb_strlen($login) < 3 || mb_strlen($login) > 21) {
echo "Логин должен быть от 3 до 21 символов.";
exit();
}
else if (mb_strlen($name) < 3 || mb_strlen($name) > 19) {
echo "Имя должно быть от 3 до 19 символов.";
exit();
} else if (mb_strlen($password) < 6 || mb_strlen($password) > 99) {
echo "Пароль должен быть от 6 до 99 символов.";
exit();
} else if ($login == $logincheck) {
echo "занято";
exit();
}
$mysqli = new mysqli('localhost', 'root', '123', 'db');
$mysqli->query("INSERT INTO `users` (`login`, `password`, `name`)
VALUES('$login', '$password', '$name')");
$mysqli->close();
header("Location: ".$_SERVER["HTTP_REFERER"]);
Не понимаю, почему не работает
$r = $mysqli->query("SELECT `id` FROM `users` WHERE `login`= $logincheck");
// узнаем количество строк, если не 0 - логин уже занят
$result = $r->num_rows;
if($result > 0) {
echo "Логин занят";
exit();
}
/*Если нажата кнопка на регистрацию,
начинаем проверку*/
if(isset($_POST['submit']))
{
//Утюжим пришедшие данные
if(empty($_POST['email']))
$err[] = 'Поле Email не может быть пустым!';
else
{
if(emailValid($_POST['email']) === false)
$err[] = 'Не правильно введен E-mail'."\n";
}
if(empty($_POST['pass']))
$err[] = 'Поле Пароль не может быть пустым';
if(empty($_POST['pass2']))
$err[] = 'Поле Подтверждения пароля не может быть пустым';
//Проверяем наличие ошибок и выводим пользователю
if(count($err) > 0)
echo showErrorMessage($err);
else
{
/*Продолжаем проверять введеные данные
Проверяем на совподение пароли*/
if($_POST['pass'] != $_POST['pass2'])
$err[] = 'Пароли не совподают';
//Проверяем наличие ошибок и выводим пользователю
if(count($err) > 0)
echo showErrorMessage($err);
else
{
/*Проверяем существует ли у нас
такой пользователь в БД*/
$sql = 'SELECT `login`
FROM `'. BEZ_DBPREFIX .'reg`
WHERE `login` = :login';
//Подготавливаем PDO выражение для SQL запроса
$stmt = $db->prepare($sql);
$stmt->bindValue(':login', $_POST['email'], PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($rows) > 0)
$err[] = 'К сожалению Логин: <b>'. $_POST['email'] .'</b> занят!';
//Проверяем наличие ошибок и выводим пользователю
if(count($err) > 0)
echo showErrorMessage($err);
else
{
//Получаем ХЕШ соли
$salt = salt();
//Солим пароль
$pass = md5(md5($_POST['pass']).$salt);
/*Если все хорошо, пишем данные в базу*/
$sql = 'INSERT INTO `'. BEZ_DBPREFIX .'reg`
VALUES(
"",
:email,
:pass,
:salt,
"'. md5($salt) .'",
0
)';
//Подготавливаем PDO выражение для SQL запроса
$stmt = $db->prepare($sql);
$stmt->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
$stmt->bindValue(':pass', $pass, PDO::PARAM_STR);
$stmt->bindValue(':salt', $salt, PDO::PARAM_STR);
$stmt->execute();
header('Location:'. BEZ_HOST .'/');
exit;
}
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет, ситуация следующаяЕсть главная страница, типа лендинга, ее сделала через файл index
Есть следующий код, но почему-то нумерация страниц вообще не выводится, не могу понять в чем причина
Не могу записать в переменную typesOfResponsibility значение it, полученное из ObservablefromCallable при подписке subscribe
Недавно обнаружил, что stacktrace, вызываемый у Exception на один метод короче, чем stacktrace вызываемый у ThreadПочему то Exception не добавляет в конец stacktrace...