Задать вопрос

Почему не происходит вход в админ панель?

У меня есть отдельная страница для добавления новых администраторов. Эта страница доступна после входа на сайт

<input type="text" name="email" id="email">
<input type="text" name="password" id="password">
<button type="submit" name="action" id="action"></button>


Также есть обработчик который записывает эти данные в таблицу. Пароль хэшируется с помощью password_hash

if ($_POST["action"] == "Insert") {
        $email = mysqli_real_escape_string($object->connect, $_POST["email"]);
        $password = password_hash($data['password'], PASSWORD_DEFAULT);
        $query = "  
           INSERT INTO users 
           (email, password)   
           VALUES ('" . $email . "', '" . $password . "')";
        $object->execute_query($query);
        echo 'Data Inserted';
    }


Есть отдельная страница входа:

<input type="text" name="email" id="email">
<input type="password" name="password" id="password">
<input type="submit" name="Login" id="Login">


И обработчик который проверяет есть ли данные пользователя в таблице:

<?php
require "db_connect.php";
$data=$_POST;
	if(isset($data['Login']))
	{
		$errors = array();
		$user = R::findOne('users', 'email = ?', array($data['email']));
		if( $user)
		{
			if(password_verify($data['password'], $user->password))
			{
				$_SESSION['logged_user'] = $user;
				header("location:home.php");
			} else {
				$errors[] = 'Пароль неправильно введен';
			}
		} else
		{
			$errors[] = 'Такого email нет!';
		}
		if (!empty($errors)) {
			echo'<div style="color:red;">'.array_shift($errors).'</div><hr>';
		} 
	}
?>


Каждый раз выдает ошибку что пароль не верный. В чем может быть ошибка?
Если пароли не хэшированы, то вход происходит
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
В вашей HTML-форме отсутствует инпут с action = Insert, который скрипт безуспешно пытается найти в if ($_POST["action"] == "Insert") {

Добавить его можно в форму следующим образом
<input type="hidden" name="action" value="Insert" />
Ответ написан
Комментировать
Adamos
@Adamos
if ($_POST["action"] == "Insert") {
$email = mysqli_real_escape_string($object->connect, $_POST["email"]);
$password = password_hash($data['password'], PASSWORD_DEFAULT);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы