我的联系人表单有问题,我不知道是联系人表单有问题,还是PHP有问题,有没有人能看一下它,告诉我出了什么问题?
<form>
<div class="row">
<div class="col-md-6">
<div class="group">
<input id="name" type="text"><span class="highlight"></span><span class="bar"></span>
<label>Name</label>
</div>
</div>
<div class="col-md-6">
<div class="group">
<input id="email" type="email"><span class="highlight"></span><span class="bar"></span>
<label>Email</label>
</div>
</div>
</div>
<div class="group">
<textarea class="form-control" rows="5" id="messege"></textarea>
<span class="highlight"></span><span class="bar"></span>
<label>Your Messege</label>
</div>
<button class="ripple">Send</button>
</form>下面是PHP部分;
<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['subject']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
$headers = 'From: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'Reply-To: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'Return-Path: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-Type: text/html; charset=utf-8' . "\r\n" .
'X-Priority: 1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Replace with your email
mail( "email@example.com", $_POST['subject'], $_POST['message'], $headers );
}
?>发布于 2016-08-27 02:38:54
您的表单域没有name属性:
<input id="name" type="text"><span class="hi [..snip..]id是,而不是用于提交表单的。没有名字,没有提交字段。
即使是一些基本的调试,比如var_dump($_POST),也会显示出问题所在。
发布于 2016-08-27 04:20:42
您已在表单中添加了' id‘,但您不能使用id访问输入值,而必须使用'name’属性。您还必须在form标记中提供action和method属性。以便输入值将通过您选择的方法发送到所选的路径或文件。我已经用解决方案更新了你的代码。你应该试试这个。
<form method="post" action="filename or path">
<div class="row">
<div class="col-md-6">
<div class="group">
<input id="name" name="name" type="text"><span class="highlight"></span><span class="bar"></span>
<label>Name</label>
</div>
</div>
<div class="col-md-6">
<div class="group">
<input id="email" name="email" type="email"><span class="highlight"></span><span class="bar"></span>
<label>Email</label>
</div>
</div>
</div>
<div class="group">
<textarea class="form-control" rows="5" name="message" id="messege"></textarea>
<span class="highlight"></span><span class="bar"></span>
<label>Your Messege</label>
</div>
<input type="button" name="button" class="ripple" value="send">
</form>但是如果你已经在同一个文件中写了你的代码,那么你就不需要在 <form>**.中添加方法和动作属性。你应该在** <button>**,中添加name属性,这样你就可以保证如果点击按钮,php代码就会被执行。**
<button name="submit" class="ripple">Send</button>并使用以下命令更新您的php代码:
<?php
if(isset($_POST['submit']))
{
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['subject']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
$headers = 'From: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'Reply-To: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'Return-Path: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-Type: text/html; charset=utf-8' . "\r\n" .
'X-Priority: 1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Replace with your email
mail( "email@example.com", $_POST['subject'], $_POST['message'], $headers );
}
else
{
//echo error
}
?>https://stackoverflow.com/questions/39172594
复制相似问题