У меня проблема с использованием условных выражений в 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 } ?>