2013-02-18 83 views
0

請幫助這個php聯繫表格。它的作品,但是,我想重定向訪問者到一個不同的.html頁面,而不是顯示謝謝你的消息,但我不想失去聯繫表格信息。謝謝 !請諮詢爲什麼表單不重定向到網址?

我使用非常簡單的接觸形式:

<form method="POST" action="sendmail.php" class="form"> 
     <p class="yourName"> Submit Name:</p> 
     <input name="text" class="name" placeholder="Name" name="name"> 
     <p class="yourEmail">Submit Email:</p> 
     <input type="text" class="email" placeholder="Email" name="email"> 
     <p class="yourInquiry">Submit Inquiry:</p> 
     <input type="submit" value="Submit" class="Button">  
    </form> 






<?php 
    $to = "[email protected]"; 
    $subject = "Inquiry from ". $_POST['name']; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $html`enter code here` = ""; 
    foreach ($_POST as $name => $value) { 
     $html .= "<strong>$name</strong><br>"; 
     $html .= "<p>$value</p><br>"; 
    } 
    if (mail($to, $subject, $html,$headers)) { 
     /* Success Message */ 
    } else { 
     /* Error message */ 
    } 


    header('Location:about.html'); 

    } else { 
    echo "You didnt enter anything"; 
    ?> 

回答

2

header和相關的功能(尤其是setcookie)頁面上的任何內容之前必須出現。在這種情況下,您的表單會在它之前發送。

您可以重新排列代碼,以便表單處理出現在表單之前,也可以使用ob_start開始代碼以繞過限制(但如果您實際上打算將回調傳遞給該函數,這只是一個好主意)

+0

感謝每一個你的代碼顯示的順序。但我對php有點新鮮。我只知道css和一個html。我從某處使用了php表單代碼。我想問的是我怎樣才能將表單重定向到網站上的另一個.html頁面。但是我不想讓電子郵件地址在重定向後消失。 – nin 2013-02-18 01:22:32

+0

您可以將電子郵件和姓名添加到轉發網址: header('Location:/about.php?email ='。urlencode($ _ POST ['email'])。'&'。name = urlencode($ _ POST [ '名']); 和about.php打印出來是這樣的: 謝謝<= url_decode($ _ GET [ '名'])?>您的郵箱是:<= url_decode($ _ GET? ['email'])?> – 2013-02-18 01:44:45

0

你絕不能輸出(或回聲)使用功能header()

把所有的邏輯上的底部你的腳本和HTML標記的頂部,這樣你就能夠執行任何事情之前header('Location:about.html');

-1

你不能超越你的頭語句之前,UT斯達康任何東西,你必須改變你的頭()語句:

header('Location: http://www.example.com/about.html'); 
+0

爲什麼他需要將標題更改爲絕對格式?相對路徑的位置效果很好 – 2013-02-18 01:06:21

+0

由客戶端決定是否接受標頭位置語句中的相對路徑;因此,我使用絕對路徑參考http://php.net/manual/en/function.header.php – 2013-02-18 01:19:52

+0

相對路徑是HTTP/1.1規範的一部分,所有主流瀏覽器都支持這一點。因爲你堅持要求OP必須在這一點上重寫他的代碼,這只是造成了混淆。 – 2013-02-18 03:06:21

0

首先,如果你想用頭位置,你不能像顯示成功消息或錯誤消息的任何消息重定向。

Second use header(「Location:about.html」);

嘗試改變它下面

<?php 

if(isset($_POST["yourName"])){ 
    $to = "[email protected]"; 
    $subject = "Inquiry from ". $_POST['name']; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $html`enter code here` = ""; 
    foreach ($_POST as $name => $value) { 
     $html .= "<strong>$name</strong><br>"; 
     $html .= "<p>$value</p><br>"; 
    } 
    if (mail($to, $subject, $html,$headers)) { 
     /* Success Message */ 
    } else { 
     /* Error message */ 
    } 


    header("Location:about.html"); 

    } else { 
    echo "You didnt enter anything"; 
} 
    ?> 

<form method="POST" action="sendmail.php" class="form"> 
     <p class="yourName"> Submit Name:</p> 
     <input name="text" class="name" placeholder="Name" name="name"> 
     <p class="yourEmail">Submit Email:</p> 
     <input type="text" class="email" placeholder="Email" name="email"> 
     <p class="yourInquiry">Submit Inquiry:</p> 
     <input type="submit" value="Submit" class="Button">  
    </form> 
相關問題