連絡先を送信したメールを自分宛に電子メールで送信しますが、空のメールが受信されることがあります。私は、入力されたフィールドが空でないことを確認するためにバリデータのJavaScriptファイルを使用しました。空メールを受信する唯一の方法は、$_POST
が空であることです。私は、フォーム、JavaScriptファイル、およびPHPファイルを含む私のコードを含めました。
マイ形式:
<?php
// configure
$from = $_POST['email'];
$sendTo = '[email protected]';
$fields = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message');
try
{
$emailText = "\n=============================\n";
foreach ($_POST as $key => $value) {
if (isset($fields[$key])) {
$emailText .= "$fields[$key]: $value\n";
}
}
mail($sendTo, $subject, $emailText, "From: " . $from);
$responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
}
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$encoded = json_encode($responseArray);
header('Content-Type: application/json');
echo $encoded;
}
else {
echo $responseArray['message'];
}
:私が使用している
jQuery(function($) {'use strict',
var form = $('#main-contact-form')
var message = $('#error-message')
form.validator().on('submit', function (e) {
if (e.isDefaultPrevented()) {
message.fadeIn();
} else {
e.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: form.serialize(),
beforeSend: function(){
form.prepend(
message
.html('<p>Sending...</p>')
.fadeIn()
);
}
}).done(function(data){
message.html('<p>' + data.message + '</p>').delay(2000).fadeOut();
form.delay(2000).fadeOut();
console.log("DONE");
});
}
})
});
sendmail.phpファイルは自分自身にフォームデータを送信するために:私のフィールドを検証するためのJavaScriptファイル
<div class="row contact-wrap">
<div id="error-message" style="display: none;" ><p>ERROR</p></div>
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" data-toggle="validator" role="form">
<div class="col-sm-5 col-sm-offset-1">
<div class="form-group">
<label for="inputname" class="control-label">NAME</label>
<input type="text" name="name" id="inputname" class="form-control" data-error="Name required!" required>
</div>
<div class="form-group">
<label for="inputemail" class="control-label">EMAIL</label>
<input type="email" name="email" id="inputemail" class="form-control" data-error="Email required!" required>
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<label for="inputsubject" class="control-label">SUBJECT</label>
<input type="text" name="subject" id="inputsubject" class="form-control" data-error="Subject required!" required>
</div>
<div class="form-group">
<label for="inputmessage" class="control-label">MESSAGE</label>
<textarea name="message" id="inputmessage" class="form-control" rows="8" data-error="Message required!" required></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg" required="required">SUBMIT</button>
</div>
</div>
</form>
</div>
<script src="js/main.js"></script>
<script src="js/validator.min.js"></script>
main.js
これらのメッセージを送信していますか、またはランダムに発生しているようですか? – Loaf
私はランダムに空のメッセージを取得します。つまり、$ _POSTは空です。 – iamarnold
PHPでメッセージの妥当性を検証してください。ユーザーが行った検証を削除したり、バイパスしたりすることは可能です。 PHPはそれをキャッチすることができます。クライアント側の – Loaf