$ _post将空白字段数据发送到.php文件

时间:2014-08-25 12:02:16

标签: php forms email

我有一个简单的联系表单,除了当我点击提交时字段数据没有发送到php文件时它起作用。
我只收到一封空白电子邮件,并通过打印$_post检查了变量是否为空 怎么了?表单标签是否位于错误的位置?

PHP-代码:

<?php
print_r($_POST); exit; /*TO TEST IF THE FIELDS ARE BLANK*/

/* Email Variables */
$emailSubject = 'contactformprocess'; /*Make sure this matches the name of your file*/
$webMaster = 'example@domain.com';


/*design by Mark Leroy @ http://www.helpvid.net*/

/* Data Variables */
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$comments = $_POST['comments'];
if ($name || $email  ||  $phone  ||$comments  == '')
{echo "please fill out required fields";die;}

$body = <<<EOD
<br><hr><br>
Name: $name <br>
Email: $email <br>
Phone: $phone <br>
Comments:\n $comments<br>
EOD;
$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail($webMaster, $emailSubject, $body,
$headers);


/* Results rendered as HTML */
$theResults = <<<EOD
<html>
<head>
<title>Meddelandet har skickats</title>
<meta http-equiv="refresh" content="3;URL=http://www.website.com/">
<style type="text/css";>
<!--
body {
background-color: #444; /* You can edit this CSS to match your website*/
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
font-style: normal;
line-height: normal;
font-weight: normal;
color: #fec001;
text-decoration: none;
padding-top: 200px;
margin-left: 150px;
width: 800px;
}
-->
</style>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<div align="center">Tack för din förfrågan! Vi hör av oss så fort som möjligt.</div>
</div>
</body>
</html>
EOD;
echo "$theResults";
?>

HTML代码:(网站只有一页,所以这里是表单所在代码的一部分。

    <!--contact start-->
          <form id="emailform" name="emailform" method="post" action="contactformprocess.php">
    <div id="contact">
        <div class="line5">                 
            <div class="container">
                <div class="row Ama">
                    <div class="col-md-12">
                    <h3>Behöver du hjälp?</h3>
                    <p>Hör av dig till oss!</p>
                    </div>
                </div>
            </div>
        </div>
        <div class="container">
            <div class="row">
              <div class="col-md-9 col-xs-12 forma">
<input type="text" class="col-md-6 col-xs-12 name" input name="name" id="name" placeholder='Namn *'/>
                  <input type="text" class="col-md-6 col-xs-12 phone" id="phone" input name="phone" placeholder='Telefon *'/>
                  <input type="text" class="col-md-12 col-xs-12 email" input name="email" id="email" placeholder='Email *'/>
                  <textarea type="text" class="col-md-12 col-xs-12 comments" textarea name="comments" placeholder='Meddelande *' id="comments"></textarea>
                  <div class="cBtn col-xs-12">
                      <ul>
                        <li class="send"><a href="/contactformprocess.php" onclick="validateForm()" title="submit">Skicka</a></li>
                          <p><br>
                        </p>
                    </ul>
                </div>
              </div>
              </div>
              </form>

更新1 感谢我在添加时正确发送数据

  <div class="cBtn col-xs-12">
      <ul>
        <li class="send">  <input type="submit"  onclick="validateForm()" title="submit">Skicka</a></li>

design issue

2 个答案:

答案 0 :(得分:2)

如果JavaScript validateForm()函数未明确提交表单数据,则需要使用提交按钮。这意味着,而不是以下:

<a href="/contactformprocess.php" onclick="validateForm()" title="submit">Skicka</a>    

使用提交按钮:

<input type="submit" onclick="validateForm()" value="Skicka" />

提交按钮告诉浏览器将<input>和类似标签中的所有数据发送到服务器;一个简单的HTML链接不知道任何形式,除非触发一些特殊的JavaScript。


以下是其他一些评论。

输入名称:不要在input name内使用name <input>,如下面的代码段所示:

<input type="text" class="col-md-6 col-xs-12 phone" id="phone" name="phone" placeholder='Telefon *'/>

而不是代码中的input name

<input type="text" class="col-md-6 col-xs-12 phone" id="phone" input name="phone" placeholder='Telefon *'/>

表单验证:以下内容与您想要的相反:

if ($name || $email  ||  $phone  ||$comments  == '')
{echo "please fill out required fields";die;}

它应该是这样的:

if (!$name || !$email  || !$phone  || $comments  == '')
{echo "please fill out required fields";die;}

它仍然不是最好的验证形式,但至少它不应该在不应该的时候造成错误。

答案 1 :(得分:0)

定义输入字段时,您不必在名称标记之前键入“input”,因为您在打开标记时已经定义了它。删除那些。 所以,而不是

<input type="text" class="col-md-6 col-xs-12 name" input name="name" id="name" placeholder='Namn *'/>
<input type="text" class="col-md-6 col-xs-12 phone" id="phone" input name="phone" placeholder='Telefon *'/>
<input type="text" class="col-md-12 col-xs-12 email" input name="email" id="email" placeholder='Email *'/>

尝试以下内容:

<input type="text" class="col-md-6 col-xs-12 name" name="name" id="name" placeholder='Namn *'/>
<input type="text" class="col-md-6 col-xs-12 phone" id="phone" name="phone" placeholder='Telefon *'/>
<input type="text" class="col-md-12 col-xs-12 email" name="email" id="email" placeholder='Email *'/>

并检查它是否有任何区别。  标签本身很好。它只是告诉服务器在单击Submit后处理FORM范围内的所有内容。