Каковы способы отображения разных панелей навигации, если пользователь вошел в систему или нет? - PullRequest
0 голосов
/ 28 августа 2018

Я хочу знать, как лучше всего показать разные навигационные панели, основываясь на том факте, что пользователь вошел в систему или нет.

Я думаю о нескольких способах сделать это:

  1. Одним из способов может быть создание двух навигационных панелей в файле HTML и использование CSS для создания одного блока отображения, а другого - без отображения и переключения между ними с помощью js.

  2. Или другим способом может быть использование PHP "if Statement" ...

Какие есть еще способы? и я знаю, что есть много способов, но что проще, а также с чистым кодом.

Спасибо всем:).

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Я предпочту применить имя класса к <body> по php и показать / скрыть связанные элементы css, он также может контролировать другие элементы на странице не только nav.

Редактировать: Безопасность здесь не проблема, потому что вам следует ограничить доступ по php, а не просто скрывать ссылки. Метод здесь просто обрабатывает макет.

nav ul li {
  display: none;
}
body.guest nav ul li.guest,
body.logged nav ul li.logged {
  display: block;
}
<?php

  $user_logged = ($user->guest) ? 'guest' : 'logged';

?>

<body class="<?php echo $user_logged; ?>">
  <nav>
    <ul>
      <li class="guest"><a href="#">Nav 1</a></li>
      <li class="guest"><a href="#">Nav 2</a></li>
      <li class="logged"><a href="#">Nav 3</a></li>
      <li class="guest"><a href="#">Nav 4</a></li>
      <li class="logged"><a href="#">Nav 5</a></li>
      <li class="logged"><a href="#">Nav 6</a></li>
      <li class="guest"><a href="#">Nav 7</a></li>
      <li class="logged"><a href="#">Nav 8</a></li>
      <li class="logged"><a href="#">Nav 9</a></li>
      <li class="guest"><a href="#">Nav 10</a></li>
    </ul>
  </nav>
</body>
0 голосов
/ 28 августа 2018

Я определенно рекомендую вам не использовать js или любые другие языки на стороне клиента!

Что я порекомендую: я не знаю, считается ли это чистым, но ...

Я написал веб-приложение, и панель навигации зависела от уровня доступа пользователя,

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

<?php
    include(the path of the intended header/header.php);
?>

Я получил предполагаемый путь из базы данных.

если ваша программа не очень чувствительна к уровням доступа пользователей или у вас нет очень динамичной навигационной панели, я думаю, что это хороший способ!

В противном случае дождитесь ответа профессионала;)

0 голосов
/ 28 августа 2018

Если я правильно понимаю ваш вопрос. Я бы полностью отговорил вас от использования Hide / Show на основе javascript / css. Одной из очень веских причин для этого была бы безопасность, если кто-нибудь просматривает ваш код, может легко показать ваш Navbar.

Это тот случай, если вы хотите показывать Navbar, только если пользователь вошел в систему.

Если вы пишете PHP, упомянутый в комментариях Лоуренса, следуйте шаблону MVC и создайте панель навигации как представление и включайте его ТОЛЬКО при входе пользователя в систему. PHP - это серверный язык, и он не будет ничего отображать, если условие logged-in не заполнено.

Еще одним преимуществом использования рендеринга на стороне сервера с использованием PHP является то, что вы можете иметь несколько Navbars для разных типов пользователей. (Не лучшая практика, но вы можете сделать это).

В качестве альтернативы, если вы хотите расширить свои знания в этой области, вы можете добиться гораздо лучшего результата, используя интерфейсные среды, такие как ReactJS или Angular и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...