2012-07-08 106 views
-4

我想創建一個兼容計算機和移動設備的HTML5聯繫表單,當我點擊發送消息時,它跳轉到一個空白的白屏。我收到一封電子郵件,但沒有包含任何信息。我對PHP很新穎。PHP聯繫表發送空數據

對於www.rare1.ca/test:

<!DOCTYPE html> 
<html> 
<head> 
<title>Responsive HTML5/CSS3 template</title> 
<meta charset="utf-8" /> 
<meta name = "viewport" content = "width=device-width, maximum-scale = 1, minimum- scale=1" /> 
<link rel="stylesheet" type="text/css" href="css/default.css" media="all" /> 
<link rel="stylesheet" href="css/flexslider.css" type="text/css" /> 
<link href='http://fonts.googleapis.com/css?family=PT+Sans' rel='stylesheet' type='text/css' /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> </script> 
<script src="js/jquery.flexslider.js"></script> 
<script src="js/default.js"></script> 
<!--[if lt IE 9]> 
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <script src="js/respond.min.js"></script> 
<![endif]--> 
</head> 
<body> 
<div id="pagewidth"> 
    <header id="header"> 
     <div class="center"> 
      <nav id="mainNav"> 
       <ul> 
        <li class="active"><a href="#pagewidth"><span>gallery</span></a></li> 
        <li></li> 
        <li></li> 
        <li></li> 
        <li></li> 
        <li><a href="#contactUs"><span>contact us</span></a></li> 
       </ul> 
      </nav> 
     </div> 
    </header> 
    <div id="content"> 
     <section class="row"> 
      <div class="center"> 
       <h1><img src="img/logo.gif" width="142" height="78"></h1> 
       <strong class="subHeading">Coming soon</strong> 
       <div class="gallery"> 
        <ul class="slides"> 
         <li><img src="img/img-gallery.jpg" alt="image" /></li> 
         <li><img src="img/img-gallery2.jpg" alt="image" /></li> 
         <li><img src="img/img-gallery3.jpg" alt="image" /></li> 
        </ul> 
       </div> 
       <div class="buttons"></div> 
      </div> 
     </section> 
     <section id="contactUs" class="row grey"> 
      <div class="center"> 
       <h1>Contact Us</h1> 
       <strong class="subHeading">lorem ipsum dolor sit amet, consectetur adipiscing elit</strong> 
       <div class="columns"> 
        <div class="half"> 
         <form action="sendemail.php" class="form"> 
          <fieldset> 
           <h2>Feedback form</h2> 
           <div class="formRow"> 
            <div class="textField"><input type="text" name="Name" id="name" placeholder="Your name ..." /></div>  
           </div> 
           <div class="formRow"> 
            <div class="textField"><input type="text" name="Email" id="email" placeholder="Your Email ..." /></div> 
           </div> 
           <div class="formRow"> 
            <div class="textField"><textarea name="Message" cols="20" rows="4" placeholder="Your message ..."></textarea> </div> 
           </div> 
           <div class="formRow"> 
            <button class="btnSmall btn submit right"> 
               <span>Send Message</span> 
            </button> 
           </div> 
          </fieldset> 
         </form> 
        </div> 
        <div class="half"> 
         <h2>How to find us</h2> 
         <div id="map"> 
          <div class="imgHolder"><img src="img/map.jpg" alt="google map" /></div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </section> 
    </div> 
    <footer id="footer"> 
     <div class="center"> 

     </div> 
    </footer> 
</div> 
</body> 
</html> 

<?php 

// This is the script for sending email. 


// change the email address below to your own email address. 
$mailTo = '[email protected]'; 


$name = htmlspecialchars($_POST['Name']); 
$mailFrom = htmlspecialchars($_POST['Email']); 
$message_text = htmlspecialchars($_POST['Message']); 

$headers = "From: $name <$mailFrom>\n"; 
$headers .= "Reply-To: $name <$mailFrom>\n"; 

$message = $message_text; 

mail($mailTo, $subject, $message, $headers); 

?> 
+3

你錯過了你的表單標籤'方法=「郵報」'。由於它已被省略,它默認爲'get'。由於您的電子郵件腳本不會生成任何輸出,因此您可能需要在最後重定向('header('Location:/ test');'即使用HTML頁面的名稱)。 – halfer 2012-07-08 08:27:53

+0

感謝您的幫助!我在哪裏可以把這個方法=「發佈」 – 2012-07-08 08:43:57

+0

看到我的答案在下面(請注意,新消息給你的網站左上角的數字消息指示符':)')。 – halfer 2012-07-08 09:42:02

回答

1

在你的php腳本中,你發送的是郵件,但之後你什麼都不做!,沒有回聲。

結尾處,發送郵件後:

echo "Mail sent"; 

,你會看到出現該消息。

編輯

爲了傳遞一個消息給hompage,你需要把該消息中的會話,然後重定向到hompage:現在

$_SESSION['myMsg'] = "some message"; 
header("location: /hompage.php"); 

,在hompage在腳本的某處添加您要添加​​的消息:

if (isset($_SESSION['myMsg'])){ 
    $message = $_SESSION['myMsg']; 
    //do something with message 
} 

這也是一個好主意,清理會話完成時,Y您可以同時使用做到這一點:

session_unset(); // clears all session varaibles 

unset($_SESSION['myVar']); // clear specific variable 
+0

謝謝。有可能有消息留在主頁上嗎? – 2012-07-08 08:39:16

+0

當然,通過使用header(「Location:/homepage.php」),但是如果你想在該頁面顯示一條消息,你還需要把它放在會話中,然後在主頁上閱讀 – Tomer 2012-07-08 08:46:54

+0

編輯我的回答 – Tomer 2012-07-08 09:03:13

3

點擊提交時,會被重定向到sendemail.php。該頁面沒有內容,因爲您可以從代碼輕鬆看到該內容。這就是爲什麼在您提交後您登錄的頁面是空白的。

希望這有助於:)

UPDATE:

你可以去這樣的事情:

if(mail($mailTo, $subject, $message, $headers)) 
    echo 'Mail successfully sent!'; 
else 
    echo 'Sorry! Something went wrong...'; 

有了這個你的頁面會有一些內容,並不會顯得不再像什麼發生。

+0

謝謝,這絕對有幫助,但是我收到的電子郵件以空白信息返回,html方面有問題嗎? – 2012-07-08 08:38:06

+0

@AlanLawlessness - 請參閱我在您的問題下提出的評論。 – halfer 2012-07-08 08:41:43

+0

@halfer謝謝你!對不起,我錯過了,因爲我對這個網站很陌生。 – 2012-07-08 09:01:09

0

按我的意見,你使用的是形式與get方法,所以它會在您的網址創建查詢字符串變量。這些可通過$_GET訪問,而不是$_POST

雖然你可以切換$_POST引用$_GET - 它會工作 - 這不是一個好主意。 post操作適用於頁面刷新不應重複的事件,例如發送電子郵件或修改數據庫。所以,解決方案是修改你的表單。

要做到這一點,修改您的形式,而不是正是如此:

<form action="sendemail.php" class="form" method="post">