我有一个简单的联系表单,除了当我点击提交时字段数据没有发送到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>
答案 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范围内的所有内容。