0

私はおそらくここで本当に明白なことを見落としています。

ライブラリ固有のコードを説明するのに役立つコメントがあります。

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有効になっていることを再確認して学習できるようにします)。

4

2 に答える 2

1

の後$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 を処理することを目的としています。2 番目のifブロックは、ケース 4 のみを処理することを目的としていますが、ケース 3 と 4 の両方をキャッチします。ケース 3 では、URL には既に がありますが?cookies=false$cookiesEnabledfalse であるため、リダイレクトして add?cookies=falseし、ケース 3 に戻ります。

于 2010-03-15T05:52:03.573 に答える
0

そのコードにはループないため、何かを省略している必要があります。ブラウザがループしている (例: 継続的にリダイレクトされる) 場合は、Live HTTP Headers 拡張機能を Firefox にインストールして、ブラウザとサーバーが実際にお互いに何を話しているかを確認することをお勧めします。上記のスニペットにログ記録コードを入れることも有益かもしれません。

コメントの更新:

次に、s 内に print ステートメントを挿入することを強くお勧めしifます。これにより、どのステートメントが実行され、さまざまな値が何であるかを確認できます。明らかに、何かが思ったように設定されていないので、実際にそれが何であるかを調べる必要があります.

私が何度か遭遇したことの 1 つは、コード自体は問題ないということですが、.htaccess ファイルが問題を引き起こしているため、DOCUMENT_ROOT から始まる任意のディレクトリにある .htaccess ファイルを再確認してください。

于 2010-03-15T01:30:33.080 に答える