每天相同的随机数php

时间:2015-03-29 21:37:04

标签: php random

我想通过查找帖子的ID显示当天的引用,所以我使用种子作为最低和最高的ID,所以每天我得到一个随机ID,这将显示随机发布每一天。 我每天使用它生成相同的随机数:

mt_srand(crc32(date('D d F Y')));
echo $random = (mt_rand(1,8288));

这完全适用于php 5.3或更低版本但是我的其他服务器之一是版本5.4.33。它不起作用,每次都会创建一个新的。我已经更改了php版本来测试它,似乎它是影响它的版本。 是否有另一种方法来生成一致的随机'每天都有号码?我需要一个数字,以便我可以查询数据库并每天显示一个特定的帖子。

我不想创建另一个表或添加另一行来为每个帖子添加日期,因为这意味着我必须为每个帖子创建未来日期,并且已经有太多行要做

2 个答案:

答案 0 :(得分:0)

看一眼PHP manual for mt_srand告诉你:

  

PHP中的Mersenne Twister实现现在使用了新的种子   Richard Wagner的算法。相同的种子不再生产   他们在以前的版本中所做的相同的值序列。这种行为   预计不会再次改变,但依赖它是不安全的   尽管如此。

所以你需要做的是使用"糟糕的旧" srand rand -functions。他们将产生你追求的结果。

我想添加一个最后的注释:不要使用这些函数(或mt_rand)用于任何与安全相关的as stated here

答案 1 :(得分:0)

如果您需要每日身份证,我想到的最简单的方法是:

$today_code = substr( date("D") , 0,1) .  substr( date("j") * date("Y") , 0, $your_desidered_lenght = 2);

这将产生格式= A12的ID,其中" A"是本周的第一个字母," 12"是整数,将在整个当天生成。此tecnique ID是:

  • 代码,易于阅读
  • 作为输出,以某种方式可读。你肯定知道在一周的哪一天创建了。
  • 轻松灵活地自定义