2012-07-08 102 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">