سؤال

ربما أطل شيئا واضحا هنا.

التعليقات هي للمساعدة في شرح أي رمز محددة مكتبة.

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;

    }

أولا، أردت طريقة سهلة للتحقق مما إذا تم تمكين ملفات تعريف الارتباط. لقد حققت هذا، ولكن في حالة عدم وجود ملفات تعريف الارتباط، كان هناك قبيح ?cookies=false في عنوان URL.

كان ذلك جيدا، ولكن بعد ذلك إذا قمت بإعادة تحميل الصفحة وتم تمكين ملفات تعريف الارتباط مرة أخرى، أردت إعادة توجيه المستخدم، بحيث جردت ?cookies=false في عنوان URL (السماح للطريقة بإعادة فحص وتعلم أن ملفات تعريف الارتباط الآن نكون ممكن.).

هل كانت مفيدة؟

المحلول

بعد $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 تهدف كتلة إلى التعامل مع الحالة الرابعة فقط، لكنها تصطاد كل من الحالة 3 و 4. في حالة 3، يكون عنوان URL بالفعل ?cookies=false, ، لكن منذ $cookiesEnabled هو خطأ، ونحن إعادة توجيه لإضافة ?cookies=false, ، والاستنتاج مرة أخرى في حالة 3.

نصائح أخرى

يجب أن تغادر شيئا ما منذ هناك هو لا حلقة في هذا الرمز. إذا كنت تقصد أن متصفح هو الحلقات (على سبيل المثال الحصول على إعادة توجيهات مستمرة)، ثم أوصي بتثبيت رؤوس Live HTTP. تمديد لفيرفوكس ومشاهدة ما تقوله المتصفح والخادم لبعضهما البعض. قد يؤدي وضع بعض رمز التسجيل في المقتطف أعلاه إلى مفيد أيضا.

تحديث للتعليق:

ثم أوصي حقا بوضع بيانات الطباعة داخل ifS حتى تتمكن من رؤية أي منها التي تمر بها وما هي القيم المختلفة. بوضوح شيئا ما لا يتمتع بالطريقة التي اعتقدت أنها ستكون، لذلك تحتاج الآن لمعرفة ما هو في الواقع.

شيء واحد قد واجهته عدة مرات هو أن الكود نفسه على ما يرام، ولكن هناك ملف .htaccess يعمل ضدك، لذلك انتقل إلى التحقق من أي ملفات .htaccess في أي من الدلائل، بدءا من document_root.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top