-2

我正在开发一个我想允许的登录系统: - 管理员用户只能看到管理页面 - 员工用户只能看到员工页面

  <?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);
     }
     ?>
4

2 回答 2

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”是否检查用户是否实际登录,或者您是否可以访问这些页面?

编辑:会话

确保在每个使用会话的 *.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') {...}
于 2013-10-18T13:57:15.360 回答
0

检查你的 if 和 else 语句。

你正在做的:

if $OPRTYPE = 'Employee' {...}

应该:

if ($OPRTYPE == 'Employee') {...}

检查你的 elseif 以及。

于 2013-10-18T13:58:43.263 回答