Вопрос

Вероятно, я упускаю из виду здесь что-то действительно очевидное.

Комментарии приведены для того, чтобы помочь объяснить любой специфичный для библиотеки код.

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.Я добился этого, но в случае отсутствия печенья возникал уродливый ?cookies=false в URL-адресе.

Это было нормально, но затем, если вы перезагрузили страницу и снова включили cookies, я хотел перенаправить пользователя, чтобы он удалился ?cookies=false в URL-адресе (позволяя методу перепроверить и узнать, что cookies теперь являются включен.).

Это было полезно?

Решение

После $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 является ложным, мы перенаправляем на add ?cookies=false, и вернитесь к случаю 3.

Другие советы

Вы, должно быть, что-то упускаете, так как там является в этом коде нет цикла.Если вы имели в виду, что браузер является зацикливанием (например,получение непрерывных перенаправлений), затем я рекомендую установить Живые HTTP-Заголовки расширение для Firefox и посмотрите, что браузер и сервер на самом деле говорят друг другу.Включение некоторого кода ведения журнала в приведенный выше фрагмент также может быть поучительным.

Обновление для комментариев:

Тогда я действительно рекомендую помещать инструкции для печати внутри ifs таким образом, вы можете видеть, через какие из них вы проходите и каковы различные значения.Ясно что - то настраивается не так, как вы предполагали, так что теперь вам нужно выяснить, что это такое на самом деле.

Одна вещь, с которой я сталкивался несколько раз, заключается в том, что сам код в порядке, но есть файл .htaccess, который работает против вас, поэтому дважды проверьте все файлы .htaccess в любом из каталогов, начиная с DOCUMENT_ROOT.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top