2012-07-24 97 views
0

我做了一個簡單的「姓名和電子郵件」聯繫表,我希望它在信息提交後重定向到「page2.html」。聯繫表格+重定向不工作

我不能得到它的工作。

這是我爲提交表單所做的html部分。我仍然不確定「名稱」部分代表什麼,id部分(帶短劃線)是指CSS樣式。但無論如何,這就是我如何讓聯繫人「姓名和電子郵件」的形式。

<form method="post" action="submission.php" name="contactform" id="contact-form"> 
     <fieldset> 
     <label for=name accesskey=U><span class="required">*</span> Name</label> 
     <input name="name" type="text" id="name" size="30" value="" /> 
     <br /> 
     <label for=email accesskey=E><span class="required">*</span> Email</label> 
     <input name="email" type="text" id="email" size="30" value="" /> 
     <br /> 
     <input type="submit" class="submit" id="submit-button" value="Submit" /> 
     </fieldset>   
</form> 

和PHP的一部分被回收,我嘗試在最後一行進入頭部與重定向,但它不工作,它的作用是在打印出我在進入信息瀏覽器中打開了一個空白頁最好形成。

我想有該信息提交後的形式重定向,所以...感謝您的幫助,提前:d

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script src="http://www.google.com/jsapi"></script> 
<script type="text/javascript">google.load("jqueryui", "1.5.2");</script> 
<? 
if($_POST['name']!=""){ 


    $headers = "From: Webmaster"; 
    $message = 
    strtoupper($_POST['name'])." 
".strtoupper($_POST['email'])." 
"; 
    echo str_replace("\n","<br />", $message); 
    $headers2 = "From: Sender Name <[email protected]>\nContent-Type:  text/plain; charset=UTF-8; format=flowed\nMIME-Version: 1.0\nContent-Transfer-Encoding:  8bit\nX-Mailer: PHP\n"; 
    $message2 = "Message 
"; 

    mail("[email protected]", "Subject", $message, $headers); 
    mail("$_POST[email]", "Subject", $message2, $headers2); 

    $myFile = "submissions.txt"; 
    $fh = fopen($myFile, 'a') or die("can't open file"); 
    $stringData =  "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")." 
"; 
    fwrite($fh, $stringData); 
    fclose($fh); 

} else { 
    echo "You didnt enter anything"; 
    ?> 
    <script language="javascript"> 
    alert("You didnt enter anything"); 
    </script> 
    <? 
} 
?> 

回答

0

表單中的name屬性會給$ _POST數組是名字。例如,在與方法=「郵報」的形式使用

<input type="text" name="awesometext"/> 

將使該文本字段的值到$ _ POST訪問[「awesometext」]在PHP腳本,你在表單的動作定義。

如果在發送電子郵件後,您想使用header()將用戶重定向到另一個頁面,那麼在此之前不必在頁面上生成輸出。擺脫所有的回聲和html輸出,所以刪除你在開始的HTML。如果你想使用header(),你可能只有php代碼沒有輸出。您可以使用header('Location:somepage.php');指向somepage.php。然後

您的代碼將是:需要

<?php 
if($_POST['name']!=""){ 


$headers = "From: Webmaster"; 
$message = 
strtoupper($_POST['name'])." 
".strtoupper($_POST['email'])." 
"; 
echo str_replace("\n","<br />", $message); 
$headers2 = "From: Sender Name <[email protected]>\nContent-Type:  text/plain; charset=UTF-8; format=flowed\nMIME-Version: 1.0\nContent-Transfer-Encoding:  8bit\nX-Mailer: PHP\n"; 
$message2 = "Message 
"; 

mail("[email protected]", "Subject", $message, $headers); 
mail("$_POST[email]", "Subject", $message2, $headers2); 

$myFile = "submissions.txt"; 
$fh = fopen($myFile, 'a') or die("can't open file"); 
$stringData =  "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")." 
"; 
fwrite($fh, $stringData); 
fclose($fh); 

//header here 
header('Location:somepage.php'); 

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

標題()被生成的任何輸出之前被調用。上面的代碼應該可以工作。

+0

感謝您的答覆!在name屬性中我感到困惑的是,表單的屬性名稱爲「contactform」。我沒有看到submission.php如何使用它,是否有必要? 此外,刪除回聲和html ...你能展示你對我發佈的示例代碼意味着什麼嗎?林有點新,在這個,你可以看到:) – TM23 2012-07-24 09:57:36

+0

將代碼粘貼到我的答案 - 見上文。 每當你收到錯誤信息「Warning:Can not modify header information - headers already sent by ...」,這意味着你執行了header(),雖然輸出已經在同一頁面上回顯出來,這是不允許的感覺 - 用戶應該在網站上看到某些東西,或者被引導到另一個頁面 – weltschmerz 2012-07-24 11:49:50

+0

另一個注意事項:使用'<?php'而不是<?'來打開php部分,短標籤已被棄用 – weltschmerz 2012-07-24 11:50:51

0
$a = mail("[email protected]", "Subject", $message, $headers); 
$b = mail("$_POST[email]", "Subject", $message2, $headers2); 

if($a && $b) 
{ 
    echo '<script>document.location="page2.html"; </script>' 
} 
+0

我收到錯誤說:「警告:不能修改標題信息 - 在第23行在submission.php中已經發送...」 – TM23 2012-07-24 09:53:10

+0

已編輯,現在檢查 – asprin 2012-07-24 09:55:01

+0

我在原始文章中輸入的代碼似乎正在工作所以自從時間問題,我會使用它。唯一的問題是 - 每次我提交表單時,它都會在瀏覽器中閃爍一個空白的PHP頁面(包含輸入的信息),然後重定向。是否有避免顯示的PHP頁面? – TM23 2012-07-25 05:53:30

0

如果腳本中有任何輸出,則不能發送php重定向標頭。無論是你的PHP部分改變頁面的頂部,但你可以在PHP

header("location:page2.html"): 

做或使用JavaScript重定向的PHP

echo '<script>document.location="page2.html"; </script>'; 
+0

請注意,用戶可能已經關閉了JavaScript - 同樣,依賴於客戶端功能的重定向通常不如服務器端使用PHP做的好。 – weltschmerz 2012-07-24 09:30:54

+0

我試着回聲,它的工作原理,但問題是我輸入表單中的信息後,點擊提交 - thr瀏覽器(鉻)第一次加載一個空白頁面顯示信息輸入,然後1-2秒後重定向到所需頁面... – TM23 2012-07-24 09:48:29

+0

需要此行編輯echo str_replace(「\ n」,「
」,$ message); 註釋掉$ message = str_replace(「\ n」,「
」,$ message); – mahen3d 2012-07-24 10:43:42