我目前正在制作一个多级登录系统。我有表格'admin' includes 'level'字段。我想让管理员重定向到基于‘管理’表上的‘级别’字段的页面。如果level为1,将重定向到SIPP-Litbang/admin.php页面,如果level为2,则将重定向到SIPP-Litbang/admin-pp-sipp-litbang.php.第一步,我在class.admin.php页面上制作方法,代码如下:
public function login($email, $password)
{
try {
$stmt = $this->conn->prepare("SELECT * FROM admin WHERE email_admin = :email AND pass_admin = MD5(:pass)
LIMIT 1");
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':pass', $password,PDO::PARAM_STR);
$stmt->execute();
$adminRow = $stmt->fetch();
if ($stmt->rowCount() == 1) {
$_SESSION['is_logged_in'] = true;
$_SESSION['adminSession'] = $adminRow['id_admin'];
$_SESSION['levelSession'] = $adminRow['level'];
return true;
} else {
return false;
}
}
catch(PDOException $e)
{
return FALSE;
}
}
public function cekSession(){
if (isset($_SESSION['adminSession'])&&$_SESSION['levelSession']==1) {
header('Location: \SIPP-Litbang\admin.php');
return true;
}
elseif (isset($_SESSION['adminSession'])&&$_SESSION['levelSession']==2) {
header('Location: \SIPP-Litbang\admin-pp-sipp-litbang.php');
return true;
}
}
和loginadmin.php页面:
<?php
session_start();
include_once ('class.admin.php');
$admin = new Admin();
if (isset($_POST['login'])){
$user = trim(strip_tags($_POST['email']));
$pass = trim(strip_tags($_POST['pass']));
if ($admin->login($user, $pass)){
}
else {
echo "GAGAL LOGIN! Email atau Password Salah";
}
}
登录过程已生效,例如,具有level 2的管理员将标题显示到SIPP-Litbang/admin-pp-sipp-litbang?modul=beranda.然后我想要显示管理level 2的详细信息,以下是来自admin -pp-sipp litbang.php页面的代码:
<?php
session_start();
require_once 'class.admin.php';
$user = new ADMIN();
$admin_level = isset($_SESSION['levelSession']);
$admin_id = isset($_SESSION['adminSession']);
$stmt = $user->runQuery("SELECT * FROM admin WHERE id_admin=:admin_id AND level=:level");
$stmt->bindParam(":admin_id",$admin_id);
$stmt->bindParam(":level",$admin_level);
$stmt->execute();
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>
我尝试使用level 2回显管理员的名称,但它仅显示具有level 1的管理员的名称。我是不是遗漏了什么?
发布于 2018-06-01 06:36:11
$admin_level = isset($_SESSION['levelSession']);
$admin_id = isset($_SESSION['adminSession']);
isset()
返回true\false;在本例中,'true‘被强制转换为1,这解释了您看到的结果。
我假设您在这里需要的是::
if(isset($_SESSION['levelSession'])){
$admin_level =$_SESSION['levelSession'];
}
if(isset($_SESSION['adminSession'])){
$admin_id = $_SESSION['adminSession'];
}
https://stackoverflow.com/questions/50633403
复制相似问题