【问题标题】:Need to generate random number after time interval需要在时间间隔后生成随机数
【发布时间】:2011-10-03 11:52:15
【问题描述】:

我正在使用我自己的安全表单,或者您可以提出安全挑战问题。

但问题是我每天都要手动更改这个问题。

有什么办法可以每5分钟自动更换一次吗?

这是代码:

if (!$_POST['security_question'] || $_POST['security_question'] != '**PUT HERE YOUR QUESTION?**' ) {
 $errors[] = t('You must answer security question correctly!');
 }
<tr class="row1">
 <td>'.t('Security Question:').'</td>
 <td>**PUT HERE YOUR QUESTION?**

 <input type="text" name="security_question"/>
 </td>
 </tr>

所以我想更改链接“把你的问题放在这里?”这两种情况都是在一段时间后随机发生的。

【问题讨论】:

  • 我试图改进您的拼写和语法,但不知道如何理解“froum”...
  • 抱歉……我不是英国人……

标签: php security random


【解决方案1】:

我得到了答案,它运行良好..!! 感谢每一个人

// Create a random number between 0 and 9999 every 5 minutes
function random() {
  $interval = 60*5; // Interval in seconds
  srand(floor(time() / $interval)); 
  echo rand(0, 9999); 
}

【讨论】:

    【解决方案2】:

    如果我是你,我不会重新发明轮子并寻求经过验证的解决方案,例如 reCaptcha

    但是,如果您真的必须想出自己的解决方案 - 像往常一样,有很多答案可以被认为是正确的。

    首先 - 如果您使用数据库,您可以在其中存储一整套安全短语并随机挑选一个 - 如果使用 MySQL:

    SELECT question,answer FROM security_questions ORDER BY RAND();
    

    或者,您可以简单地将一堆问题存储在一个数组中:

    $myQuestions = array("What is four plus three?", "What is two plus one?");
    $myAnswers   = array("7","3");
    
    $random = array_rand($myQuestions);
    $rndQuestion = $myQuestions[$random];
    $rndAnswer   = $myAnswers[$random];
    

    或者,如果您正在使用数学问题,您也可以即时制作:

    $value1 = rand(0,10);
    $value2 = rand(0,10);
    
    $question = "What is ".$value1." plus ".$value2."?";
    $answer = $value1 + $value2;
    

    在所有这些情况下,您必须非常注意的是,以黑客无法绕过它的方式对您的页面进行编码,或者从后台进行的 HTTP 请求中获取答案等。

    我仍然会使用 reCaptcha :)

    【讨论】:

    • 感谢您的回答,我也在使用 reCptcha,但许多垃圾邮件发送者曾经破解它并通过链接向网站发送垃圾邮件。!!是的,我尝试了您的解决方案,但我想为它创建一个单独的函数然后使用它..!!所以这对我来说似乎是个麻烦
    • 感谢您的回复,我使用function randommmm() { srand(floor(time() / (60*60*12))); echo rand() % 10000; }得到了解决方案
    • 你这么说很有趣,我从来没有遇到过让任何人通过不是有效帐户的验证码的问题。这是我选择的解决方案,因为它从未让我失望!
    • 这真的不好笑..我也喜欢重新验证码,但可能有网站只需 1 美元就可以破解它在谷歌上查看..
    猜你喜欢
    • 2022-12-04
    • 1970-01-01
    • 2017-06-25
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2018-10-11
    • 2014-06-12
    相关资源
    最近更新 更多