Всем привет, я новичок в php, не могу понять где моя ошибка в check.php. строка 19. В БД есть колонки с login, name, pass. Если убрать
$user = User:findOne(['username = :login, 'password_hash = :pass'])
->addParams([':name' => $login, ':pass' => $pass])->limit(1);
то регистрация и авторизация проходит. Но мне нужно что бы при совпадающем Login (E-mail), регистрация не проходила повторно.
index.php
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewportt" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Форма регистрации</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<style>
body {
background: url(img/1.png) no-repeat;
-moz-background-size: 100%; /* Firefox 3.6+ */
-webkit-background-size: 100%; /* Safari 3.1+ и Chrome 4.0+ */
-o-background-size: 100%; /* Opera 9.6+ */
background-size: 100%; /* Современные браузеры */
}
</style>
<div class="container mt-4">
<div class="row">
<div class="col">
<h1>Форма регистрации</h1>
<form action="check.php" method="post">
<input type="text" class="form-control" name="login"
id="login" placeholder="E-mail"><br>
<input type="text" class="form-control" name="name"
id="name" placeholder="Введите имя"><br>
<input type="password" class="form-control" name="pass"
id="pass" placeholder="Введите пароль"><br>
<button class="btn btn-success"
type="submit">Зарегистрировать</button>
</form>
</div>
<div class="col">
<h1>Форма авторизации</h1>
<form action="auth.php" method="post">
<input type="text" class="form-control" name="login"
id="login" placeholder="E-mail"><br>
<input type="password" class="form-control" name="pass"
id="pass" placeholder="Введите пароль"><br>
<button class="btn btn-success"
type="submit">Войти</button>
</form>
</div>
</div>
</div>
</body>
</html>
check.php
<?php
$login = filter_var(trim($_POST['login']),
FILTER_UNSAFE_RAW);
$name = filter_var(trim($_POST['name']),
FILTER_UNSAFE_RAW);
$pass = filter_var(trim($_POST['pass']),
FILTER_UNSAFE_RAW);
if(mb_strlen($login) < 5 || mb_strlen($login) > 90) {
echo "Недопустимя длина логина";
exit();
} else if(mb_strlen($name) < 3 || mb_strlen($name) > 50) {
echo "Недопустимя длина имя";
exit();
} else if(mb_strlen($pass) < 6 || mb_strlen($pass) > 15) {
echo "Недопустимя длина пароля. От 6-15";
exit();
}
$user = User:findOne(['username = :login, 'password_hash = :pass'])
->addParams([':name' => $login, ':pass' => $pass])->limit(1);
$mysql = new mysqli('localhost', 'root', '', 'register-bd' );
$mysql->query("INSERT INTO users (login, pass, name)
VALUES('$login', '$pass', '$name')");
$mysql->close();
header('Location:/endreg.php');
?>
User:findOneявно синтаксически некорректная конструкция – teran Apr 28 '22 at 07:17