Rastgele sayfa PHP gidiyor

8 Cevap php

Ben aşağıda random.php için http://example.com/random.php, kod giden bir bağlantı var.

<?php
srand ((double) microtime( )*1000000);
$random_number = rand(1,100);
header( "Location: http://example.com/test?page=$random_number" ) ;
?>

Temelde ne yapmak istediğinizi rastgele bir sayfaya link. Başlangıçta çalışır, ancak ilk önce tıklayın sonra aynı sözde rasgele sayfa her zaman geri bağlantı tutar. Bu nasıl düzeltmek için herhangi bir fikir? ya da belki tamamen sorunu yaklaşım daha iyi bir yolu?

8 Cevap

Ya tarayıcı veya sunucu muhtemelen sayfayı önbelleğe alma. Php kod bu deneyin:

header("cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0");

Benim tahminim web tarayıcısı Yer yönlendirmeyi önbelleğe olacaktır. Sayfanın üstüne bazı "önbellek avı" başlıkları eklemeyi deneyin

<?php
    //from http://php.net/header
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

    srand ((double) microtime( )*1000000);
    $random_number = rand(1,100);
    header( "Location: http://example.com/test?page=$random_number" ) ;
?>

DISCLAIMER: Eğer hain amaçlar için bu kullanıyorsanız, bir geek lanet Burada sana yerleştirilir ve kısa sırayla bir grue tarafından yemiş olacak.

Belirli microtime () sizin OS desteklenir olup, başka re-tohumlama w aynı değerde / .. "This function is only available on operating systems that support the gettimeofday() system call"

Diğerleri işaret gibi tarayıcı yönlendirmeyi önbelleğe gibi, sesler; Orada HTTP yönlendirme çeşitli türleri vardır, ve durum kodu bağlı olarak, tarayıcı veya yönlendirme önbelleğe izin olmayabilir.

Sen yönlendirmek bir tür kullanıcı arayüzlerinin önbellek gerekiyordu değil bir 303 See Other, sorunu yanıt kodunu değiştirmeyi deneyebilirsiniz. Örneğin:

header( 'Location: http://www.example.com', true /* overwrite */, 303 );

HTTP hakkında daha fazla bilgi için, kodları yönlendirme HTTP 1.1 specification bir göz atın; Özellikle yönlendirmesi ile ilgilenen bölüm 10.3.

Tarayıcınızda yönlendirme önbelleğe alma ile ilgisi olabilir acaba.

Önbelleğe sizin için bir sorun çok fazla oluyor ve php aracılığıyla ulaşmak mümkün iseniz, aynı yapmak için küçük bir javascript yazabilir ve rastgele bir bağlantıyı her zaman alacaksınız emin olabilirsiniz.


function jump() {
var random = Math.floor(Math.random()*1000);

window.location="test?page="+random;
}

Um ... kodunuzu, kardeşim çalışır; belki kavramı yanlış ve size geldiğinizi sayfayı yeniden başka bir rasgele oluşturulan URL'ye götürür gerektiğini düşünüyorum ettik ...