Я пытаюсь создать страницу входа в систему, но когда я пытаюсь войти в систему, я получаю пустую страницу, я также не получаю никаких ошибок. Я хочу вернуть сообщение об успехе или неудаче на основе результатов сценария входа. Куда я иду не так?
Страница авторизации:
try {
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = : username LIMIT 1";
$query = $dbh->prepare( $sql );
$query->execute( array( ':username'=>$username ) );
$results = $query->fetchAll( PDO::FETCH_ASSOC );
foreach( $results as $row ){
if(password_verify($_POST['password'], $password)){
echo 'verified';
}
else
{
echo 'not verified';
}
}
Страница для создания пользователя:
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
//sets type to '1' which is used for a user.
$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?, type= '1'");
$stmt->execute([$username, $email, $hash]);echo "<p>Thank you for registering!</p>";
Между двоеточием и «именем пользователя» есть пробел
'username = : username'
^
Там не должно быть никаких пробелов и читать как :username
Несколько строк ниже вы используете:
array( ':username'=>$username )
Других решений пока нет …