Форма HTML / PHP дает мне 500 внутренних ошибок сервера при добавлении дополнительных полей ввода
Привет, у меня проблема с моей формой php и html. То, что я пытаюсь сделать, это просто получить форму с 7 полями ввода, 6 из которых являются полями ввода или текстовой областью, и одно будет флажком. У меня есть одно скрытое поле, первые 3 поля скрытое поле, имя и сообщение. Единственная проблема, с которой я столкнулся - это когда я добавляю новое поле ввода, оно показывает ошибку 500. Мой код ниже:
<?php
// display form if user has not clicked submit
if (!isset($_POST["submit"]))
{
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="hidden" name="subject" value="can you create me an account"><br>
Message: <textarea rows="10" cols="40" name="message"></textarea><br>
first <input type="text" name="first_name" >
<input type="submit" name="submit" value="Submit Feedback">
</form>
<?php
}
else
// the user has submitted the form
{
// Check if the "subject" input field is filled out
if (isset($_POST["subject"]))
{
$subject = $_POST["subject"];
$message = $_POST["message"];
$first = $_POST["first_name"];
$message = wordwrap($message, 70);
$first = wordwrap($first, 70);
// send mail
mail("summat@gmail.com",$subject,$message,$first,"subject: $subject\n");
echo "Thank you for sending us feedback";
Когда я добавляю новое поле ввода, мой код выглядит так:
<?php
// display form if user has not clicked submit
if (!isset($_POST["submit"]))
{
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="hidden" name="subject" value="can you create me an account"><br>
Message: <textarea rows="10" cols="40" name="message"></textarea><br>
first <input type="text" name="first_name" >
last <input type="text" name="last_name" >
<input type="submit" name="submit" value="Submit Feedback">
</form>
<?php
}
else
// the user has submitted the form
{
// Check if the "subject" input field is filled out
if (isset($_POST["subject"]))
{
$subject = $_POST["subject"];
$message = $_POST["message"];
$first = $_POST["first_name"];
$last = $_POST["last_name"];
$message = wordwrap($message, 70);
$first = wordwrap($first, 70);
$last = wordwrap($last, 70);
// send mail
mail("summat@gmail.com",$subject,$message,$first,$last,"subject: $subject\n");
echo "Thank you for sending us feedback";
Когда я их добавляю, все отображается на экране, но когда я нажимаю "Отправить", я получаю:
500 - внутренняя ошибка сервера. Возникла проблема с ресурсом, который вы ищете, и он не может быть отображен.
и ничего не будет представлено. Это потому, что время ожидания истекло до отправки или большого количества данных, или я просто пропустил что-то очень простое?
Любая помощь приветствуется.
2 ответа
6 переменных приведут к:
Предупреждение: mail() ожидает максимум 5 параметров, 6 из которых указаны на ВАШЕМ САЙТЕ на LINE
Пример решения:
<?php
//var_dump($_POST);
if (isset($_POST["subject"]))
{
$subject = $_POST["subject"];
$message = $_POST["message"];
$first = $_POST["first_name"];
$last = $_POST["last_name"];
$name= "$first $last";
}
$message = wordwrap($message, 70);
$first = wordwrap($first, 70);
$last = wordwrap($last, 70);
mail("summat@gmail.com",$subject,$message,$name,"subject: $subject\n");
echo "Thank you for sending us feedback";
?>
Ответ на ваш ответ:
Php:
<?php
//var_dump($_POST);
if (isset($_POST["subject"]))
{
$subject = $_POST["subject"];
$message = $_POST["message"];
$first = $_POST["first_name"];
$last = $_POST["last_name"];
$company = $_POST["company"];
$email = $_POST["email"];
$telnr = $_POST["telnr"];
$description = $_POST["description"];
$therest = "First name= $first" . "\r\n" . "Last name= $last" . "\r\n" . "Last name= $last" . "\r\n" . "Company= $company" . "\r\n" . "Email= $email" . "\r\n" . "Telnr= $telnr" . "\r\n" . "Description= $description";
//echo "$therest <br>";
$message = wordwrap($message, 70);
$first = wordwrap($first, 70);
$last = wordwrap($last, 70);
mail("Your Email Address Here",$subject,$name,$therest,"subject: $subject\n");
echo "Thank you for sending us feedback";
}
HTML
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="hidden" name="subject" value="can you create me an account"><br>
Message: <textarea rows="10" cols="40" name="message"></textarea><br>
first <input type="text" name="first_name" ><br>
last <input type="text" name="last_name" ><br>
company <input type="text" name="company" ><br>
email <input type="text" name="email" ><br>
Telephone number <input type="text" name="telnr" ><br>
Description <input type="text" name="description" ><br>
<input type="submit" name="submit" value="Submit Feedback">
</form>
Демо: здесь
Он отправит письмо на почту, указанную вами в форме
Проблема в том, что во втором примере вы пытаетесь передать 6 переменных в функцию mail(), когда она принимает 5. Проверьте здесь, как вы можете передать дополнительные заголовки.