Neden bu HTTP isteği sürekli döngü nedir?

2 Cevap php

Herhalde burada gerçekten belirgin bir şey bakan değilim.

Yorum herhangi bir kütüphane özel kodu açıklamak için vardır.

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;

    }

Öncelikle, ben çerezler etkin olduğunu kontrol etmek için kolay bir yol istedi. Ben bu elde, ama hiçbir kurabiye durumunda, çirkin ?cookies=false URL vardı.

Tamam oldu, ama sayfayı yeniden ve çerezler tekrar etkin olması vermedi eğer URL ?cookies=false çıkardı yüzden o, ben yöntemi yeniden kontrol ve öğrenmek için izin (kullanıcıyı yönlendirmek istediğini tanımlama şimdi { [(1)]} sağladı.).

2 Cevap

Sonra $cookiesEnabled = ($testCookie === $random);, 4 durumlar vardır:

  1. $cookiesEnabled doğrudur ve $_GET['cookies'] === 'false' geçerlidir
  2. $cookiesEnabled doğrudur ve $_GET['cookies'] === 'false' yanlıştır
  3. {[(0)] false} ve $_GET['cookies'] === 'false' doğrudur
  4. {[(0)] false} ve $_GET['cookies'] === 'false' yanlıştır

Olgu 1 ilk if bloğu tarafından işlenir. return deyimi olgu 2 ve 3 işlemek için tasarlanmıştır; İkinci if bloğu sadece davayı 4 işlemek için tasarlanmıştır, ancak durumda 3, URL zaten ?cookies=false vardır. davayı 3 ve 4 hem de yakalar, ama beri {[(4) ] false}, biz [(3)]} {ekleyebilir ve geri durumda 3 içine'geçiş yönlendirmek.

O kodda var is hiçbir döngü beri bir şey dışarı bırakarak gerekir. Eğer browser (örn. sürekli yönlendirmeler oluyor) döngü olduğunu demekse, o zaman ben tarayıcı ve sunucu aslında birbirlerine ne söylediğini Firefox için Live HTTP Headers uzantısı yüklenmesi tavsiye ve izle. Yukarıdaki kod parçasında bazı günlük kod koyarak da öğretici olabilir.

Update for comment:

Sonra gerçekten içinde yazdırma ifadeleri koyarak tavsiye if bu yüzden size geçiyoruz ve çeşitli değerler ne hangilerinin görebiliyor. Açıkça something bunu olacağını düşündüm şekilde ayarlanır almıyor, bu yüzden şimdi bunun aslında ne olduğunu öğrenmek gerekir.

Ben birkaç kez karşılaştığım bir şey kodu kendisi Tamam olduğunu, ancak orada size karşı çalışan bir. Htaccess dosyası, yani DOCUMENT_ROOT başlayarak, dizinleri herhangi bir çift kontrol herhangi bir. Htaccess dosyaları gidin.