【发布时间】:2014-10-01 23:43:44
【问题描述】:
我已经为电子邮件制作了一个 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 = 'myemail@domain.com';
$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)): 你读过那个函数的文档吗?你最终是怎么使用它的? -
我在这里读到了一些其他的 $_POST 问题解决线程,它说 isset 不应该用于数组,而应该用于单个值。我猜那是错的?
-
这取决于您检查的内容。看我的回答。