2016-08-30 2 views
0

Я подключил файл php на свой веб-сайт, чтобы пользователи могли отправлять мне почтовые запросы с их данными, он отправляет все данные на мою почту, но показывает внутреннюю ошибку сервера всякий раз, когда она загружается после отправки сообщения. Это мой код:Ошибка внутреннего сервера в контактной форме

Эта форма на каждой странице на сайте

<form style="line-height:15px" name="contactform" action="send_form_email.php" method="post"> 
<input type="text" placeholder="Full Name" maxlength="50" class="txt" name="name" required><br><br> 
<input type="text" placeholder="E Mail" class="txt" maxlength="80" name="email" required><br><br> 
<textarea onkeyup="adjust_textarea(this)" placeholder="Message" class="txt" maxlength="1000" name="message" required></textarea><br><br> 
<input type="text" placeholder="Phone No." class="txt" maxlength="30" name="phone" required><br><br><br> 
<input type="submit" value="Send" class="btn"> 
</form> 

send_form_email.php

<?php 
$errors = ''; 
$myemail = '[email protected]';//<-----Put Your email address here. 
if(empty($_POST['name']) || 
empty($_POST['email']) || 
empty($_POST['message'])) 
{ 
$errors .= "\n Error: all fields are required"; 
} 

$name = $_POST['name']; 
$phone = $_POST['phone']; 
$email_address = $_POST['email']; 
$message = $_POST['message']; 

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address)) 
{ 
$errors .= "\n Error: Invalid email address"; 
} 

if(empty($errors)) 
{ 
$to = $myemail; 
$email_subject = "Contact form submission: $name"; 
$email_body = "You have received a new message. ". 
" Here are the details:\n Name: $name \n Email: $email_address \n Message \n $message\n $phone"; 

$headers = "From: $myemail\n"; 
$headers .= "Reply-To: $email_address"; 

mail($to,$email_subject,$email_body,$headers); 
//redirect to the 'thank you' page 
    alert('Thankyou for contacting us'); 
header('Location: index.php'); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Contact form handler</title> 
</head> 

<body style="window.location='index.php'"> 
<!-- This page is displayed only if there is some error --> 
<?php 
echo nl2br($errors); 
?> 


</body> 
</html> 
+0

Это действительно считается дубликатом? Я чувствую, что вопрос больше связан с внутренней ошибкой сервера, вызванной тем, что пользователь пытается вызвать функцию alert() в PHP, которой не было. После этого он эволюционировал в заголовок обсуждения, но корень проблемы был метод «alert()», который пара нас поймала и ответила правильно. Благодаря! –

ответ

0

Вполне возможно, что ваша ошибка исходит от функции оповещения в нижней части перед установкой заголовка для местоположения. Похоже, вы пытаетесь использовать оповещение в стиле javascript, если, конечно, у вас есть какой-то php-метод с именем «alert()», который вы не включили в образец кода. Стоит упомянуть об этом в PHP каждый раз, когда вы вызываете заголовок, вы должны сделать это до того, как произойдет какой-либо вывод или у вас будет ошибка.

+0

yep ... это сработало. ,, спасибо –

+0

как я могу добавить оповещение после него тогда –

+0

, если вы хотите показать предупреждение обозревателя, как вы делаете с javascript, вам нужно будет написать его на странице с помощью PHP. Но поскольку вы используете метод заголовка php для установки местоположения, вы должны просто сделать это на странице, на которую вы перенаправлены. Вы можете рассмотреть подход, при котором вы перенаправляете страницу «success.html» и показываете там сообщение. Если нет, вы можете использовать событие onload Javascript для вызова своего предупреждения после перенаправления. Но PHP действительно не должен обрабатывать ваши предупреждения. –

0

Функция «alert()», определенная в вашем коде, и это не встроенная функция PHP, о которой я знаю. Я подозреваю, комментируя, что линейка решит ее.

//alert('Thankyou for contacting us'); 

, даже если alert() определен, вы делаете перенаправление сразу после. и вы не можете отправлять вывод в браузер до использования заголовка(), если только ваш сервер не настроен на выход буфера. Если это не так, посмотрите на файл .htaccess.

+0

да, я удалил предупреждение, поэтому, если мне нужно показать окно предупреждения или окно сообщения после того, как пользователь отправит сообщение. как я могу это сделать –

+0

@GiteshSawariya Посмотрите на мой ответ на свой вопрос. –

Смежные вопросы