用户登录后更改导航菜单 HTML

Change navigation menu when user is logged in HTML

我在 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 页面重定向到一个页面,如果您想登录或登录,您可以 select 并根据此处的 selection 转到 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 页面何时更新它们的导航?

我唯一想到的就是复制所有页面(但它们太多了)然后实现一些代码来测试用户是否登录到服务器可以选择正确菜单的选项.. .但似乎一点都不好...

谢谢!

您可以根据条件显示您的菜单。在每个 login/logout 和登录页面的顶部使用 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 } ?>

首先,您需要将所有页面从 .html 重命名为 .php。这两个扩展之间绝对没有区别,除了这一点:如果页面以 .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 菜单项,以便您可以看到其上方和下方的内容。在您的示例中,它是最后一个菜单项出于演示目的不会那么清楚。)