0

我再次需要帮助,这次需要一点 Javascript 代码片段。还涉及到一点 PHP。PHP如下(生成随机数)

$no1 = rand(0,9);
$no2 = rand(0,9);
$no3 = $no1+$no2;

我将其用作验证码方法,用于非常简单的联系表格。我不喜欢在谷歌搜索中找到的笨重的方法。

为了验证此代码,我使用以下 Javascript

if(document.forms["feedback"].check.value !== "<?php echo $no3; ?>"){
    window.alert("Incorrect security code");
    return false;
}

然后在我的表格中,我只是使用这个:

<?php echo $no1; ?> + <?php echo $no2; ?> = <input name="check" type="text" id="check" size="3">

这一切都按预期工作,但如果我有办法不直接在我的javascript中回显 $no3 :

if(document.forms["feedback"].check.value !== "<?php echo $no3; ?>")

那么这将消除任何查看源代码以找到答案的方式。我非常清楚这是一个简单的数学问题,如果有人知道如何查看源代码,他们绝对可以添加,但我的一位同事非常坚持这一点。

那么,有人知道有什么方法可以帮助我吗?我几乎是手工编写了大部分内容,包括 javascript,所以当我告诉我我的代码很糟糕而且过时时,请客气点..

谢谢!

4

1 回答 1

0

$no1and$no2变量放在span标签内(或任何其他您可以直接使用 Javascript 定位的内容),然后使用 JS 从这些跨度中获取值并使用它来计算 JS 中的总和,而不是使用 PHP 将其回显到源中,例如给出跨越 ID#captcha-1#captcha-2用于getElementByID检索值,然后完全在 Javascript 中进行验证。

任何有头脑的人仍然很容易弄清楚如何绕过,但至少答案不会出现在源代码中的任何地方,而不是作为 JS 变量。

如果要完全隐藏验证过程,则需要使用 JS 和 AJAX 将用户输入的总和发送到服务器端 PHP 函数,该函数检查它是否等于$no1 + $no2,然后将表单作为响应的一部分提交成功函数。

尽管如此,这仍然是一种非常弱的垃圾邮件威慑方法。

于 2013-11-08T18:20:22.213 回答