当用户登录时,在顶部显示用户名


Show the username in the top when the user is login

我知道这个问题对你们来说看起来很简单,但是我找不到关于这个的教程或主题。我找了好几天,但没找到。我想做的是当用户登录时,他们的名字将显示在每个页面的菜单栏顶部。请,请,请,请任何帮助或建议将不胜感激。

这是没有登录用户时的图像

当用户登录时。登录/注册按钮应该隐藏,然后显示电子邮件和注销按钮

这是我做的代码。我尝试javascript和会话,但我不能做它正确。

<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if($_POST['LogIn'])
{
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname = "dbuseraccounts";
	// Create connection
	$conn = new mysqli($servername, $username, $password, $dbname);
	
	$email = strip_tags($_POST['Email']);
	$password = strip_tags($_POST['Password']);
	
	$sql = "SELECT UserID, Email, Password FROM users WHERE Email = '$email'";
	
	$query = mysqli_query($conn, $sql);	
	
	if($query)
	{
		$row = mysqli_fetch_row($query);
		$userid = $row[0];
		$dbEmail = $row[1];
		$dbPassword = $row[2];
	}
	
	if($email == $dbEmail && $password == $dbPassword)
	{
		
		$_SESSION['Email'] = $email;
		$_SESSION['id'] = $userid;
		
	}
	else
	{
		
		$message = "Incorect username or password";
		echo "<script type='text/javascript'>alert('$message');</script>";
	}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
<link href="css/stylesheet.css" rel="stylesheet" type="text/css">
<style type="text/css">
body {
	margin-left: 0px;
	margin-right: 0px;
}
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
	<div class="container-fluid">
	<div class="header">
	<nav class="navbar navbar-default navbar-fixed-top">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" id="Register" aria-expanded="false" data-toggle="collapse" data-target="#topFixedNavbar1"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
    <a class="navbar-brand" href="index.html">Neo</a></div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="topFixedNavbar1">
      <ul class="nav navbar-nav">
        <li class="active"></li>
        <li></li>
      </ul>
      <form class="navbar-form navbar-left" role="search">
        <div class="form-group"> </div>
</form>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="Home.php">Home</a></li>
        <li><a href="Services.html">Services</a></li>
        <li><a href="Promo.html">Promo</a></li>
        <li><a href="Promo.html">About Us</a></li>
        <li><a href="ContactUs.html">Contact Us</a></li>
        <li><a href="login.php"><?php echo $_SESSION["Email"]?></a></li>
        <li><a id="logout">Logout</li>
        <li class="dropdown">
<ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
          </ul>
        </li>
      </ul>
    </div>
    <!-- /.navbar-collapse -->
  </div>
  <!-- /.container-fluid -->
</nav>
</div>
<div class="content">
<h1 id="h1Contactus">Login</h1>
<form id="RegisterForm" name="RegisterForm" method="post">
  <div class="FormElement"><input name="Email" type="email" autofocus required="required" class="TField" id="Email" placeholder="Email Address"></div>
  <div class="FormElement"><input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Password"></div>
  <div class="FormElement">
    <input name="LogIn" type="submit" class="button" id="LogIn" value="Log In">
  </div>
</form>
</div>
<div class="footerStick">
    <footer>© 2015 Neo</footer>
</div>
</div>
</div>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>

这是不安全的,这只是一个教程。

基本上这是相当容易的,如果你有正确的想法!

如何实现…

  • 首先,当用户成功登录创建$_SESSION[] var. $_SESSION[] var几乎在每个运行PHP的网站上都使用,您可以通过将下面的代码添加到页面顶部来启动一个普通会话。

    session_start();
    
  • 当你的代码显示用户登录成功时,创建一个会话变量,如下所示。

    $_SESSION['loggedIn'] = true;
    
  • 第三,您需要创建一些检查用户是否登录的代码,示例代码如下所示。

    if (isset($_SESSION['loggedIn'])) {
        // code to execute if the user is logged in
    } else {
        // code to execute if the user is not logged in
    }
    
  • 最后,当您注销时,您需要使用下面的代码销毁会话并删除所有$_SESSION[]变量。

    $_SESSION = array();
    session_destroy();
    

基于if语句执行HTML代码:

<?php
if (isset($_SESSION['loggedIn'])) {
?> 
<p>Logged In!</p>
<?php
} else {
?>
<p>Logged Out!</p>
<?php
}
?>

如果你想显示用户名,你需要创建一个$_SESSION[] var名为username,并使用回显$_SESSION[] var

// To Echo
<?= $_SESSION['username']; ?>
// To Create
<?php $_SESSION['username'] = 'someusername'; ?>

这里有一些资源,可能会帮助你的安全明智,我只是看了你的代码,它很简单,但不是真正的安全。

http://php.net/manual/en/session.security.php

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

你做对了。它的基本工作原理是这样的:

你有一个HTML表单。html表单包含登录的用户名/电子邮件和密码。html表单提交(POST)给php登录脚本。在php登录脚本中,您将在成功登录时创建一个会话。在会话中存储用户名,然后在php中可以从会话中回显数据以显示用户名。

所以不要复制教程,真正的php会话!

http://www.w3schools.com/php/php_sessions.asp

http://php.net/manual/en/book.session.php