我在PHP上编写了一个简单的图像随机函数,它使用rand()函数从列表中选择一个随机图像。代码工作得很好,当我将它作为图片包含在我的html中时会生成一个随机图像。
当我尝试在同一个html中包含它两次时出现问题。我将包含它的两次都会生成并显示随机图像,但它将是相同的图像。换句话说,我在页面上得到了一个重复的随机图像。
解决此问题的一种简单方法是简单地复制randomizer.php,为其指定一个新名称,并在HTML中包含这两个图像。我不想这样做的原因是因为我的最终HTML将有大约25张图片,我觉得应该有更好的方法来做到这一点。请记住,我不能在我的HTML中添加任何PHP函数,因为我的文件托管在不同的服务器上,而我的HTML服务器不支持PHP。
如果有人知道一个更好的解决方案,除了创建我的randomizer.php文件的25个副本(或创建包含它的25个不同文件),请告诉我。我非常感谢你的投入!
非常非常感谢!!
以下是代码片段:
if (count($fileList) > 0) {
do { //do-while loop will get a new random image until that image has not been used yet in this session
$imageNumber = rand( 0 , ( count($fileList) - 1) ); //get random image from fileList
$iterations++;
} while( !(empty($_SESSION['img' . $imageNumber])) && iterations < 200);
$_SESSION['img' . $imageNumber] = True; //this image number has been displayed
$_SESSION['shown']++; //increments the number of shown pictures in this signature
$img = $folder.$fileList[$imageNumber];
}
答案 0 :(得分:2)
可能是浏览器认为它是相同的图像并且正在缓存,尝试设置图像的名称(发出带有内容处置/文件名IIRC的标题)和/或添加唯一标记到结尾带有随机字符串的图像名称(例如image.jpg?e0.6613725793930488
)
答案 1 :(得分:0)
我的猜测是rand()要么没有重新种植,要么播种相同的值。 您是否考虑过调用srand() - 或mt_srand()和mt_rand()的“更好的随机数生成器”组合?