Я новичок в 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';
?>