在php中返回之前执行javascript

发布于 2024-09-05 01:22:34 字数 430 浏览 2 评论 0原文

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

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

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

要刷新验证码图像,命令是:

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

我需要在“echo”

Prashant返回任何结果之前从 php 脚本中调用此命令

I do have a custom php script that validates captcha code and sends an email. If php script is sending a mail successfully then it returns "true". This is done by:

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

Before returning true, I would like to execute a jQuery command that should refresh the captcha image. I shouldn't be doing this is client side as it might be risky from spammers point of view.

To refresh the captcha image, The command is:

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

I need to call this command from within php scripts before return any results by "echo"

Prashant

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

美羊羊 2024-09-12 01:22:34

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

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

仅当客户端发出 HTTP 请求时,才会在它们之间传递数据。

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

You need to rethink your approach. The PHP and JavaScript run on different computers and communicate via a stateless request/response protocol.

Any PHP script must run in its entirety before the JS runs.

Passing data between them can only occur when an HTTP request is made by the client.

You can't execute any JavaScript that needs to run on the client anywhere other than on the client.

南街九尾狐 2024-09-12 01:22:34

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

I would say that the main problem is sending the mail through AJAX. You should do a regular POST and then reload the whole page with a new captcha. Another possible solution would it be to send the mail through AJAX and then return the "true" in the AJAX response. Or even return the new captcha in the response and change it with jQuery. But I don't know if it will work with your captcha system.

信仰 2024-09-12 01:22:34
file_get_contents("http://your-server/project-path/php/captcha/captchaimage_show.php?".random(1,100));

会解决你的问题

哦!!!

file_get_contents("http://your-server/project-path/php/captcha/captchaimage_show.php?".random(1,100));

Will solve your problem

chears!!!

゛清羽墨安 2024-09-12 01:22:34

关于您的代码:(

 if(!$Error){

我猜 $Error 是您的邮件函数的返回类型。如果不是,请忽略这篇文章并让我知道,以便我可以将其删除)。

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

需要注意的是,仅仅因为邮件已被接受投递,它并不> >意味着邮件将真正到达预定目的地。

PHP.net:bool 邮件 ( 字符串 $to , 字符串 $subject , 字符串 $message)< /a>

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

Regarding your code:

 if(!$Error){

(I'm guessing $Error is the return type of your mail function. If not, disregard this post and let me know so I can take it off).

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, it does NOT > mean the mail will actually reach the intended destination.

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

Don't rely on the mail() return value only if you want to check if the email was sent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文