Моя ошибка:
Parse error: syntax error, unexpected end of file in the line
Мой код:
<html>
<?php
function login() {
// код функции логина
}
if (login())
{?>
<h2>Добро пожаловать, администратор</h2>
<a href=\"upload.php\">Загрузка файлов</a>
<br />
<a href=\"points.php\">Редактирование подсчета очков </a>
<?php}
Else {
echo "Недопустимый логин. Попробуйте еще раз";
}
?>
Некоторый HTML код
</html>
В чем проблема?
Ответ 1
Вам следует избегать этого (в конце вашего кода):
{?>
или этого:
<?php}
Не следует ставить скобки непосредственно рядом с php тегом открытия/закрытия и разделять его пробелом:
{ ?>
<?php {
также избегайте ”<?” и используйте “<?php”
Ответ 2
У меня была такая же ошибка, но я исправил ее, изменив файл php.ini. Откройте его в своем любимом редакторе.
Найдите свойство short_open_tag и примените следующее изменение:
; short_open_tag = Off ; предыдущее значение
short_open_tag = On ; новое значение
Ответ 3
Есть два разных метода обойти ошибки синтаксического анализа.
Метод 1 (ваш файл PHP)
Избегайте в вашем файле PHP этого:
<? } ?>
Убедитесь, что вы поставили это так:
<?php ?>
Ваш код содержит ”<? ?>”
ПРИМЕЧАНИЕ: Отсутствует php после ”<?!”
Метод 2 (файл php.ini)
Также есть простой способ решить вашу проблему. Найдите значение свойства short_open_tag (откройте в текстовом редакторе с помощью Ctrl + F!) И примените следующее изменение:
; short_open_tag = Off
Замените на:
short_open_tag = On
Согласно описанию основных директив php.ini, short_open_tag позволяет использовать короткий открытый тег ( <?), хотя это может вызвать проблемы при использовании с xml ( ”<?xml” не будет работать, если он активен)!
Ответ 4Обратите внимание на закрывающие идентификаторы heredoc.
Неверный пример:
// Это не работает!!!
function findAll() {
$query=<<<SQL
SELECT * FROM `table_1`;
SQL; // <-------- Здесь ошибка
// ...
}
Это вызовет исключение, подобное следующему:
<br />
<b>Parse error</b>: syntax error, unexpected end of file in <b>[...][...]</b> on line <b>5</b><br />
где цифра 5 может быть номером последней строки вашего файла.
Согласно руководству по php:
Предупреждение: Очень важно отметить, что строка с закрывающим идентификатором не должна содержать никаких других символов, кроме точки с запятой (;). Это, в частности, означает, что идентификатор не может иметь отступа, а также не должно быть никаких пробелов или табуляции до или после точки с запятой. Также важно понимать, что первый символ перед закрывающим идентификатором должен быть новой строкой, как это определено локальной операционной системой. Это \n в системах UNIX, включая macOS. Закрывающий разделитель также должен сопровождаться новой строкой.
TL ; DR : закрывающие идентификаторы НЕ должны иметь отступ.
Работающий пример:
function findAll() {
$query=<<<SQL
SELECT * FROM `table_1`;
SQL;
// закрывающий идентификатор не должен иметь отступ, хотя это может выглядеть некрасиво
// ...
}
Ответ 5
Я обнаружил несколько ошибок, которые исправил ниже.
Вот, что я получил в итоге:
if (login())
{?>
<h2> Добро пожаловать, администратор </h2>
<a href=\"upload.php\"> Загрузка файлов </a>
<br />
<a href=\"points.php\"> Редактирование подсчета очков </a>
<?php}
else {
echo " Недопустимый логин. Попробуйте еще раз ";
}
Вот, как бы я это сделал:
<html>
Некоторый код
<?php
function login(){
if (empty ($_POST['username'])) {
return false;
}
if (empty ($_POST['password'])) {
return false;
}
$username = trim ($_POST['username']);
$password = trim ($_POST['password']);
$scrambled = md5 ($password . 'foo');
$link = mysqli_connect('localhost', 'root', 'password');
if (!$link) {
$error = "Невозможно подключиться к серверу базы данных ";
include 'error.html.php';
exit ();
}
if (!mysqli_set_charset ($link, 'utf8')) {
$error = "Невозможно установить кодировку подключения к базе данных ";
include 'error.html.php';
exit ();
}
if (!mysqli_select_db ($link, 'foo')) {
$error = "Невозможно найти базу данных foo ";
include 'error.html.php';
exit ();
}
$sql = "SELECT COUNT(*) FROM admin WHERE username = '$username' AND password = '$scrambled'";
$result = mysqli_query ($link, $sql);
if (!$result) {
return false;
exit ();
}
$row = mysqli_fetch_array ($result);
if ($row[0] > 0) {
return true;
} else {
return false;
}
}
if (login()) {
echo '<h2> Добро пожаловать, администратор </h2>
<a href=\"upload.php\"> Загрузка файлов </a>
<br />
<a href=\"points.php\"> Редактирование подсчета очков </a>';
} else {
echo " Недопустимый логин. Попробуйте еще раз ";
}
?>
Некоторый HTML код
</html>
Web