Этот вопрос закрыт для ответов, так как повторяет вопрос Вход в систему под разными ролями на разные url, как сделать?
@Yen13Sky
Студент

Как правильно сделать сравнение ролей для входа?

Есть таблица users, в ней содержатся данные пароль, логин, роль (1- админ, 0 -пользователь), есть авторизация для пользователя, нужно что бы через форму авторизации проходил
только тот у кого роль = 0.
вот код, но тут явно что то пошло не так.
spoiler
<?php
require "db.php";
$data = $_POST;

$result = R::find('email', 'role=0');

if (isset($data['do_signup']))/*Если нажата кнопка*/
{
$errors = array();
$user = R::findOne('users', 'email=?', array($data['email']));/*Проверка на наличие email*/

if ($user)
{
    if (password_verify($data['password'], $user->password)) /*Проверка пароля*/ {

        if ($data['email'] == $result) /*Условие для входа */

            $_SESSION['user'] = $user;
            header("Location: index2.php");
            exit;
    }
    }
else {
$errors[] = 'Неверно введен пароль!';
}
} else
{
$errors[] = 'Пользователь с таким E-mail не найден!';
}
if (!empty($errors))
{
echo '<div style = "color:red;">'.array_shift($errors).'</div><hr>';
}
?>

Вот код со созданием таблицы
spoiler
require "db.php";

$data = $_POST;
if( isset($data['do_signup'])){
    if (trim($data['login']) == ''){
        $errors[] = 'Введите ФИО нового сотрудника!';
    }
    if (trim($data['identificational']) == ''){
        $errors[] = 'Введите идентификационный сотрудника!';
    }
    if (trim($data['role']) == ''){
        $errors[] = 'Введите привелегию сотрудника!';
    }
    if (trim($data['email']) == ''){
        $errors[] = 'Введите E-mail!';
    }
    if ($data['password'] == ''){
        $errors[] = 'Введите пароль!';
    }
    if (R::count('users', "identificational = ?", array($data["identificational"])) >0)
    {
        $errors[] = "Пользователь с таким идентификационным номером уже существует!";
    }
    if (R::count('users', "email = ?", array($data["email"])) >0)
    {
        $errors[] = "Пользователь с таким E-mail уже существует!";
    }

    if (empty($errors))
    {
        $user = R::dispense('users');
        $user->login = $data['login'];
        $user->identificational = $data['identificational'];
        $user->role = $data['role'];
        $user->email = $data['email'];
        $user->password = password_hash($data['password'], PASSWORD_DEFAULT);

        R::store($user);
        echo '<div style="color: green;">Вы успешно зарегестрированы!</div><hr>';

    } else{
        echo '<div style="color: red">'.array_shift($errors).'</div><hr>';
    }
}

?>
<form action="signup.php" method="post">
    <p><strong>ФИО сотрудника</strong>
        <input type="text" name="login" value="<?php echo @$data ['login'];?>">
    </p>
    <p><strong>Идентификационный сотрудника</strong>
        <input type="number" name="identificational" value="<?php echo @$data ['identificational'];?>">
    </p>
    <p><strong>Привилегия сотрудника</strong>
        <input type="number" name="role" value="<?php echo @$data ['role'];?>">
    </p>
    <p><strong>E-mail сотрудника</strong>
        <input type="email" name="email" value="<?php echo @$data ['email'];?>">
    </p>
    <p><strong>Пароль для входа в систему</strong>
        <input type="password" name="password" value="<?php echo @$data ['password'];?>">
    </p>
    <p>
        <button type="submit" name="do_signup">регистрация нового сотрудника</button>
    </p>

</form>
  • Вопрос задан
  • 84 просмотра
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы