PHP检索变量的问题

时间:2016-04-25 16:14:35

标签: php html

我有一个非常正常的表单链接到我网站上的html页面中的简单php脚本。它看起来如下

        <form id="main-contact-form" class="contact-form" name="contact-form" enctype="multipart/form-data" method="post" action="sendemail.php" role="form">
                <div class="row">
                    <div class="col-sm-5">
                        <div class="form-group">
                            <input type="text" class="form-control" name="first_name" id="first_name" required="required" placeholder="First Name">
                        </div>
                        <div class="form-group">
                            <input type="text" class="form-control" name="last_name" id="last_name" required="required" placeholder="Last Name">
                        </div>
                        <div class="form-group">
                            <input type="text" class="form-control" name="email "id="email" required="required" placeholder="Email address">
                        </div>
                        <div class="form-group">
                            <button type="submit" class="btn btn-primary btn-lg">Send Message</button>
                        </div>
                    </div>
                    <div class="col-sm-7">
                        <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
                    </div>
                </div>
            </form>

这是sendemail.php(表单数据发送的位置)。 §     '成功',             'message'=&gt;'发送电子邮件!'         );

    $first_name = @trim(stripslashes($_POST['first_name'])); 
    $email = @trim(stripslashes($_POST['email'])); 
    $last_name = @trim(stripslashes($_POST['last_name'])); 
    $message = @trim(stripslashes($_POST['message']));

    $subject = "A new ewnquiry from your website!";

    $email_from = "jackb@example.com";
    $email_to = 'jackb@example.com';

    $body = 'Name: ' . $first_name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

    echo json_encode($status);
    die;

    ?>

电子邮件正在发送到正确的地址,并显示尚未从表单传递的变量($ subject)。

但是表格中的变量没有通过。

任何人都可以帮我看看问题所在。我是网站的新手。

1 个答案:

答案 0 :(得分:3)

我正在提交这个答案,因为这是唯一可能产生空值的东西,如果这就是问题所在。

如果......你的整个代码都在同一个文件中,既是HTML表单又是PHP,那么这就解释了我怀疑的空值。

因此,您需要检查是否有空(或不是)。

所以你需要做这样的事情并使用条件!empty()

顺便说一下,您使用echo json_encode($status);的错误变量应该是$success,因为它的读数为null

if(!empty($_POST['first_name']) 
   && !empty($_POST['email']) 
   && !empty($_POST['last_name']) 
   && !empty($_POST['message'])
){

$first_name = @trim(stripslashes($_POST['first_name'])); 
$email = @trim(stripslashes($_POST['email'])); 
$last_name = @trim(stripslashes($_POST['last_name'])); 
$message = @trim(stripslashes($_POST['message']));

$subject = "A new ewnquiry from your website!";

$email_from = "email@example.com";
$email_to = 'email@example.com';

$body = 'Name: ' . $first_name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

echo json_encode($success);
die;

}
else{
    echo "Something was left empty.";
    }

顺便说一句,这是成功的测试。

如果您愿意,可以替换&& ||

  • && =&gt; AND
  • || =&gt; OR