我有一个链接,去http://example.com/random.php ,代码下面random.php。
<?php
srand ((double) microtime( )*1000000);
$random_number = rand(1,100);
header( "Location: http://example.com/test?page=$random_number" ) ;
?>
基本上我想要它做的是链接到一个随机页面。 它的工作原理开始,但第一个点击之后它保持连接回到同一所谓随机页面每一次。 任何想法如何解决这一问题? 也许更好的方式来完全解决这个问题?
无论您的浏览器或服务器可能缓存的页面。 在你的PHP代码试试这个:
header("cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0");
我的猜测是Web浏览器缓存位置重定向。 尝试添加一些“缓存无效”头到页面顶部
<?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" ) ;
?>
免责声明 :如果您在使用本作不可告人的目的,一个怪胎诅咒现寄托在你们身上,你会在短期内一个绿蓝食用。
你一定microtime中()支持您的操作系统,否则要重新播种瓦特/相同的值.. “此功能仅适用于在支持gettimeofday()系统调用的操作系统”
正如其他人所指出的那样,这听起来像浏览器缓存重定向; 有各种类型的HTTP重定向的,并且取决于状态代码,浏览器可以或可以不被允许缓存重定向。
你可以尝试改变响应代码发出303 See Other
,这是一种重定向用户代理不应该缓存。 例如:
header( 'Location: http://www.example.com', true /* overwrite */, 303 );
有关HTTP重定向代码,看一看的信息越多HTTP 1.1规范 ; 具体部分10.3,它与重定向的交易。
你有没有试过调用这srand()
? 在PHP的文档srand
说:
注 :自PHP 4.2.0开始,就没有必要用srand随机数发生器()或mt_srand(),因为这是现在自动完成。
如果缓存变得太多,你的问题,你无法通过PHP来实现,你可以写一个小的JavaScript做同样的和放心,您将获得每次随机链接。
function jump() {
var random = Math.floor(Math.random()*1000);
window.location="test?page="+random;
}
嗯...你的代码工作,兄弟; 也许你误解的概念,并认为重装你已经到达的页面应该带你到另一个随机生成的网址...