簡體   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