Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中20分钟后为相同的电子邮件地址生成随机代码?_Php - Fatal编程技术网

如何在php中20分钟后为相同的电子邮件地址生成随机代码?

如何在php中20分钟后为相同的电子邮件地址生成随机代码?,php,Php,事实上,我正试图为所有用户生成一个随机代码。但困难在于,当用户输入电子邮件id时,代码已经生成,即使他们在一秒钟后单击它,新代码也会生成。这就是我面临的问题 我希望每个老用户只在20分钟后获得其代码。请帮我一个忙。因为您希望向每个用户发送其代码,最好的解决方案是使用Cron作业计划任务 此任务可以每2分钟运行一次,并将代码发送给所有可有效接收代码的用户 您必须创建一个调用PHP脚本的任务。例如: $fetch=mysql_query("select time from code where u

事实上,我正试图为所有用户生成一个随机代码。但困难在于,当用户输入电子邮件id时,代码已经生成,即使他们在一秒钟后单击它,新代码也会生成。这就是我面临的问题


我希望每个老用户只在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