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 } ?>
Надеюсь, что поможет.