Firefox bile yönlendirmelerden sonra sayfa 2, sayfa 1 yeniler

2 Cevap php

Bu, aşağıdaki komut ile yenkimliken bir oldukça garip ve rahatsız edici bir sorundur.

  1. script.php ve script.php?second: Biz iki sayfa var söylüyorlar.
  2. Sayfa 1, bazı veritabanı girdilerini oluşturur ve 2 sayfaya yönlendirir.
  3. 2. sayfasında, kullanıcının sözkonusu girdiler için bir editör ile sunulmaktadır.

Nedense sayfa 1 ilk denemede çöküyor, ve bazı hata mesajı yazdırır ise, garip bir şey happend olacaktır. Biz sayfa 1 (ve gayet yönlendirir bu kez) yenilerseniz, (sayfa 2) her ardışık yenileme aslında sayfa 1 yenileyin ve tekrar 2. sayfaya yönlendirir.

Yukarıdaki örnekte bu ben 2. sayfaya yönlendirerek aşmak istediğiniz sorun her yenileme için yeni veritabanı girişleri oluşturmak istiyorum.

<?php

header('Content-type: text/plain');

session_start();

if (!isset($_GET['second'])) {

    $_SESSION['counter'] = isset($_SESSION['counter']) ? $_SESSION['counter'] + 1 : 1;
    /*$_SESSION['counter'] = 0;
    exit('asd');*/
    header("Location: {$_SERVER['PHP_SELF']}?second", true, 303);
    exit;

}

echo "Counter: {$_SESSION['counter']}";

Yukarıdaki tam komut dosyasını denemek için, ilk önce yorumladı kodu sağlayarak, yorumladı kodu bozulmamış ile çalıştırın.

Ben 301, 302 ve 303 yönlendirmeleri denedim. Birisi biliyor mu why this is happening?

2 Cevap

Dan RFC 2616:

   10.3  Redirection 3xx .............................................61
   10.3.1   300 Multiple Choices .....................................61
   10.3.2   301 Moved Permanently ....................................62
   10.3.3   302 Found ................................................62
   10.3.4   303 See Other ............................................63
   10.3.5   304 Not Modified .........................................63
   10.3.6   305 Use Proxy ............................................64
   10.3.7   306 (Unused) .............................................64
   10.3.8   307 Temporary Redirect ...................................65

Eğer "kalıcı" yönlendirmeler kullanılarak çünkü ben, tarayıcınızda önbelleğe yönlendirmeyi görüyoruz düşünüyorum.

(O ne olduğunu öğrenmek ve bize bildiriniz!) Durum kodu 307 deneyin veya varsayılan kullanmak tamamen bu parametreyi atlarsanız

Olsun değişken, ikinci set ise kontrol ediyoruz. Ancak size yönlendirme üzerinde ayarlayın değil.

Denemek

header("Location: {$_SERVER['PHP_SELF']}?second=1", true, 303);