0

管理者とユーザーの両方がログインできます。ログイン後、同じページを閲覧できます。

管理者とユーザーがアイテムを挿入、編集、削除するためのオプションがあります。

管理者は、誰でも作成したアイテムに対してこれら 3 つのタスクをすべて実行できます。ただし、ユーザーは自分で作成したアイテムに対してのみこれらのタスクを実行できます。そのため、特定のアイテムを作成した AS TO データベースに追跡があります。

$_SESSION['admin_user']管理者の場合は 1、それ以外の場合は 2 が割り当てられます。このセッション変数は、ページが管理者向けか他のユーザー向けかを決定します。

ただし、管理者がログインし、別のユーザーも同じブラウザからログインすると、セッション変数は後者の値を取得します。

なんらかの理由で、管理者とユーザーが同時に同じブラウザーにログインするというシナリオが発生する可能性があると想定してみましょう。

これら 2 人の異なるタイプのユーザーが上記の方法でサイトにアクセスした場合でも、両方が対応するページを取得できるようにする方法 (つまり、管理者がメニュー リンクをクリックすると、期待されるページと同じページが表示される)同時に同じブラウザからのすべてのユーザーに当てはまります)?

4

2 に答える 2

0

ユーザーが同じブラウザを使用している場合、ブラウザで共有されている通常のセッション機能を中継することもできません。そのため、たとえば、新しいウィンドウ/タブを開くことができます。

そのため、Cookieを使用してセッションを作成することはできません。代わりに、URL内のすべてのリクエストでセッション情報を送信する必要があります。

オプション1:単一ページのWebサイトにし、ajaxを使用してデータをロードします。

オプション2:ユーザーのURLにセッションIDを含める:s

編集:より簡単なオプションは、ユーザーにシークレットモードを使用させることです。その後、セッションは他のインスタンスと共有されません。私は時々異なるGmailアカウントに2回ログインするためにそれを使用します。(さまざまなブラウザベンダーが独自の名前で関数を呼び出します)

Edit2:まず、サーバーがブラウザにCookieを設定してセッションを作成します。そのCookieには「ランダムな」文字列が含まれているだけです。その文字列は、サーバー上のファイル(最も一般的)またはデータベース内の行(前にロードバランサーがある複数のWebサーバーがある場合に実用的です。別のユーザーがこのランダムな文字列を推測する場所にアクセスできる場合)に対応できます。ユーザーセッションへ(これはセッションハイジャックとも呼ばれます)。

セッションをCookieに保存する代わりに、のようなURLにセッションを保持することができますhttp://www.example.com/?sess_id=jdR3Tfs。このロジックは自分で非常に簡単に構築できますが、ほとんどのWebフレームワークには、これを行うためのヘルパーがあります。たとえば、PHPなどです。

php.iniで設定

session.use_cookies=0
session.use_trans_sid=1 

上記の配置でセッションIDを手動で取得する必要がある場合があります。正しく覚えていれば、次のようになります。

session_id($_GET['sessionid']);
session_start();

また

session_id($_GET['PHPSESSID']);
session_start();

print_r($_GET)これが作成されたURLを実行するか、視覚的に確認できることを確認してください。

それ以外の場合は、より手動で行うことができます

<?php
// testpage.php
session_start();
if (isset($_SESSION['test']){
    $_SESSION['test'] = 'Back again!';
}
$_SESSION['test'] = 'Hello world!';
?>
<p><?php echo $_SESSION['test']; ?></p> 
<a href="testpage.php?<?php echo htmlspecialchars(SID); ?>">Click me</a>.

編集3:別の方法として、Cookieを引き続き使用できる場合は、ユーザーが「プライベートブラウジング」を有効にすることです。有効にする方法の詳細については、http ://techlogon.com/2012/05/10/comparison-of-private-を参照してください。ブラウジングイン、つまりクロームアンドファイアフォックス/

于 2012-11-16T06:48:27.347 に答える
0

$_SESSION['admin_user'] には、管理者の場合は 1、それ以外の場合は 2 が割り当てられます。このセッション変数は、ページが管理者向けか他のユーザー向けかを決定します。

if ($_SESSION['user']==1){

echo 'wHAT ADMIN CAN DO normally all even delete'; 

}else if($_SESSION['user']==2){

echo 'Maybe only add , view , update'; 

}

ページへの非ユーザーを制限するリダイレクトヘッダーを必ず作成してください

于 2012-11-16T06:17:13.453 に答える