我正在开发一个我想要允许的登录系统: - 管理员用户只能看到管理页面 - 员工用户只能看到员工页面
<?php { include('Connection.php');
$s = oci_parse($ora_conn, "select OPRID,OPERPSWD,OPRTYPE from OPERATOR where OPRID =
:uname and OPERPSWD = :upass");
oci_bind_by_name($s, ":uname", $_POST['OPRID']);
oci_bind_by_name($s, ":upass", $_POST['OPERPSWD']);
oci_execute ($s);
$r=oci_fetch_array($s,OCI_DEFAULT);
$OPRTYPE =($r)
if $OPRTYPE = 'Employee';
{
header("Location:Login_As_Employee.php");
}
elseif($r ='Admin')
{
header("Location:Login_As_Admin.php");
}
else
{
header("refresh:0;url=sign_in.php");
echo'<script>alert("Invalid User!")</script>';
exit();
} oci_free_statement($s);
oci_close($ora_conn);
}
?>
答案 0 :(得分:0)
我纠正了你的代码中的一些错误,但对我而言似乎总体上没有多大意义。 您将$ OPRTYPE分配给$ r(因此$ OPRTYPE和$ r是相同的)。然后检查$ OPRTYPE。后来你检查$ r ... wat? 此外,您将$ r分配给oci_fetch_array(),因此我自动假设$ r是一个数组(因此也是$ OPRTYPE)。 无法以这种方式检查数组。检查应该是
if (in_array('Employee', $OPRTYPE)) {...}
所以你看,有些事情需要牢记。你最好正确地重写你的代码
<?php
include('Connection.php');
$s = oci_parse($ora_conn, "select OPRID,OPERPSWD,OPRTYPE
from OPERATOR
where OPRID = :uname and OPERPSWD = :upass");
oci_bind_by_name($s, ":uname", $_POST['OPRID']);
oci_bind_by_name($s, ":upass", $_POST['OPERPSWD']);
oci_execute($s);
$r = oci_fetch_array($s, OCI_DEFAULT);
if (is_array($r) AND in_array('Employee', $r)) {
$_SESSION['login'] = 'employee';
header("Location:Login_As_Employee.php");
} elseif (is_array($r) AND in_array('Admin', $r)) {
$_SESSION['login'] = 'admin';
header("Location:Login_As_Admin.php");
} else {
header("refresh:0;url=sign_in.php");
echo '<script>alert("Invalid User!")</script>';
exit();
}
oci_free_statement($s);
oci_close($ora_conn);
?>
顺便问一下:Sessions和东西怎么样?你的两个页面'Login_As_Employee.php'和'Login_As_Admin.php'检查用户是否真的登录了,或者你是否可以访问这些页面?
修改:会话
确保在使用会话的EACH * .php文件的最顶部,放置函数session_start();
使用上面的代码。在您的文件中,“Login_As_Employee.php”和“Login_As_Admin.php”将此文件包含在您的文件顶部:
<?php
session_start();
if (!isset($_SESSION['login'])) {
die('access denied');
}
// ...
您的管理员文件应该使用这样的其他检查(取决于您希望如何组织群组权限)
if (!isset($_SESSION['login']) OR $_SESSION['login'] != 'admin') {...}
答案 1 :(得分:0)
检查你的if和else语句。
你在做:
if $OPRTYPE = 'Employee' {...}
应该是:
if ($OPRTYPE == 'Employee') {...}
检查你的elseif。