【问题标题】:execute javascript before return in php在php中返回之前执行javascript
【发布时间】:2010-06-10 17:46:37
【问题描述】:

我确实有一个自定义 php 脚本来验证验证码并发送电子邮件。如果 php 脚本成功发送邮件,则返回“true”。这是由以下人员完成的:

if(!$Error){
      echo "true";
      exit;
    }

在返回 true 之前,我想执行一个 jQuery 命令来刷新验证码图像。我不应该在客户端这样做,因为从垃圾邮件发送者的角度来看这可能是有风险的。

刷新验证码图片,命令为:

jQuery('#captcha').attr('src', ('php/captcha/captchaimage_show.php?' + Math.random()));

在通过“echo”返回任何结果之前,我需要在 php 脚本中调用此命令

普拉尚特

【问题讨论】:

  • @snowlord 他不在乎。他只是来滥用他人的善意。

标签: php jquery captcha


【解决方案1】:

您需要重新考虑您的方法。 PHP 和 JavaScript 在不同的计算机上运行,​​并通过无状态请求/响应协议进行通信。

任何 PHP 脚本都必须在 JS 运行之前完整运行。

只有在客户端发出 HTTP 请求时才能在它们之间传递数据。

您不能在客户端以外的任何地方执行需要在客户端上运行的任何 JavaScript。

【讨论】:

  • 但是我需要在发送邮件后刷新验证码图像。我可以通过在发送邮件的 jQuery.post 命令之后执行上面提到的 jQuery 语句来做到这一点。我是网络编程的新手,我想如果我在客户端这样做,它可以被忽略/删除,然后垃圾邮件发送者可以通过更改电子邮件输入字段继续发送邮件。
  • @user354051:您的问题是您允许多次使用验证码。您是否更改显示的内容(客户端或服务器端)都没有关系,因为垃圾邮件发送者仍然可以提交旧的验证码。使用后需要删除,不允许再次使用相同的验证码(除非以后随机生成)。
【解决方案2】:

我会说主要问题是通过 AJAX 发送邮件。您应该定期进行 POST,然后使用新的验证码重新加载整个页面。另一种可能的解决方案是通过 AJAX 发送邮件,然后在 AJAX 响应中返回“true”。或者甚至在响应中返回新的验证码并使用 jQuery 进行更改。但我不知道它是否适用于您的验证码系统。

【讨论】:

    【解决方案3】:
    file_get_contents("http://your-server/project-path/php/captcha/captchaimage_show.php?".random(1,100));
    

    会解决你的问题

    干杯!!!

    【讨论】:

      【解决方案4】:

      关于您的代码:

       if(!$Error){
      

      (我猜 $Error 是您的邮件函数的返回类型。如果不是,请忽略此帖子并让我知道,以便我将其删除)。

      如果邮件被成功接收,则返回 TRUE,否则返回 FALSE。

      重要的是要注意,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地。

      PHP.net:bool mail ( string $to , string $subject , string $message)

      仅当您想检查电子邮件是否已发送时,不要依赖 mail() 返回值。

      【讨论】:

        猜你喜欢
        • 2020-04-05
        • 2018-10-26
        • 1970-01-01
        • 2017-06-07
        • 1970-01-01
        • 2018-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多