Изменить меню навигации, когда пользователь вошел в HTML - PullRequest
0 голосов
/ 16 июня 2019

У меня есть сайт на HTML, где я реализовал систему входа в систему и регистрации с использованием PHP.

Когда пользователь не вошел в систему, элемент навигации "Contul meu" со всех страниц должен отправлять меня на страницу "gotosigning.html".Однако, когда пользователь вошел в систему, я хочу, чтобы пункт меню "Contul meu" со всех страниц отправлял меня на страницу "account.html".

Некоторые пункты меню, например, на странице index.html :

<li class="active"><a href="index.html">Acasă</a></li>
<li><a href="login.html">login</a></li>
<li><a href="signin.html">sign in</a></li>
<li><a href="gotosigning.html">Contul meu</a></li>

страница gotosigning.html перенаправляет на страницу, которую вы можете выбрать, если хотитедля входа в систему или входа в систему, и в зависимости от выбора здесь вы идете в login.html или signin.html.

Это базовый пример, когда пользователь не вошел в систему, но когда это так, последнийэлемент должен стать <li><a href="account.html">Contul meu</a></li> на всех страницах.

login.php , что реализовано на страницах login.html и signup.html

  <?php

 $link = new mysqli("localhost", "root", "", "graphicdesign");
if($link->connect_error){
   die("ERROR: Nu s-a putut realiza conexiunea la baza de date " .$link->connect_error);
}

session_start();

$email =$_POST['email'];
$password=$_POST['pass'];

$result = $link->query("SELECT email_cl, parola_cl FROM clienti WHERE email_cl= '".$email."' AND parola_cl= '".$password."'");

if($result->num_rows == 0 ) { 
    echo "Datele nu corespund!";
}
else { 
        $_SESSION['logged in']=true;
        $_SESSION['email']=$email;

        echo "Login cu succes!";
        echo "<script>setTimeout(\"location.href = '../account.html';\",1500);</script>";
}

?>

Какя могу заставить сервер знать все время, когда пользователь вошел в систему?

И как я могу указать HTML-страницам, когда обновлять навигацию в зависимости от того, вошли они в систему или нет?

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Во-первых, вам нужно переименовать все ваши страницы с .html на .php.Нет абсолютно никакой разницы между этими двумя расширениями, за исключением этого: если страница заканчивается на .php, то процессор PHP знает, как интерпретировать любой код PHP, найденный между тегами <?php и ?>. Если страница заканчивается на .html, тогда PHP не будет обрабатываться.HTML будет продолжать работать точно так же.Попробуйте сейчас - создайте тестовую страницу с небольшим количеством HTML и назовите ее с расширением .php.Вы увидите, что он работает точно так же, как один, оканчивающийся на .html

Чтобы изменить элементы навигации после входа пользователя, вы можете обратиться к переменным $ _SESSION, которые вы установили при входе в систему.в. Примечание: не используйте пробелы в именах переменных сеанса - хотя символы подчеркивания (например, logged_in) вполне подойдут.

Пример:

<?php
    if ($_SESSION['logged_in'] == true){
        $out = '<li><a href="file_if_logged_in.php">Contul meu</a></li>';
    }else{
        $out = '<li><a href="file_if_NOT_logged_in.php">Contul meu</a></li>';
    }
    echo $out;
?>

И, самое главное - убедитесь, что вы ставите session_start(); вверху каждого PHP-файла.

В качестве примечания, лично мне нравится раздел <?php ?> вверхуиз моих файлов PHP, который содержит как можно больше моего кода PHP.Например, я поместил бы приведенный выше код прямо вверху файла - перед любым HTML - до <!DOCTYPE html>.Затем у меня есть весь мой HTML-код и - где он принадлежит - я выводю переменную PHP, например:

<li class="active"><a href="index.html">Acasă</a></li>
<li><a href="login.html">login</a></li>
<?php echo $out ?>
<li><a href="signin.html">sign in</a></li>

(я намеренно поместил ваш пункт меню Contul meu для DEMOцели, так что вы можете видеть вещи над ним, а также под ним. В вашем примере это был последний пункт меню, который не был бы так понятен для демонстрационных целей.)

0 голосов
/ 16 июня 2019

вы можете отобразить ваше меню в зависимости от условий. Поставьте галочку с помощью session в верхней части каждого входа / выхода и страницы входа, например: -

Примечание: вы делаете старт session поверх каждого файла.

<?php 
 session_start();
if(isset($_SESSION['email']) && !empty($_SESSION['email'])){
?>
      <a href="logout.php">Logout</a>
<?php
 }else{
?>
    <li class="active"><a href="index.html">Acasă</a></li>
    <li><a href="login.html">login</a></li>
    <li><a href="signin.html">sign in</a></li>
    <li><a href="account.html">Contul meu</a></li>
<?php } ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...