質問

おそらくここで非常に明白な何かを見落としています。

ライブラリ固有のコードの説明に役立つコメントが含まれています。

public function areCookiesEnabled() {

        $random = 'cx67ds';

        // set cookie
        cookie::set('test_cookie', $random);

        // try and get cookie, if not set to false
        $testCookie = cookie::get('test_cookie', false);


        $cookiesAppend = '?cookies=false';

        // were we able to get the cookie equal ?
        $cookiesEnabled = ($testCookie === $random);

        // if $_GET['cookies'] === false , etc try and remove $_GET portion
        if ($this->input->get('cookies', false) === 'false' AND $cookiesEnabled) {
          url::redirect(str_replace($cookiesAppend, '', url::current())); // redirect 
          return false;
        }

        // all else fails, add a $_GET[]
        if ( ! $cookiesEnabled) {

          url::redirect(url::current().$cookiesAppend);
        }

        return $cookiesEnabled;

    }

まず、Cookie が有効になっているかどうかを簡単に確認する方法が必要でした。これは達成できましたが、Cookie がない場合は、醜い問題が発生しました。 ?cookies=false URLにあります。

それは問題ありませんでしたが、ページをリロードして Cookie を再び有効にした場合、ユーザーをリダイレクトしてクッキーを剥がしたかったのです。 ?cookies=false URL 内 (メソッドが Cookie を再チェックして学習できるようになりました) 有効になります。)。

役に立ちましたか?

解決

$cookiesEnabled = ($testCookie === $random);, 、次の 4 つのケースがあります。

  1. $cookiesEnabled それは真実であり、 $_GET['cookies'] === 'false' それは本当です
  2. $cookiesEnabled それは真実であり、 $_GET['cookies'] === 'false' 偽です
  3. $cookiesEnabled は誤りであり、 $_GET['cookies'] === 'false' それは本当です
  4. $cookiesEnabled は誤りであり、 $_GET['cookies'] === 'false' 偽です

ケース 1 は最初の担当者によって処理されます。 if ブロック。の return ステートメントはケース 2 と 3 を処理することを目的としています。二番目 if ブロックはケース 4 のみを処理することを目的としていますが、ケース 3 とケース 4 の両方をキャッチします。ケース 3 の場合、URL にはすでに ?cookies=false, 、 しかしそれ以来 $cookiesEnabled が false の場合、リダイレクトして追加します ?cookies=false, 、ケース 3 に戻ります。

他のヒント

をそこ以来、

あなたが何かを残しする必要がありますのそのコードではありませんループです。あなたがが(例えば連続リダイレクトを取得)、ブラウザをループしていることを意味している場合、私は<のhref = "https://addons.mozilla.org/en-US/firefox/addon/をインストールすることをお勧め3829" のrel = 『nofollowをnoreferrer』>ブラウザとサーバが実際にお互いに何を言っているか見てFirefoxのにの拡張機能とライブのHTTPヘッダー。上記のスニペットでいくつかのロギングコードに置くことも有益かもしれません。

コメントの更新:

あなたが通過つもりどれとさまざまな値が何であるかを見ることができるように

そして、私は本当にifs内部にprint文を入れてお勧めします。明らかには、あなたがそれをだろうと思った道を設定取得されていないので、今はそれが実際にあるかを調べる必要があります。

<何かを全角> 私は何度か遭遇した

一つは、コード自体はOKですが、あなたに対して働いている.htaccessファイルがあるので、DOCUMENT_ROOTから始まる、ディレクトリのいずれかで任意の.htaccessファイルをダブルチェックして行くことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top