【问题标题】:PHP contact form sends empty dataPHP 联系表单发送空数据
【发布时间】:2012-07-08 17:41:42
【问题描述】:

我正在尝试创建一个与计算机和移动设备兼容的 HTML5 联系表单,当我单击发送消息时,它会跳转到一个空白的白色屏幕。我确实收到了一封电子邮件,但它不包含任何信息。我对 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 = 'info@rare1.ca';


$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 );

?>

【问题讨论】:

  • 您的表单标签上缺少method="post"。由于已省略,因此默认为get。由于您的电子邮件脚本不会生成任何输出,因此您可能希望在最后重定向(header('Location: /test');,即使用 HTML 页面的名称)。
  • 感谢您的帮助!我在哪里可以把这个方法="post"
  • 在下面查看我的回答(请注意,网站左上方的数字消息指示符:) 会通知给您的新消息)。

标签: php forms html


【解决方案1】:

当您单击提交时,您将被重定向到sendemail.php。您可以从代码中轻松看到该页面没有内容。这就是为什么您在点击提交后登陆的页面是空白的。

希望这有帮助:)

更新:

你可以这样做:

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

有了这个,您的页面将有一些内容,并且看起来不再像什么都没发生一样。

【讨论】:

  • 谢谢,这肯定有帮助,但是我收到的电子邮件返回空白信息,html方面也有问题吗?
  • @AlanLawlessness - 请参阅我在您的问题下发表的评论。
  • @halfer 谢谢!!对不起,我错过了,因为我对这个网站很陌生。
【解决方案2】:

在您的 php 脚本中,您正在发送邮件,但之后您什么也不做!,没有回音。

在最后添加,发送邮件后:

echo "Mail sent";

您会看到该消息出现。

编辑

为了将消息传递到主页,您需要将消息放入会话中,然后重定向到主页:

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

现在,在主页上,在脚本中添加您要添加​​消息的位置:

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

完成后清理会话也是一个好主意,您可以使用:

session_unset(); // clears all session varaibles

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

【讨论】:

  • 谢谢。是否可以将消息保留在主页上?
  • 当然,通过使用 header("Location: /homepage.php"),但是如果您想在该页面中显示一条消息,您还需要将其放入会话中然后阅读它在主页中
  • 谢谢!!!你能详细说明一下 homepage.php 吗?抱歉,我对此很陌生
【解决方案3】:

根据我的评论,您正在使用带有 get 方法的表单,因此它将在您的 URL 的查询字符串中创建变量。这些可以通过$_GET 访问,而不是$_POST

虽然您可以将您的 $_POST 引用切换到 $_GET - 它会起作用 - 这不是一个好主意。 post 操作适用于不应因页面刷新而重复的事件,例如发送电子邮件或修改数据库。因此,解决方案是修改您的表单。

为此,请修改您的表单:

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

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多