[英]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.