【问题标题】:How can you embed PHP within a Javascript function?如何将 PHP 嵌入到 Javascript 函数中?
【发布时间】:2014-06-10 17:28:40
【问题描述】:

我正在尝试将验证码选项添加到网站上的特定页面。页面的验证代码是用 Javascript 编写的,PHP CAPTCHA 文档 (http://www.phpcaptcha.org/documentation/quickstart-guide/) 是严格用 PHP 给出的。我已经设法将 CAPTCHA 框添加到页面和其他所有内容,直到代码验证用户的 CAPTCHA 条目。我无法将两者合并,因为:

a) 它们是用不同的语言编写的 b) 我的 PHP/Javascript 知识非常基础

这是页面原始验证码的sn-p:

function validate(formData, jqForm, options){

    // # Valid?
    valid = false;

    // # Validate Contact Form
    var errs = new Array();

    // # Contact Name
    if($('#ContactName').val() == ''){
        errs.push(['#ContactName', 'Enter your name.']);
    } else if(label = $('#ContactNameLabel label.error-message')){
        label.fadeOut();
    }

我想重复相同的过程,但用户的验证码条目除外。 PHP CAPTCHA 文档中给出了以下代码:

include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';

$securimage = new Securimage();

if ($securimage->check($_POST['captcha_code']) == false) {
    // the code was incorrect
    // you should handle the error so that the form processor doesn't continue

    // or you can use the following code if there is no validation or you do not know how
    echo "The security code entered was incorrect.<br /><br />";
    echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
    exit;
}

可以在上面给出的链接中找到代码以及说明。我的问题是:如何在我拥有的 Javascript 函数中实现给定的 PHP 代码?据我了解,只要论坛是使用 PHP 编写的(并且我可以确认我正在处理的网站是使用 CakePHP 构建的),就可以将 PHP 嵌入到 Javascript 中 - 我只是迷失了语法/如何去执行这个(如果可能的话)。

如果有人能向我伸出援助之手,将不胜感激!先感谢您。

【问题讨论】:

  • 您需要了解服务器端代码和客户端代码的区别。
  • 在理解了这一点之后,您只需将该表单发布到一个 PHP 代码中,该代码将检查验证码。您不必将其嵌入到 JS 中
  • 感谢两位的回答。 @Hanky웃Panky 你能给我更多的了解你指的是什么吗?我假设(如果我错了,请纠正我),在 JS 中创建一个变量,作为 POST 参数传递给 PHP 表单,一旦验证它就会传回 JS,页面继续照常。你指的是这个吗?

标签: javascript php validation cakephp captcha


【解决方案1】:

如果 JavaScript 在视图中(而不是在 .js 文件中),您可以在 JavaScript 中编写 PHP

示例:

<?php
$message = "Hello World";
?>

<script>
    alert("<?php echo $message; ?>");
</script>

【讨论】:

    【解决方案2】:

    您不能这样做,因为 PHP 是一种服务器端语言,而 Javascript 是一种客户端语言。当您的浏览器看到该页面时,服务器上的所有 PHP 处理都已完成,剩下的就是页面的客户端呈现。您需要在服务器端验证 CAPTCHA。

    【讨论】:

    • 是的。此外,如果您使用 javascript 而不是在服务器端进行验证,那么无论如何都无法阻止某人绕过 javascript 验证并向您的表单发送垃圾邮件。这违背了验证码的目的
    • 感谢两位的回答。 @Nightwolf 你建议我怎么做? PHP CAPTCHA 网站建议您在处理完所有其他条目(例如姓名、电子邮件等)后进行 CAPTCHA 验证。因此,我对如何在不触及现有 javascript 的情况下合并它感到困惑。你认为这是不可能的/应该从头开始重做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2014-05-02
    • 2011-03-22
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多