2014-02-07 54 views
0

我正在創建一個提交聯繫表單。然而,當提交按鈕被按下時,我希望它回到我的contact.php頁面,並在正文頁面頂部添加一條消息,如。 「我們已經收到您的電子郵件,我們的代理會聯繫您聯繫」HTML PHP html php用其他信息重定向頁面

我有兩個文件,contact.php的形式和send_form_email.php電子郵件過程

我已經嘗試了本

header("location: contact.php"); 

但是,這隻會將我發回給聯繫人頁面沒有任何確認

你能請幫助我嗎?

問候, 萊克斯

+0

你可以使用[**會議**](http://www.php.net/manual/en/features.sessions.php),但你需要小心你如何使用它。 ;-) –

回答

0

在文件中添加Contact.php

$done = $_GET['done']; 
if ($done == 1){ 
    echo "<div>We have received your email, our agent will contact you shortly</div>"; 
} 

在文件中添加send_form_email.php

header("Location: contact.php?done=1"); 
+0

位置HTTP標頭必須包含絕對URL。不知道PHP和Apache用這個做什麼......在CGI腳本中,這應該發出內部重定向,但是在mod_php,IMO下不起作用。如果它的工作原理和標題中發送絕對URL,PHP會做一些魔術 - 小心,它可能會被破壞! – Palec

+0

@Palec的有效點,但PHP/Apache有(儘管錯誤地)從來沒有給出一個該死的事實,即'header()函數應該發送一個原始的HTTP頭,甚至PHP文檔聲明使用絕對URL。 – CD001

+0

@ CD001我總是閱讀規格和文檔,保持安全。當我更多地瞭解PHP的怪癖時,比如這個,我傾向於把頭撞到牆上或者無法控制地大笑。無論如何,很高興知道這是有效的。感謝您的確認。 – Palec

2

做到這一點是一個查詢字符串的最簡單方法。

header("location: contact.php?success=1"); 

或類似的東西。

然後在您的聯繫人頁面,您檢查使用$_GET['success'],如果它被設置(可以使用isset()只是看看它的URL,或者如果你想要做更多的檢查實際值)顯示您的消息。

對於一些稍微「複雜」,看到這一點:PHP passing messages between pages

+0

這不是什麼大問題,但這意味着我可以輸入該網址並隨時查看消息。 – 2014-02-07 23:07:36

+0

是的,這是正確的。 – sachleen

0

您需要使用sessions了點。例如

session_start(); // start session 
$_SESSION['message'] = 'We have received your email, our agent will contact you shortly'; 
header("location: contact.php"); 

在你contact.php

echo $_SESSION['message']; 
unset($_SESSION['message']); // delete message so it doesnt display again 
0

變化

header("location: contact.php?success"); 

,然後在你的contact.php在你頁面的頂部添加此

if(isset($_GET['success'])){ 
    echo "We have received your email, our agent will contact you shortly"; 
} 
1

你有幾個選項。

最簡單的方法是在同一頁面上放置表單處理邏輯,然後將表單的action屬性設置爲該頁面。

您可以執行一些操作,例如檢查是否有值,以告訴您是否需要處理頁面。

if (isset($_POST['my_value_from_form'])) { 
    // process 
} 

// body of page itself 

這讓你很容易地把一個。

另一種方式是通過將其附加到URL中添加一個GET值:

header("location: contact.php?message=1") 

,使用與$_GET['message']確定要顯示的內容。但是,那個?message = 1將位於頁面的URL中,因此可能不太理想。

另一種方法是你直接之前設置會話值,然後檢查,如果該值是存在的(也明確它,你顯示了上去。

// on send_form_email.php 
session_start(); 
$_SESSION['message'] = 1; 

// on contact.php 
session_start(); 
if ($_SESSION['message'] == 1) { 
    // do something 
} 

unset($_SESSION['message']); // so it only shows once. 

所有方面有輕微的權衡,大多隻是由於你如何組織你的代碼。如果我要實現它,我會使用會話方法。

0

可以使消息的會話這樣

$_SESSION['message'] = "your message"; 

的d後,你做重定向插入消息DIV中這個會話,然後取消它

<?php 

session_start(); 

$_SESSION['message'] = "your message"; 
header("location: contact.php"); 

,不要忘記你的文件contact.php的頂部session_start();啓動會話