-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 を確認します... なに?さらに、$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);
?>

ところで: セッションとかはどうですか? 'Login_As_Employee.php' と 'Login_As_Admin.php' の 2 つのページで、ユーザーが実際にログインしているかどうか、またはこれらのページにアクセスできるかどうかを確認しますか?

編集:セッション

セッションを使用する各 *.php ファイルの一番上に、関数session_start(); Use the above code を配置してください。あなたのファイル '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 に答える