繁体   English   中英

当用户登录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页面重定向到一个页面,您可以在其中选择要登录还是登录,然后根据此处的选择进入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页面何时根据登录状态更新导航?

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

谢谢!

首先,您需要将所有页面从.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,以便您可以在其上方和下方看到内容。在您的示例中,它是最后一个菜单项,出于演示目的,它并不清楚。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM