Альтернативный блок управления в php не работает

У меня есть этот код в моем html-файле, который отображается PHP:

<div>
  <?php if ($SESSION.userName=='UNSET'):  ?>
     User is not logged in
  <?php else: ?>
     user is logged in: user name is: {{ @SESSION.userName }}
  <?php endif; ?>
</div>
<div> test  {{ @SESSION.userName }} 
</div>

Приведенный выше код генерирует этот вывод:

User is not logged in user is logged in: user name is: a
test a

Очевидно, это означает, что оператор if не вычисляется.

В чем проблема и как я могу это исправить? Я новичок в PHP (только сегодня начал!)

Примечание: зарегистрированное имя пользователя

Редактировать1

Страница отображается с помощью этой функции из файла index.php:

$f3->route(
  'GET @home:/',
  function ($f3) {
    $f3->set('html_title', 'MyServer');
    $f3->set('content', 'index.html');
    echo Template::instance()->render('layout.php');
  }

Действительно ли PHP работает на ваш сервер?

KIKO Software 19.03.2022 12:44

Ваш $SESSION должен быть $_SESSION. Так и должно быть $_SESSION['userName']

Ibrahim Hammed 19.03.2022 12:44

Я вижу вывод $SESSION.userName, поэтому он должен работать.

mans 19.03.2022 12:45

Попробуйте файл PHP только с таким содержимым: <?php phpinfo(); Должна получиться длинная страница с информацией о вашем PHP. Имеет ли это?

KIKO Software 19.03.2022 12:46

Ваш файл имеет расширение .html или .php?

Nigel Ren 19.03.2022 12:50

@KIKOSoftware Да, это дало мне большой список информации, версия PHP 7.4.28. Я использую сервер, на котором я уверен, что PHP установлен и настроен.

mans 19.03.2022 12:51

@NigelRen Имеет расширение html.

mans 19.03.2022 12:51

Ну, обычно вам нужно использовать расширение php для файлов PHP.

KIKO Software 19.03.2022 12:52

@KIKOSoftware Это php, встроенный в html.

mans 19.03.2022 12:54

Я понимаю, но попробуйте изменить расширение с .html на .php и посмотрите, поможет ли это... возможно, поможет. Только файлы .php сканируются на наличие встроенного кода PHP (обычно).

KIKO Software 19.03.2022 12:56

@KIKOSoftware Сделал это, но без разницы.

mans 19.03.2022 13:00

Позвольте мне проверить, действителен ли используемый вами синтаксис, довольно неясный, в PHP 7.4.28.

KIKO Software 19.03.2022 13:01

@KIKOSoftware В этом документе указано, что он действителен: php.net/control-structures.alternative-синтаксис

mans 19.03.2022 13:02

Да, тоже только что нашел.

KIKO Software 19.03.2022 13:03

Извините, у меня закончились идеи. PHP работает, вы используете расширение .php, и ваш синтаксис действителен. Вы все еще можете проверить журналы PHP, чтобы увидеть, есть ли там что-нибудь, но я сомневаюсь в этом.

KIKO Software 19.03.2022 13:05

как проверить логи php?

mans 19.03.2022 13:06

<?php phpinfo();, вероятно, скажет вам, где они находятся. Это обычный текстовый файл, но расположение может варьироваться. В качестве альтернативы вы можете показать ошибки в выводе HTML.

KIKO Software 19.03.2022 13:08

Вы смешиваете PHP-код с каким-то языком шаблонов, понятным Template::instance()->render(). Части, с которыми работает находятся, не являются частями PHP, такими как {{ @SESSION.userName }}. Вам нужно найти правильный синтаксис для операторов if на этом языке шаблонов, а не на родном PHP.

IMSoP 19.03.2022 13:24

У меня есть что-то подобное на моем сайте, но он использует if (!isset($_SESSION['username'])) {, а затем перенаправляет пользователя обратно на index.php, если он не вошел в систему.

Emma Marshall 19.03.2022 13:26

Так что используйте <?php if ($_SESSION['username']=='UNSET'): ?>

keyhan 19.03.2022 15:24

@IMSoP Я использую библиотеку F3 для создания шаблонов и других задач.

mans 19.03.2022 20:20

Затем вам нужно изучить синтаксис, который он использует для операторов if, а не смешивать их с PHP.

IMSoP 19.03.2022 20:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
22
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы упомянули, вы используете механизм шаблонов f3, в соответствии с его документация вы можете использовать это для своего условия:

<check if = "{{ @SESSION.userName=='UNSET' }}">
    <true>
        <div>User is not logged in</div>
    </true>
    <false>
        <div> user is logged in: user name is: {{ @SESSION.userName }}</div>
    </false>
</check>

Другие вопросы по теме