PHP 检索变量时出现问题


Issue with PHP retrieving variables

我有一个非常正常的表单,链接到我网站上的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>

这是发送电子邮件.php(表单数据的发送位置)。§ "成功", "消息"=>"电子邮件已发送! );

    $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) 传递的变量。

但是表单中的变量没有被传递。

任何人都可以帮我看看这个问题出在哪里。我是该网站的新手。

我提交这个答案是因为这是空值唯一可能发生的事情,如果这就是问题的内容。

如果。。。您将整个代码放在同一个文件中,即HTML表单和PHP,那么这将解释空值,我怀疑是空值。

因此,您需要检查是否有任何或全部留空(或不留空)。

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

顺便说一下,您对应该$successecho json_encode($status);使用了错误的变量,因为这会读作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.";
    }

顺便说一下,这已经成功测试了。

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

  • && => AND
  • || => OR .