1

一部の PHP ページに特定のユーザーがアクセスできるようにしたいと考えています。「user_privilege」属性の「super_user」として、ユーザー テーブルでこれらのユーザーにフラグを立てます。とても太っていて、ログインとセッションが機能しています。しかし、「super_user」のみのページについてはわかりません。基本的に、これは私がスーパーユーザーのみにアクセスできるようにしたいページです:

<?php
require_once('../includes/su_permission.inc.php');
require_once('../includes/session_timeout_db.inc.php');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Secret page</title>
</head>

<body>
<h1>Restricted area</h1>
<p><a href="menu_db.php">Back to restricted menu</a> </p>
<?php include('../includes/logout_db.inc.php'); ?>
</body>
</html>

session_timeout_db.inc.php ドキュメントは、ユーザーのセッションが期限切れになっているかどうかを確認し、正常に動作します。これも追加しました:require_once('../includes/su_permission.inc.php'); コード内で、ユーザーがスーパー ユーザーかどうかを確認します。これはコードでの私の試みです:

<?php
require_once 'login.php';
$conn = new mysqli ($host, $user, $password, $database) or die("Connection Failed");

$sql = 'SELECT user_role FROM users WHERE user_email = ?';

$stmt = $conn->stmt_init();
$stmt->prepare($sql);

$stmt->bind_param('s', $user_email);

$stmt->bind_result($user_role);
$stmt->execute();
$stmt->fetch();

if ($user_role='SU') {
  $_SESSION['privilege_level'] = $user_role;

// some other code needed here
  exit;
} else {
  echo 'No permission to visit this page';
}

私はそれが貧弱な試みであることを知っていますが、ここから他に何をすべきかわかりません. 誰かが私がこれを行うことができる最善の方法をアドバイスしてもらえますか?

ありがとう

4

2 に答える 2

2

これがあなたの問題です:

if ($user_role='SU') {

ここには適切な比較演算子 (==または===) が必要です。あなたが今していることは、すべての場合に値SUを割り当てることです。$user_role

このような問題を回避するためのちょっとしたプログラミングの提案は、次のように比較順序を反転することです。

if ('SU' == $user_role) {

そうすれば、 or=の代わりに誤って入力した場合に、実行したくないことを実行しているときにコードが静かに実行されるのではなく、エラー出力が表示されます。=====

于 2013-02-06T23:16:18.317 に答える