【问题标题】:How can I generate a random string using php and only once per day?如何使用 php 生成随机字符串并且每天只生成一次?
【发布时间】:2018-10-11 20:55:32
【问题描述】:

我有生成随机字符串的代码,但我只想每天生成一次随机字符串。

这是在每次页面加载时生成随机字符串的代码。我怎样才能做到这一点?

function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));

for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}

return $key;
}
$sehiradi = "diyarbakir";
$subdomainadi = "$sehiradi."."".random_string(5);

【问题讨论】:

  • 您需要找到某种类型的存储系统(文件/数据库)来在页面加载之间持久保存这些数据。
  • 将一天生成的随机字符串存入数据库。在每次会话加载时,检查当前日期的数据库中是否已存在字符串。如果是,则返回;否则生成一个新的并存储在数据库中
  • 您也可以从包含的文件中回显结果并运行 crontab
  • @MadhurBhaiya 我没有在数据库中注册代码和子域我只需要每天创建一次随机字符串
  • 它需要有多随机?像sha1('someString'.date('Ymd').'someString'); 这样的哈希函数可以解决你的问题?

标签: php string random generate


【解决方案1】:

您可以使用带有当前日期的哈希函数来获得相同的结果。

$sehiradi.substr(sha1('someString'.date('Ymd')),0,5);

这对你有用,因为哈希总是会用相同的输入带来相同的结果。每天,该函数将使用不同的输入值,随着日期的变化。

编辑:使用您可以拥有的价值观:

$sehiradi = "diyarbakir";
$subdomainadi = $sehiradi.substr(sha1('someString'.date('Ymd')),0,5);

请用您想到的某个键替换“someString”。关键是让别人很难知道你的“随机”字符串的来源。

【讨论】:

  • 我会投赞成票,但我现在不在他们中间。很漂亮;-) 我会说“这就是票”。
  • 感谢来源。我试过这样 $sehiradi = "diarbakir"; $subdomainadi = $sehiradi(sha1('someString'.date('Ymd')),0,5);但它会在..中调用未定义的函数 diyarbakir()
  • 编辑使用示例。
  • 感谢您的编辑。不是我的母语。在这里尽我所能:)。
【解决方案2】:

您是否尝试过查看 php cookie 并将其存储到具有 ttl 1 天的 cookie 文件中? 我之所以这么说只是因为您提到您不想将其存储在数据库中

【讨论】:

  • cookies 是用户唯一的,如果他希望所有用户使用相同的字符串怎么办?
  • 是的,我希望所有用户都使用相同的字符串,但一天又一天,所有用户都需要另一个字符串
  • 那么我建议将其存储到带有生成日期的 txt 文件中。 @FrankerZ 是对的,他需要一个存储系统。
【解决方案3】:

由于您不想将此信息存储在数据库中,并且可能不想使用 cookie,因为它们是特定于用户的,这里有一种不同的方法:

使用当前日期(仅日、月和年)作为随机数生成器的种子。 这将使它每天都在变化,并且对所有用户都相同,而无需保存任何数据。

【讨论】:

  • 这更像是一个评论,我已经说过很多次了。
  • 如何将当前日期函数添加到我的代码中?有什么想法吗?
  • @FunkFortyNiner 好吧...不是真的...您的方法是检查今天是否仍然是特定日期,这意味着您需要保留生成最后一个字符串的时间。跨度>
  • @Ciciboy1 不,不是这样。我本来想自己做一个答案,但因为我几年前写的一个单行字在我现在使用的另一台 PC 上并且不记得我是如何做到的,所以我做不到,这很奇怪光滑大声笑!
  • @FunkFortyNiner 现在我真的很想知道你是如何做到这一点而没有在任何地方保存任何东西的,当你找到你的解决方案时请标记我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多