Я создал 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
Я прочитал некоторые другие проблемы, связанные с потоками $ _POST здесь, которые говорят, что isset не должен использоваться для массивов, но для одиночных значений. Наверное, это неправильно? – Curtis
Это зависит от того, что вы проверяете. См. Мой ответ. – developerwjk