如何在php中20分钟后为相同的电子邮件地址生成随机代码?
事实上,我正试图为所有用户生成一个随机代码。但困难在于,当用户输入电子邮件id时,代码已经生成,即使他们在一秒钟后单击它,新代码也会生成。这就是我面临的问题如何在php中20分钟后为相同的电子邮件地址生成随机代码?,php,Php,事实上,我正试图为所有用户生成一个随机代码。但困难在于,当用户输入电子邮件id时,代码已经生成,即使他们在一秒钟后单击它,新代码也会生成。这就是我面临的问题 我希望每个老用户只在20分钟后获得其代码。请帮我一个忙。因为您希望向每个用户发送其代码,最好的解决方案是使用Cron作业计划任务 此任务可以每2分钟运行一次,并将代码发送给所有可有效接收代码的用户 您必须创建一个调用PHP脚本的任务。例如: $fetch=mysql_query("select time from code where u
我希望每个老用户只在20分钟后获得其代码。请帮我一个忙。因为您希望向每个用户发送其代码,最好的解决方案是使用Cron作业计划任务 此任务可以每2分钟运行一次,并将代码发送给所有可有效接收代码的用户 您必须创建一个调用PHP脚本的任务。例如:
$fetch=mysql_query("select time from code where user_email='$email'");
$db_time=mysql_fetch_array($fetch);
$code= createRandomCode().time();
$current_time=date('Y-m-d H:i:s');
echo "present time".$current_time;
$time_string=strtotime($current_time);
//echo $time['time']."-".$time_string;
$time_diff=($time_string - $db_time);
echo $time_diff;
//if time difference is less than 60,then its seconds
if ($time_diff < 60) {
$result=$time_diff . " seconds";
echo $result;
}
//if time difference is greater than 60 and lesser than 60*60*60 ,then its minutes
if (($time_diff > (60)) && ($time_diff < (60 * 60 * 60))) {
$result=round($time_diff / (60 * 60)) . " minutes";
echo $result;
}
//if time difference is greater than 60*60*60 and lesser than 60*60*60*24,then its hours
if (($time_diff > (60 * 60 * 60)) && ($time_diff <= (60 * 60 * 60 * 24))) {
$result=round($time_diff / (60 * 60 * 60)) . " hours";
echo $result;
}
if ($time_diff > (60 * 60 * 60 * 24)) {
$result=round($time_diff / (60 * 60 * 60 * 24)) . " days";
echo $result;
}
下面是一些关于Cron作业的文档,可以帮助您开始:
如果您选择此解决方案,我建议您创建一个单独的表,该表仅用于存储[用户id,发送代码的时间]
另外,不要忘记在字段上添加索引,因为它会被大量查询。真正随机的东西不会如此容易地被重复,否则它一开始就不是随机的。我认为你最好尝试一个散列算法,然后给他们发送一个散列。否则,如果这不安全,您可以保存为该特定用户生成的随机字符串,并在他们再次请求时再次发送该字符串,这并不安全,因为您的代码似乎与您的问题无关。。。你想创建什么样的随机码?用户是否触发此代码生成?您的代码看起来就像是从另一个源代码复制过来的……创建一个php脚本,该脚本查询所有能够接收代码的有效用户。创建一个cron作业,该作业每2、5或10分钟调用上一个脚本。你已经创建了脚本,所以你需要检查我发布的链接以开始cron作业。我需要更好的解决方案。给我一个简单的解决方案。
*/2 * * * * /usr/bin/wget http://example.com/myscript.php >/dev/null