Я уверен, что люди сталкивались с этой проблемой раньше, но я не вижу, где я ошибаюсь. (Я проверил функцию isset() в моем коде, и это выглядит нормально, но оно все равно препятствует отправке сообщения электронной почты)undefined index in PHP Wordpress
Я создал свою контактную форму на Wordpress. Таким образом, форма вызывает функцию jQuery AJAX, которая соединяется с файлом PHP. Мой файл PHP сохраняется в корне папки установки Wordpress (то есть в самом начале) Отрывок следующим
JQuery
$('#contactForm').submit(function (event) {
event.preventDefault();
sendContactForm(); //Call the function
});
function sendContactForm(){
var dataString=$('#contactForm').serializeArray();
$.post("/contact.php", dataString, function(data) {
if(data.status == "1") {
alert('Message successfully sent');
}
else if(data.status=="2") {
alert('Please enter Antispam correctly');
}
else {
alert('Network error. Please try again');
}
},
"json"
);
};
PHP
header('Content-Type: application/json charset=utf-8');
$name = $_POST['name'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$choice = $_POST['choice'];
$message = $_POST['message'];
$from = '[email protected]';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$to = '[email protected]';
$subject = $name . ' has sent you a message';
$human = $_POST['antispam'];
$body = "<html><body>";
$body.= "Change Request";
$body.= "<table style='border-color: #666;' cellpadding='2'>";
$body.= "<tr style='background: #eee;'><td><b>Name:</b> </td><td>" . $name . "</td></tr>";
$body.= "<tr style='background: #eee;'><td><b>Email:</b> </td><td>" . $email . "</td></tr>";
$body.= "<tr style='background: #eee;'><td><b>Contact:</b> </td><td>" . $telephone . "</td></tr>";
$body.= "<tr style='background: #eee;'><td><b>Service Type:</b> </td><td>" . $choice . "</td></tr>";
$body.= "<tr style='background: #eee;'><td><b>Message:</b> </td><td>" . $message . "</td></tr>";
$body.= "</table>";
$body.= "</body></html>";
if(!empty($_POST['name']) &&
!empty($_POST['email']) &&
!empty($_POST['telephone']) &&
!empty($_POST['choice']) &&
!empty($_POST['message']) &&
$human == '4') {
if (mail ($to, $subject, $body, $headers)) {
echo '{"status":"1"}';
} else {
echo '{"status":"0"}';
}
}
else
{
echo '{"status":"2"}';
}
Моя ошибка, полученный в ответ Сетевой консоли:
Примечание: Undefined индекс: имя в /clientdata/apache-www/k/i/mywebsite.com.au/www/contact.php на линии
Примечание: Undefined индекс : электронная почта в /clientdata/apache-www/k/i/mywebsite.com.au/www/contact.php на линии
Примечание: Undefined индекс: телефон в /clientdata/апача -www/к/я/mywebsite.com.au/WWW/прод act.php на линии
{ «Статус»: «2»}
Как вы можете видеть, я явно упомянул, что каждая запись не должна быть пустой, и я также ввести каждый из них, когда я заполнить моя контактная форма. По какой-то причине он терпит неудачу, а затем переходит к последнему условию со статусом = 2. Этот же код работал раньше на том же сервере хостинга. Я не уверен, что это моя проблема с кодом или проблема с хостингом, которая мешает этому отправляться.
Мой HTML формы, а также (не уверен, что это могло бы помочь в расследовании, а)
<form class="form" role="form" action="#" id="contactForm" name="contactForm" onsubmit="return false;">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" required>
</div>
<div class="form-group">
<label>Email</label>
<input type="email" class="form-control" required>
</div>
<div class="form-group">
<label>Contact</label>
<input type="tel" class="form-control" required>
</div>
<div class="form-group">
<label>Request</label>
<select class="form-control" name="choice">
<option value="0" selected="selected">Choose...</option>
<option value="Basic Package">Basic</option>
<option value="Dynamic Request">Advanced</option>
<option value="Other">Other</option>
</select>
</div>
<div class="form-group">
<label>Message</label>
<textarea class="form-control" rows="6" name="message"></textarea>
</div>
<div class="form-group">
<label>Anti Spam</label>
<input type="text" class="form-control" name="antispam" placeholder="What is 2+ 2?" required>
</div>
<div class="form-group text-center">
<button class="btn btn-success btn-lg" type="submit">Submit</button>
</div>
</form>
Есть мысли?
Я не показывая, что вы на самом деле давая ввести имя в HTML. –