猿问

在 header(), php 之前打印 echo

我遇到了 php header() 的问题。

我有一个带有联系表格的 index.php 页面。提交表单后,它的操作会转到同一个 index.php 页面,其中需要一个 handler.php 脚本。如果收到 POST,它会执行以下步骤:

  1. 重新验证检查:

  2. 如果 recaptcha 让您通过:

2.1) echo "/js script tag which alertsmth like 'captcha is connected!'/";

2.2) 还需要一个 new_order.php 脚本文件,它会向我的 CRM 发送一个新订单,然后通过 header(location ...) 重定向您;到上述 index.php 页面。

  1. 如果 recaptcha 不允许您通过:

3.1) echo "/js script tag which alertsmth like ‘captcha is not verify!'/";

如果 3. 发生 - 页面向我显示验证码失败 js-alert 并自动转到 index.php,无需调用 header();

如果 2. 发生 - 成功创建了一个新的 CRM 订单(因为 new_order.php 完成了这项工作),header(); 让我进入 index.php,但 2.1 回声不会提醒消息。当我用 2.2) require(new_order.php) 注释该行时,它就出现了。

我需要此重定向以避免在浏览器中发送“重复发送表单”。重定向完成后,您刷新页面,它不会说“再次提交表单?”

我知道这是关于在标题之前不包含一些信息,但我无法掌握主要意义。


繁星点点滴滴
浏览 249回答 3
3回答

慕慕森

在你的每个案例中传递一些额外的参数,就像一个“标志”。因此,设置或不设置自定义 headers() 并有条件地处理它。

SMILET

不可能在标题前打印 echo。

慕姐8265434

我解决了这个问题:我通过 setcookie(blah); 在 new_order.php 脚本的末尾设置了一个 cookie。我在 handler.php 的开头添加了一个 if-check。当我重定向到提到的 index.php 时,所需的处理程序会检查我的 cookie 是否已设置。如果是 - 这意味着已经下订单,因此我收到我的 echo "\script\alert('Thank you!');\script\";如果没有设置——我从来没有调用过new_order.php!
随时随地看视频慕课网APP
我要回答