さて、各ページごとに1人のユーザーに1回のビューを許可し、そのページを再度表示できないようにするCookieを送信したいのですが、Cookieは苦手です。IPで行いますが、クッキー。これは可能ですか?どうすればいいですか?
4 に答える
最も簡単な答え:
if(isset($_COOKIE['myCookie'])){
die('Not allowed! Only one view per user!');
}
else{
setcookie('myCookie', true);
}
//content here
セッションでそれを行う:
session_start();
if(isset($_SESSION['mySession'])){
die('Not allowed! Only one view per user!');
}
else{
$_SESSION['mySession'] = true;
}
//content here
醜いエラーを表示する代わりにリダイレクト:
if(isset($_COOKIE['myCookie'])){
header('Location: error.php');
exit;
}
else{
setcookie('myCookie', true);
}
//content here
if ( !isset($_COOKIE['visited'][$page_id]) )
{
// leave him view the page
$_COOKIE['visited'][$page_id] = true;
}
else
{
// get him out of there
}
これは、インデックス/ページの先頭に記述する必要があります。
ただし、Cookie はクライアントが簡単に編集できるため、これはお勧めしません。SESSION は安全な方法です。
私は使用を避けます:
A) アクセスを制限するための Cookie (クライアントによって編集可能)
B) IP アドレス' (簡単に変更できます。)
@Basicが言ったように、おそらくログインさせて、そのユーザーに一度だけ表示させます。
それは非常に可能です
<?php
if(isset($_COOKIE['blocked'])) {die('Access denied');}
setcookie("blocked", true);
?>
もちろん、バイパス (Cookie の削除) は簡単です。
あなたが抱えている本当の問題は、信頼の問題です。Cookie はクライアントから送信されるものであり、クライアントを信頼してはなりません。
基本的に、アクセスを制限したい場合は、サーバー側で変更できないもの (たとえば、ユーザーにログインを強制する、ユーザーと関連付ける) の記録を保持するか、それを受け入れる必要があります。不安定な防御。
企業内の多くのユーザーが同じ IP アドレスを持っている可能性が高いため、IP アドレスも適切ではないことに注意してください。したがって、1 人をブロックするとすべてがブロックされます。また、自宅にいる一部のユーザーは、モデム/ルーターを切断/再接続するだけで新しい IP アドレスを取得できます。