Условные выражения в 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 поэтому я решил попробовать)

Есть идеи ?

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

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

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

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 } ?> 

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

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

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

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

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

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

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

Ваша первоначальная мысль была правильной. Есть два способа сделать это, согласно документации 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 } ?>