繁体   English   中英

在 header(), php 之前打印 echo

[英]Printing echo before header(), php

我遇到了 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) 注释该行时,它就出现了。

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

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

谢谢!

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

不可能在标题前打印 echo。

我解决了这个问题:

我通过 setcookie(blah); 在 new_order.php 脚本的末尾设置了一个 cookie。

我在 handler.php 的开头添加了一个 if-check。

当我重定向到提到的 index.php 时,所需的处理程序会检查我的 cookie 是否已设置。

如果是 - 这意味着已经下订单,因此我收到我的 echo "\\script\\alert('Thank you!');\\script\\";

如果没有设置——我从来没有调用过new_order.php!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM