Задать вопрос
@Dmitry2307

Почему возникает ошибка синтакса?

Все голову сломал, не могу понять почему вылазит ошибка в строке "use PHPMailer\PHPMailer\PHPMailer;"
Parse error: syntax error, unexpected token "use" in
/var/www/vhosts/u0304509.plsk.regruhosting.ru/pravonagaz.ru/form.php
on line 5


HTML:
<form action="#" id="form" method="post">
	<ul>
		<li><label for="name">Имя:</label><input type="text" id="name" class="_req" placeholder="Введите имя..." name="NAME"></li>
		<li><label for="phone">Телефон:</label><input type="text" id="phone" class="fphone _req" placeholder="Введите телефон..." name="PHONE_WORK"></li>
		<li><label for="email">e-mail:</label> <input type="text" id="email" placeholder="Введите e-mail..." name="EMAIL_WORK" class="_email"></li>
		<li><label>Комментарий:</label> <textarea name="COMMENTS" placeholder="Оставить комментарий..." cols="30" rows="5"></textarea></li>
		<li><button class="submit" name="submit">Отправить</button></li>
	</ul>
</form>


Обработчик:
use PHPMailer\PHPMailer\PHPMailer;
	use PHPMailer\PHPMailer\Exception;
	require 'phpmailer/src/Exception.php';
	require 'phpmailer/src/PHPMailer.php';

	$mail = new PHPMailer(true);
	$mail->CharSet = 'UTF-8';
	$mail->setLanguage('ru', 'phpmailer/language/');
	$mail->setFrom('info@pravonagaz.ru', 'Право на газ - заказ');		// от кого будет уходить письмо?
	$mail->addAddress('mail@ya.ru');				     	// Кому будет уходить письмо
	

	$body = "";
	if(trim(!empty($_POST['NAME']))) $body = "<p><strong>Имя</strong> - ".$_POST['NAME']."</p>";
	if(trim(!empty($_POST['PHONE_WORK']))) $body .= "<p><strong>Телефон</strong> - ".$_POST['PHONE_WORK']."</p>";
	if(trim(!empty($_POST['EMAIL_WORK']))) $body .= "<p><strong>E-MAIL</strong> - ".$_POST['EMAIL_WORK']."</p>";
	$message = "<head><meta charset='UTF-8'><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head>
		<body><table style='width: 100%;'>".$body."</table></body>";

	$mail->IsHTML(true);					// чтение письма в html
	$mail->Subject = 'pravonagaz.ru заявка';
	$mail->Body    = $message;
	
	if(!$mail->send()){ $mass = "Ошибка"; } 
	else { $mass = "Данные отправлены!"; }

	$response = ['message' => $mass];
	header('Content-type: application/json');
	echo json_encode($response);
  • Вопрос задан
  • 1145 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Ключевое слово use должно быть указано в самом начале файла (в глобальной области) или внутри объявления пространства имён. Это необходимо потому, что импорт выполняется во время компиляции, а не во время исполнения, поэтому оно не может быть заключено в блок.
https://www.php.net/manual/ru/language.namespaces....
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
А где первые несколько строк обработчика? Вероятнее всего, строчкой выше use забыли поставить точку с запятой.

PHP показывает не место, где допущена ошибка, а место, где ошибка обнаружена парсером. При этом реальное место ошибки часто находится строчкой-двумя выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 дек. 2024, в 06:04
15000 руб./за проект
21 дек. 2024, в 01:12
1000 руб./за проект
20 дек. 2024, в 22:55
1500 руб./за проект