Подтвердить что ты не робот

Условные выражения в PHP-коде между HTML Code

У меня проблема с использованием условных выражений в PHP, разделенных HTML-кодом. Это тип кода, который я пытаюсь написать. Это страница профиля, и ее должен видеть только пользователь, чей профиль (я использую переменные сеанса для проверки):

<?php if(check if user is logged in) ?>
<display users profile in html>
<?php else ?>
<display an error>

Но это не работает. Я также попытался использовать сокращенную нотацию, поставив : в конце if и используя оператор endif, но это не сработало. (В более раннем проекте метод : работал на foreach и endforeach, поэтому я решил попробовать его)

Любые идеи?

4b9b3361

Ответ 1

Вероятно, вы забыли endif альтернативный синтаксис структуры управления:

<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>

Опустить фигурные скобки, как вы писали, невозможно. Это возможно только в том случае, если за ним следует регулярный оператор .

Ответ 2

PHP имеет два стиля обозначения для if() блоков (и блоков в целом).

Во-первых, вы имеете словословную нотацию, в которой явно указывается endif; в конце блока if(). Это выглядит так:

if(whatever):
   do something
else:
   do something else
endif;

Длинны в конце строк if и else важны, потому что иначе PHP думает, что вы используете другую нотацию (ниже).

Во-вторых, у вас есть фигурная фигурная скобка, которая похожа на код стиля C или Perl и выглядит следующим образом:

if(whatever) {
   do something
} else {
   do something else.
}

С помощью этой нотации стиля вы можете оставить пары фигурных скобок, если ваш блок будет только длиной в одну строку. (Я лично считаю, что это плохая практика, чтобы оставить их такими, но многие люди клянутся этим, и это вполне допустимый синтаксис. Но я видел, как PHP путают по однострочным блокам, когда вы переключаетесь между PHP-кодом и HTML, поэтому я всегда предпочитаю использовать фигурные скобки, даже если я пишу только одну строку).

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

Ваше решение состоит в том, чтобы привести его в порядок, чтобы вы определенно использовали один синтаксис или другой. Либо добавьте фигурные скобки ({ и }}) к началу и концу каждого блока, как показано в моем примере, или добавьте двоеточия и строку endif;.

Итак, ваш код должен выглядеть как один из этих двух примеров:

<?php if(check if user is logged in): ?>
    <display users profile in html>
<?php else: ?>
    <display an error>
<?php endif; ?>

или...

<?php if(check if user is logged in) { ?>
    <display users profile in html>
<?php } else { ?>
    <display an error>
<?php } ?>

Надеюсь, что это поможет.

Ответ 3

используйте фигурные скобки { и }.

<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>

Ответ 4

Попробуйте вставить скобки для разделения условий.

<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>

Ответ 5

использовать скобки, потому что для интерпретатора php это охватывает несколько строк

<?php if(check if user is logged in)  { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } // else ?>

Ответ 6

Ваша первоначальная мысль была правильной. Есть два способа сделать это, согласно документации PHP:

<?php if($loggedin): ?> 
<p>User is logged in.</p>
<?php else: ?>
<p>User is not logged in.</p>
<?php endif; ?>

Или:

<?php if($loggedin){ ?> 
<p>User is logged in.</p>
<?php }else{ ?>
<p>User is not logged in.</p>
<?php } ?>