【问题标题】:Reuse PHP image randomizer重用 PHP 图像随机化器
【发布时间】:2011-07-02 22:23:04
【问题描述】:

我在 PHP 上编写了一个简单的图像随机化器,它使用 rand() 函数从列表中选择一个随机图像。该代码完美运行,当我将其作为图片包含在我的 html 中时,会生成一个随机图像。

当我尝试将它包含在同一个 html 中两次时,问题就出现了。我包含它的两次都会生成并显示一个随机图像,但它将是相同的图像。换句话说,我的页面上出现了重复的随机图像。

解决这个问题的一个简单方法是简单地复制 randomizer.php,给它一个新名称,然后在 HTML 中包含这两个图像。我不想这样做的原因是因为我的最终 HTML 将有大约 25 张图片,我只是觉得应该有更好的方法来做到这一点。请记住,我不能将任何 PHP 函数添加到我的 HTML 中,因为我的文件托管在不同的服务器上,而且我的 HTML 服务器不支持 PHP。

如果有人知道除了创建 25 个我的 randomizer.php 文件副本(或创建 25 个包含它的不同文件)之外的更好的修复方法,请告诉我。我绝对会感谢您的意见!

非常非常感谢!!

这是代码的sn-p:

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];
}

【问题讨论】:

  • 粘贴你得到的东西,这样我们就可以从某个地方开始

标签: php html image random


【解决方案1】:

我的猜测是 rand() 要么没有重新播种,要么以相同的值播种。 您是否考虑过调用 srand() - 或 mt_srand() 和 mt_rand() 的“更好的随机数生成器”组合?

【讨论】:

  • 我试过调用 srand() 但它并没有真正起到什么作用。我的想法是,一旦浏览器将图像与文件名关联起来,所有函数都不会被再次调用,因此随机函数也不会被调用。
  • 脚本是返回图片(内容类型:image/jpeg)还是文件名来加载静态图片?我同意 fazo,我们需要更多信息,否则我们只是在猜测。
  • 它正在返回一个图像。我在原始问题中添加了代码的 sn-p :)
【解决方案2】:

可能是浏览器认为它是同一个图像并且正在缓存,尝试设置图像的名称(发出带有内容处置/文件名 IIRC 的标题)和/或在末尾添加一个唯一标签带有随机字符串的图像名称,(例如image.jpg?e0.6613725793930488

【讨论】:

  • 谢谢!在我的网址末尾添加 ?1 ?2 ?3 等会阻止我的浏览器缓存!太感谢了! :)
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多