あなたのコードからいくつかのエラーを修正しましたが、一般的にあまり意味がないように思えます。$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') {...}