首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的PHP联系人表单不起作用

我的PHP联系人表单不起作用
EN

Stack Overflow用户
提问于 2016-08-27 02:25:22
回答 2查看 82关注 0票数 0

我的联系人表单有问题,我不知道是联系人表单有问题,还是PHP有问题,有没有人能看一下它,告诉我出了什么问题?

代码语言:javascript
复制
<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部分;

代码语言:javascript
复制
<?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 );

}
?>
EN

回答 2

Stack Overflow用户

发布于 2016-08-27 02:38:54

您的表单域没有name属性:

代码语言:javascript
复制
<input id="name" type="text"><span class="hi [..snip..]

id,而不是用于提交表单的。没有名字,没有提交字段。

即使是一些基本的调试,比如var_dump($_POST),也会显示出问题所在。

票数 1
EN

Stack Overflow用户

发布于 2016-08-27 04:20:42

您已在表单中添加了' id‘,但您不能使用id访问输入值,而必须使用'name’属性。您还必须在form标记中提供action和method属性。以便输入值将通过您选择的方法发送到所选的路径或文件。我已经用解决方案更新了你的代码。你应该试试这个。

代码语言:javascript
复制
<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代码就会被执行。**

代码语言:javascript
复制
<button name="submit" class="ripple">Send</button>

并使用以下命令更新您的php代码:

代码语言:javascript
复制
<?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
}
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39172594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档