Domanda

Probabilmente sto affaccia qualcosa di davvero evidente qui.

I commenti sono in per aiutare a spiegare qualsiasi codice specifico biblioteca.

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;

    }

In primo luogo, ho voluto un modo semplice per verificare se i cookie sono stati attivati. Ho raggiunto questo, ma in caso di nessun cookie, c'era un brutto ?cookies=false nell'URL.

E 'stato OK, ma poi se si ricarica la pagina e ha fatto attivare i cookie di nuovo, ho voluto reindirizzare l'utente in modo che tolse ?cookies=false nella URL (che consente il metodo per ricontrollare e imparare che i cookie ora sono abilitato.).

È stato utile?

Soluzione

Dopo $cookiesEnabled = ($testCookie === $random);, ci sono 4 casi:

  1. $cookiesEnabled è vero e $_GET['cookies'] === 'false' è vero
  2. $cookiesEnabled è vero e $_GET['cookies'] === 'false' è falsa
  3. $cookiesEnabled è falso e $_GET['cookies'] === 'false' è vero
  4. $cookiesEnabled è falso e $_GET['cookies'] === 'false' è false

Caso 1 è gestito dal primo blocco if. La dichiarazione return ha lo scopo di gestire i casi 2 e 3; il secondo blocco if destinato a gestire solo caso 4, ma cattura sia il caso 3 e 4. Nel caso 3, l'URL già ha ?cookies=false, ma poiché $cookiesEnabled è falso, si reindirizzare aggiungere ?cookies=false, e il ciclo di nuovo nel caso 3.

Altri suggerimenti

Devi essere lasciando fuori qualcosa dal momento che ci è alcun ciclo in quel codice. Se si intende che il Browser è un loop (ad esempio, ricevendo continue redirect), allora vi consiglio di installare il intestazioni HTTP live estensione a Firefox e guardare ciò che il browser e il server sono in realtà da dire gli uni agli altri. Mettere in un certo codice di registrazione nel frammento di cui sopra potrebbe anche essere istruttivo.

Aggiornamento per un commento:

Poi vi consiglio davvero mettendo in istruzioni di stampa all'interno dei ifs modo da poter vedere che quelli che si sta attraversando e che cosa i vari valori. Chiaramente qualcosa non è sempre impostato il modo in cui si pensava che sarebbe stato, in modo da ora è necessario scoprire che cosa sia in realtà.

Una cosa che ho incontrato più volte è che il codice stesso è OK, ma c'è un file .htaccess che sta lavorando contro di voi, in modo da andare doppio controllo tutti i file .htaccess in ognuna delle directory, a partire da DOCUMENT_ROOT.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top