我正在创建一个自定义的验证码,并且效果很好,但是有时它将从$rand_keys中选择一个大于显示的框数的随机数。 我该如何解决?

$color = array("red", "blue", "yellow", "white", "green", "purple", "brown", "orange", "pink", "black");
$random_num_box = mt_rand(3,8);

$numbers=array(0,1,2,3,4,5,6,7,8,9);

$rand_keys = array_rand($numbers, $random_num_box);
$ran_box =  mt_rand(0, $random_num_box);

echo "Random number of boxes:  ".$random_num_box."<br /><br />";
echo "<div>";
foreach ($rand_keys as $k=>$v) {
    echo "<div style='width: 20px; height: 20px; border: 1px solid #dcdcdc; margin-right: 2px; display: inline-block; background: ".$color[$numbers[$v]].";'></div>";
}
echo "</div>";

echo "<br />What is the color of box # ". ($ran_box + 1) ."?";
echo "<br />Answer:  ".$color[$rand_keys[$ran_box]];

===============>>#1 票数:3 已采纳

问题在于,有时您会随机选择一个大于显示的框数的数字。 这似乎来自以下两行:

$rand_keys = array_rand($numbers, $random_num_box);
$ran_box =  mt_rand(0, $random_num_box);

由于很难模拟,由于随机性,最简单的方法是找到一个示例,证明它不起作用。

从研究中,您会发现array_rand将采用一个数组并根据第二个参数(在本例中$random_num_box随机选择项的数量。 因此,我们有以下数组:

array(
 [0] => 1,
 [1] => 2,
 [2] => 3
)

现在我们继续获得随机答案( $ran_box )。 对于此示例,参数为$random_num_box = 3; 所以运行的命令是

$ran_box =  mt_rand(0, 3);

您将得到一个介于0和3之间的值(包括)。 由于您的数组大小仅为3(0-> 2),因此当您的随机数为3(或$random_num_box )时,您将得到一个错误。 这是由于尝试访问不存在的array[3]

要解决此问题,必须使最大值减小1。

$rand_keys = array_rand($numbers, $random_num_box);
$ran_box =  mt_rand(0, $random_num_box - 1);

===============>>#2 票数:1

我认为您只需要从$ran_box减去1

$ran_box =  mt_rand(0, $random_num_box-1);

  ask by TDave00 translate from so

未解决问题?本站智能推荐:

1回复

自定义登录,无验证码错误处理

我创建了一个自定义登录页面,但是当验证码为空并且处理了很长时间时,我试图将错误消息$error_message传递到$error_msg 。 我正在使用两个wp插件,一个是无验证码的Recaptcha插件,另一个是客户端模板门户。 以下是custom-login.php的完整代码
2回复

WordPress自定义形式的验证码

我在WordPress网站中有自定义表单。 跟踪IP地址,检查引荐页,验证电子邮件地址。 仍在接收垃圾邮件订阅。 尝试使用Bestwebsoft CAPTCHA,这是非常简单的CAPTCHA,但无法阻止垃圾邮件。 有什么帮助吗?
1回复

PHP-自定义验证码未调整大小

我找到了一些自定义的验证码,并且效果很好,但是我无法调整大小。 我的目标是将其设置为28px高,但是每当我将“ height”变量更改为28时,它只会扭曲,并保持相同的大小,只有文本变大且不可读。 我不知道还有什么要更改的,请您帮我解决一下吗?
1回复

创建自定义joomla验证码

我被分配为joomla中的自定义组件创建验证码验证,但我仍然坚持如何正确地完成它。 我知道有很多验证码插件,如recaptcha可用,但我需要使用公司创建的自定义验证码。 它将图像文本保存在会话中并在组件中创建图像,因此直接在浏览器中调用index.php?option=com_capt
4回复

在PHP中创建自定义验证码

我想在PHP中创建自定义的Captcha验证,并且已经编写了此代码,但是它似乎无法正常工作。 未创建映像,我找不到错误在哪里。 PHP: HTML:
1回复

带有自定义PHPBB登录页面的验证码

当您多次错误输入密码但不确定如何操作时,我正在尝试在屏幕上弹出验证码。 我已经找到了很多关于此的页面,但是它们都涉及使用模板,而这些页面都没有解释我必须在表单中添加的内容。 这是到目前为止我得到的。
2回复

自定义验证码提交表单,即使代码不正确

我使用的是自定义验证码,但即使代码不正确,也正在提交表单,这是索引页面的主要代码 index.php代码(session_start位于文件的开头) post.php代码 get_captcha.php文件 这是整个代码http://download1473.m
2回复

从自定义php复制的codeigniter中的验证码

我从自定义php复制了验证码,并将其放入了codeigniter控制器中,验证码的功能是 当我运行此程序时,它直接为我提供了整个视图的图像,但未显示我的表单。 我该如何为我的codeigniter函数更改此代码。
1回复

如何在HTML和PHP中创建自定义验证码

每次进行表单提交并停止垃圾邮件数据输入时,我们都使用验证码来停止垃圾邮件输入。 有很多验证码可用,但我尝试使用html和jquery用自定义代码创建自己的验证码。 我的CSS <script src="https://ajax.googleapis.com/ajax/libs
1回复

使用简单的数学验证码自定义联系表格

我的网站上有一份运作良好的联系表。 现在,我尝试将数学验证码添加到源中。 不幸的是,我无法使其工作。 知道如何(在哪里)包含验证码吗? 我尝试了很多事情,但是无法正常工作。 也许代码不是最好的:)我已经在stackoverflow和google中寻找解决方案,但是没有运气。