当用户登录HTML

时间:2019-06-16 15:07:20

标签: javascript php html login server

我有一个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 个答案:

答案 0 :(得分:1)

首先,您需要将所有页面从.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代码。例如,我将上述代码放在<!DOCTYPE html>之前的文件顶部-任何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上,以便您可以在其上方和下方看到内容。在您的示例中,这是最后一个菜单项,不会出于演示目的而清除。)

答案 1 :(得分:0)

您可以根据条件显示菜单。使用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 } ?>