Web

Синтаксическая ошибка, неожиданный конец файла в PHP-коде

Моя ошибка:

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

Как я могу обезопасить вводимые пользователем данные с помощью PHP?

Firefox Quantum, что это за движок и какие у него преимущества?
Web

Firefox Quantum, что это за движок и какие у него преимущества?

Web

Отладка проблем с функцией exec

Web

Когда использовать константу PHP «PHP_EOL»