需要在时间间隔后生成随机数

时间:2011-07-12 09:59:55

标签: php security random

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

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

有没有办法每隔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>

所以我想改变链接“请写下你的问题?”在两种情况下,在一段时间间隔后随机。

2 个答案:

答案 0 :(得分: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); 
}

答案 1 :(得分:0)

如果我是你,我不会重新发明轮子并去寻找经过验证的解决方案,例如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请求中获取答案等。 / p>

我仍然会使用reCaptcha:)