5

Cookie を使用してサイトに初めてアクセスした人のために、スプラッシュ ページにリダイレクトして、訪問したことを記憶させたいと考えています。これは簡単ですが、Cookie を無効にしている場合は、スプラッシュ ページにリダイレクトしたくありません。

私が直面している問題は、Cookie を設定すると、ページをリロードするまで PHP がそれを認識しないことです。つまり、最初の訪問者は、ホームページに 2 回アクセスするか、ページをリロードしない限り、リダイレクトされません。

これは私が持っているものですが、リロードが必要です:

setcookie("test",'1',time() + 3600,'/');
if(isset($_COOKIE['test'])){
    if(isset($_COOKIE['bfc_splash'])){}else{
        header("Location: splash/");
    }
}

私はこれを試しましたが、無限にリダイレクトするだけなので、SESSION情報はCookieに保存されているようです:

if(isset($_COOKIE['test'])){
    if(isset($_COOKIE['bfc_splash'])){}else{
        header("Location: splash/");
    }
}elseif(!isset($_COOKIE['test']) && !isset($_SESSION['cookies'])){
    setcookie("test",'1',time() + 3600,'/');
    $_SESSION['cookies'] = '1';
    header("Location: index.php");
}

Cookie を無効にする人は JavaScript も無効にする可能性が高いため、Cookie のチェックに JavaScript を使用しないことをお勧めします。ソリューションへの洞察やリンクは大歓迎です。私はこれまでのところ多くを見つけていません。

4

3 に答える 3

2

セッションを使用して、Cookie の代わりに GET を介してセッション ID を伝達できます。

参照: http://php.net/manual/en/session.idpassing.php

于 2010-02-18T16:52:19.660 に答える
2

ユーザーが Cookie を無効にしている場合、すべての訪問が最初の訪問のように見えるため、彼が初めてサイトにアクセスしたかどうかを判断することはできません。

于 2010-02-18T16:32:37.593 に答える
1

サンプル サイト barackobama.com を見ると、スプラッシュ リダイレクトからホームページにスキップするときに GET 変数が渡されます。これにより、Cookie を有効にしていないユーザーがホームページを表示できるようになります。彼らは、Cookie が無効になっている人が上部のホーム リンク (GET 変数がない) をクリックすると、再びリダイレクトされることをあまり気にしていないようです。彼らはクッキーが無効になっている人を気にしていないようなので、より良い解決策が見つからないので、私もそれに倣います.

于 2010-02-18T16:42:58.317 に答える