我制作了一个HTML表单来发送电子邮件。我用
if(!array_key_exists($_POST)) {
$data = file_get_contents('php://input');
}
以确定$ _POST数组为空,并且没有值被使用下面的代码传送至PHP输入。这里发生了什么?
这里是我的代码:
HTML:
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<input type="text" class="form-control" required="required" placeholder="Name" id="name" name="name">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="text" class="form-control" required="required" placeholder="Email address" id="email" name="email">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
</div>
<div class="form-group">
<input type="submit" class="btn btn-danger btn-lg" value="Send Message">
</div>
</div>
</div>
</form>
PHP:
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Email sent!'
);
$subject = "Contact from Website";
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
if(!array_key_exists($_POST)) {
$name= "empty";
$email = "empty";
$message = "empty";
$data = file_get_contents('php://input');
}
$email_to = '[email protected]';
$body = "A message has been submitted from your website: \n" . "Name: ". $name . "\nEmail: " . $email . "\nMessage: " . $message . "\nData: " . $data;
mail($email_to, $subject, $body, 'From: ' . $email . '\n\r');
echo json_encode($status);
die;
?>
'if(!array_key_exists($ _ POST))':您是否阅读过该函数的文档?你甚至最终如何使用它? – developerwjk 2014-10-01 23:49:47
我读了一些其他问题$ _POST线程在这里说isset不应该用于数组,但单个值。我猜这是错的? – Curtis 2014-10-02 00:13:44
这取决于你在检查什么。看到我的答案。 – developerwjk 2014-10-02 23:29:12