Помогите исправить ошибку в коде (форма отправки данных на сайте)
Файл newform.php загрузил на 000webhost.com Вот код:
<?php
if (isset($_POST['first_name'])) {$first_name = $_POST['first_name'];}
if (isset($_POST['last_name'])) {$last_name = $_POST['last_name'];}
if (isset($_POST['telephone'])) {$telephone = $_POST['telephone'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['course'])) {$course = $_POST['course'];
//if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
//if (isset($_POST['select'])) {$mess = $_POST['select'];}
$to = "моя_почта@gmail.com";
$headers = "Content-type: text/plain; charset = UTF-8";
$subject = "Заявка на обучение";
$message = "first_name: $first_name; \n last_name: $last_name; \n telephone: $phone; \n email: $email; \n course: $course";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Thank you!<p>";
}
else
{
echo "<p><b>Ошибка";
}
}
?>
<form class="form-wrap" method="POST" action="mail.php" onsubmit="return checkForm(this);">
<h4 class="text-white pb-20 text-center mb-30">Заявка на обучение</h4>
<input type="text" class="form-control" name="first_name" placeholder="Имя" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Имя'" >
<input type="text" class="form-control" name="last_name" placeholder="Фамилия" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Фамилия'" >
<input type="phone" class="form-control" name="telephone" placeholder="Сотовый номер" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Сотовый номер'" >
<input type="email" class="form-control" name="email" placeholder="Почтовый адрес" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Почтовый адрес'" >
<div class="form-select" id="service-select">
<select name="course">
<option datd-display="">Выбрать курс</option>
<option value="1">Подготовка к ЕНТ(10-11класс)</option>
<option value="2">Математика/Логика(НИШ)</option>
<option value="3">Английский язык(НИШ)</option>
<option value="4">Казахский/Русский язык(НИШ)</option>
<option value="5">Математика/Логика(КТЛ)</option>
<option value="6">Английский язык(КТЛ)</option>
<option value="7">Казахский/Русский язык(КТЛ)</option>
<option value="8">Продленка(математика/логика)4класс</option>
<option value="9">Продленка(английский язык)4класс</option>
<option value="10">Продленка(казахский язык)4класс</option>
</select>
</div>
<button class="primary-btn text-uppercase">Отправить</button>
</form>
Ниже код из файла mail.php. После заполнения полей выдает ошибку: Parse error: syntax error, unexpected 'Фамилия' (T_STRING), expecting ',' or ')' in /storage/ssd4/925/15155925/public_html/mail.php on line 55
Посмотрел. Вроде в 55 строке все правильно. Где там должна быть "," или ")" никак не пойму. Помогите исправить ошибку.
<?php
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$course = $_POST['course'];
$mess = $_POST['mess'];
$select = $_POST['select'];
$first_name = htmlspecialchars($first_name);
$last_name= htmlspecialchars($last_name);
$telephone = htmlspecialchars($telephone);
$email= htmlspecialchars($email);
$course = htmlspecialchars($course);
$mess= htmlspecialchars($mess);
$select = htmlspecialchars($select);
$first_name = urldecode($first_name);
$last_name= urldecode($last_name);
$telephone = urldecode($telephone);
$email= urldecode($email);
$course = urldecode($course);
$mess= urldecode($mess);
$select = urldecode($select);
$first_name = trim($first_name);
$last_name= trim($last_name);
$telephone = trim($telephone);
$email= trim($email);
$course = trim($course);
$mess= trim($mess);
$select = trim($select);
//echo $first_name;
//echo "<br>";
//echo $last_name;
//echo "<br>";
//echo $telephone;
//echo "<br>";
//echo $email;
//echo "<br>";
//echo $course;
//echo "<br>";
//echo $mess;
//echo "<br>";
//echo $select;
if(mail("моя_почта@gmail.com", "Заявка с сайта", "Имя:".$first_name.". "Фамилия:".$last_name.". "Телефон:".$telephone.". "email:".$email.". "Курс:".$course.". "mess:".$mess.". "select:".$select.". E-mail: ".$email ,"From: почта_на_000webhost.com \r\n"))
{
echo "сообщение успешно отправлено";
} else {
echo "при отправке сообщения возникли ошибки";
}
?>
Repl.it показывает ту же ошибку:

Вроде все правильно..
В NetBeans где фамилия появилась красная линия. Вставить туда ',' или ')' ?

Ответы (1 шт):
Автор решения: ordman
→ Ссылка
Немного отрефакторил:
$data = [
'Имя' => 'first_name' ,
'Фамилия' => 'last_name',
'Телефон' => 'telephone',
'email' => 'email',
'Курс' => 'course',
'mess' => 'mess',
'select' => 'select',
];
$message = array_reduce(array_keys($data), static function (string $prev, $name) use ($data) {
$delim = ': ';
$suffix = '. ';
$value = trim(urldecode(htmlspecialchars($_POST[$data[$name]] ?? ''))) ?: 'Отсутствует';
return $prev . $name . $delim . $value . $suffix;
}, '');
if (mail("моя_почта@gmail.com", "Заявка с сайта", $message, "From: почта_на_000webhost.com \r\n")) {
echo "сообщение успешно отправлено";
} else {
echo "при отправке сообщения возникли ошибки";
}