#php #error-logging
#php #протоколирование ошибок
Вопрос:
я новичок в php, и я пытаюсь создать страницу регистрации и входа в систему.
Когда я регистрируюсь как новый пользователь, он работает нормально и появляется в базе данных.Однако, когда дело доходит до входа в систему, кажется, проблема в том, что я перепробовал все.
что я хочу сделать, так это то, что когда пользователь входит в систему, он перенаправляет их на домашнюю страницу, и если информация о входе в систему была неверной, тогда будет отображаться сообщение об ошибке.
Вот код php, который находится в файле входа в систему:
<?php
session_start();
if( isset($_SESSION['users_id']) ){
header("Location: /");
}
require 'database.php';
if(!empty($_POST['email']) amp;amp; !empty($_POST['password'])):
$records = $conn->prepare('SELECT id,email,password FROM users WHERE email = :email');
$records->bindParam(':email', $_POST['email']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message = '';
if(count($results) > 0 amp;amp; password_verify($_POST['password'], $results['password']) )
{
$_SESSION['users_id'] = $results['id'];
header("Location: php.dev/index.php", true, 301); exit();
}
else {
$message = 'Sorry, thoes credentials do not match';
}
endif;
?>
похоже, header("Location:....)
это не работает. я действительно застрял здесь, какая-нибудь помощь?
Вот html-код:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<link href="Style/phpstyle.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet">
</head>
<body>
<div class="header">
<a href="php.dev/index.php"> TIPBUCKET </a>
</div>
<?php if(!empty($message)): ?>
<p><?= $message ?></p>
<?php endif; ?>
<h1>Login</h1>
<span> or <a href="register.php">Register here</a></span>
<form action="login.php" method="POST">
<input type="text" placeholder="enter your email" name="email">
<input type="password" placeholder="Password" name="password">
<input type="submit">
</form>
</body>
</html>
Заранее благодарю вас за любые ответы 🙂
Комментарии:
1. Что
php.dev/index.php
должно быть? Конечно, это не URL…2. я использую MAMP локального хоста, поэтому текущий URL-адрес — php.dev и index.php это домашняя страница
3. Допустимый URL-адрес будет
http://php.dev/index.php
.php.dev/index.php
это просто некоторая произвольная строка с точками и косой чертой в ней.4. вероятно, вам следует опубликовать html-форму для этого и схему базы данных. это может быть что угодно, начиная с формы (входные данные, метод и т.д.) и / или вплоть до недостаточной длины столбца пароля. Какое значение для одного пароля? проверьте наличие ошибок с помощью отчетов об ошибках php и обработки ошибок в PDO.
5. вероятно, вы также выводите заголовок before. Используйте отчеты об ошибках, затем вернитесь и сообщите нам, в чем ошибка, если таковая имеется.
Ответ №1:
У вас опечатка в вашем заголовке:
header("Location: php.dev/index.php", ture, 301);
должно быть
header("Location: php.dev/index.php", true, 301);
Комментарии:
1. Хорошие глаза. Но все равно происходит то же самое
2. некоторые из них пропускают «if{count($results)…………}» и переходит к строке «else {$message …… }» и просто показывает «Извините, ваши учетные данные не совпадают»
3. Можете ли вы также опубликовать функцию password_verify ? Это может быть источником ваших проблем (поскольку он пропускает оператор if)
4. @BananasSplitter
password_verify
встроен php.net/manual/en/function.password-verify.php