Php 我正在使用登录系统不工作

Php 我正在使用登录系统不工作,php,oracle,Php,Oracle,我正在使用一个登录系统,我希望允许: -管理员用户只能看到管理员页面 -员工用户只能查看员工页面 <?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", $_PO

我正在使用一个登录系统,我希望允许: -管理员用户只能看到管理员页面 -员工用户只能查看员工页面

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

我纠正了您代码中的一些错误,但对我来说,这似乎没有多大意义。
将$OPRTYPE分配给$r(因此$OPRTYPE和$r是相同的)。然后选择$OPRTYPE。稍后你再检查$r。。。沃特?
此外,您将$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);
?>
您的管理文件应该使用另一个类似这样的检查(取决于您希望如何组织组权限)


检查您的if和else语句

你正在做:

if $OPRTYPE = 'Employee' {...}
应该是:

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

同时检查您的其他人。

“我正在做一些事情,这是代码。”-是的。。。那么?好吧。。。你有什么问题…?什么不起作用?我们无法神奇地看到这一点。你必须帮助我们帮助你。当我得到uname和upass的时候,它不是去管理员和员工pageDude,为什么?使用专业系统。我的意思是,你根本不知道你在做什么,你的代码很糟糕,在你之前有10000人有这个想法。他甚至没有做
if($OPRTYPE='Employee')
,他在做
if$OPRTYPE='Employee'
:DYea,这是真的。我只是在复制和粘贴我自己的解决方案,但忘了添加他的错误。谢谢,但当我得到uname和pass时,它会提醒“无效用户!”检查我的编辑。代码中有一些奇怪的东西无法工作。我修改了代码。为了更好地分析你的问题,我们需要更多的信息。做一个var_dump($r)并告诉我它是怎么说的。它在工作,但当我得到无效的用户Uname和Pass时,我就得到了错误…比如警告:in_array()期望参数2是数组,boolean给定警告:in_array()期望参数2是数组,boolean givenI添加了另一个检查。请看我的编辑汉克斯·帕特里克·曼瑟先生,现在开始工作了。。。。。
if $OPRTYPE = 'Employee' {...}
if ($OPRTYPE == 'Employee') {...}