0

さて、各ページごとに1人のユーザーに1回のビューを許可し、そのページを再度表示できないようにするCookieを送信したいのですが、Cookieは苦手です。IPで行いますが、クッキー。これは可能ですか?どうすればいいですか?

4

4 に答える 4

1

最も簡単な答え:

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
于 2012-08-31T09:57:00.093 に答える
0
if ( !isset($_COOKIE['visited'][$page_id]) )
{
    // leave him view the page
    $_COOKIE['visited'][$page_id] = true;
}
else
{
    // get him out of there
}

これは、インデックス/ページの先頭に記述する必要があります。

ただし、Cookie はクライアントが簡単に編集できるため、これはお勧めしません。SESSION は安全な方法です。

于 2012-08-31T10:01:46.953 に答える
0

私は使用を避けます:

A) アクセスを制限するための Cookie (クライアントによって編集可能)

B) IP アドレス' (簡単に変更できます。)

@Basicが言ったように、おそらくログインさせて、そのユーザーに一度だけ表示させます。

于 2012-08-31T10:11:36.130 に答える
0

それは非常に可能です

<?php 
    if(isset($_COOKIE['blocked'])) {die('Access denied');}
    setcookie("blocked", true);
?>

もちろん、バイパス (Cookie の削除) は簡単です。

あなたが抱えている本当の問題は、信頼の問題です。Cookie はクライアントから送信されるものであり、クライアントを信頼してはなりません。

基本的に、アクセスを制限したい場合は、サーバー側で変更できないもの (たとえば、ユーザーにログインを強制する、ユーザーと関連付ける) の記録を保持するか、それを受け入れる必要があります。不安定な防御。

企業内の多くのユーザーが同じ IP アドレスを持っている可能性が高いため、IP アドレスも適切ではないことに注意してください。したがって、1 人をブロックするとすべてがブロックされます。また、自宅にいる一部のユーザーは、モデム/ルーターを切断/再接続するだけで新しい IP アドレスを取得できます。

于 2012-08-31T09:57:09.550 に答える