функция проверки не перенаправляет должным образом - PullRequest
0 голосов
/ 09 ноября 2019

Я новичок в php, и я пытаюсь проверить уровень пользователя, если его администратор или обычный пользователь, я делаю пользовательскую функцию, и каждый раз, когда я включаю эту функцию, браузер воспроизводит следующее сообщение:

The page isn’t redirecting properly

Я получаю тип администратора из БД mysql как admin или user и хранится в глобальной переменной SESSION с именем 'user_type'

, и если я сделаю это сиз функции, я имею в виду просто ввести некоторые if statment в каждом php-файле, я не получаю эту ошибку!

в этом проекте у меня есть 4 файла:

checker.php, которые имеютпроверка таких функций, как проверка входа в систему и проверка типа пользователя.

login.php, которые отвечают за систему ведения журнала.

dashboard.php и этот файл должен быть показан для администраторов.

home.php эта страница для обычного пользователя.

это checker файл

function check_login(){
    if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
        header("location: /login.php");
    }
}
function check_type(){


    if ($_SESSION['user_type'] == 'admin'){
        header('Location: /cad/admin/dashboard.php');
    }
    elseif($_SESSION['user_type'] == 'user'){
        header('Location: home.php');
    }

}

dashboard файл

<?php
require_once '../db_config.php';
include '../checker.php';
check_login();
// if user try to insert dashboard url bty him self check user and redircted if session variable ['user_type'] is not = admin
check_type();

$id = $_SESSION['id'];
$sql = " SELECT * FROM users WHERE id ='$id'";
$query = $mysqli->query($sql);
$row = mysqli_fetch_array($query,MYSQLI_ASSOC);
?>
<h1>YOU ARE ADMIN</h1>
<strong> Hello <?= $row['first_name'] ?></strong>
<strong> your birth day is :  <?= $row['dob'] ?></strong>

<button><a href='/cad/logout.php'> logout </button>

файл home

<?php
session_start();


include 'checker.php';
check_type();
?>


<strong> Hello <? $_SESSION['id'] ?> you are a normal user :) </strong>

<button><a href='logout.php'> logout </button>
?>

файл login

<?php
require_once 'inc/header.html';
require_once "db_config.php";
include 'checker.php';

session_start();
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    // header("location: dashboard.php");
    check_login();

}

    if ($_SERVER['REQUEST_METHOD'] =='POST'){
        if(isset($_POST['login'])) {
            // get data from form
        $email = $phone = $_POST['email'];
        $password = $_POST['password'];
        // seslect email or phone to compare with inserted data 
        $sql = "SELECT * FROM users WHERE email = '$email' OR phone = '$phone' " ;
        $query = $mysqli->query($sql);
        $row = mysqli_fetch_array($query,MYSQLI_ASSOC);
        // collect data from mysql database
        $db_email = $row['email'];
        $hashed_password = $row['password'];
        // check if user is a normal user and set session variable to user
        if( md5($password) == $hashed_password && strcasecmp($email,$db_email) == 0 ||
         md5($password) == $hashed_password && $row['phone'] == $phone ){
            $_SESSION["loggedin"] = true;
            $_SESSION['id'] = $row['id'];
            $_SESSION['user_type'] = $row['user_type'];
            check_type();
            echo $_SESSION['user_type'];


            // header('Location: home.php');

            // $_SESSION['admin'] = false;
            // $_SESSION['id'] = $row['id']; // store ID in session.
            }
            // login to admin page 
            // check if user type is admin

            // if (md5($password) == $hashed_password && strcasecmp($email,$db_email) == 0 && $row['user_type'] == 'admin' ||
            // md5($password) == $hashed_password && $row['phone'] == $phone && $row['user_type'] == 'admin') {
            //     header('Location: admin/dashboard.php');
            //     $_SESSION["loggedin"] = true;
            //     $_SESSION['admin'] = true;
            //     $_SESSION['id'] = $row['id'];
            // }
    }
}

?>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="styles/RegisterForm.css">
    <title>cad</title>
</head>
<body>
    <div class="container">
        <form method='POST' action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            <p>Email or Phone</p>
            <input class="input" type="text" name="email">
            <p>password</p>
            <input class="input" type="password" name="password" > <br>
            <button name="login"><a>Login</a></button>
            <button><a href="index.php">Back</a></button>
        </form>
</div>

</body>
</html>

<?php
require_once 'inc/footer.html';
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...