2016-08-28 27 views
5

Tôi biết câu hỏi này trông rất đơn giản đối với các bạn nhưng tôi không thể tìm thấy hướng dẫn hoặc chủ đề về điều này. Tôi đã cố gắng và tìm kiếm ngày nhưng không may mắn. Những gì tôi muốn làm là khi người dùng đăng nhập, tên của họ sẽ được hiển thị ở trên cùng trong thanh trình đơn trong mỗi trang. Xin vui lòng, Xin vui lòng, Xin vui lòng giúp đỡ hoặc gợi ý sẽ được đánh giá cao.Hiển thị tên người dùng ở trên cùng khi người dùng đăng nhập

This is the image when there is no login user

And this when a user is login. the login/register button should be hide then display the email and logout button

Đây là mã tôi đã làm. Tôi thử javascript và phiên nhưng tôi không thể làm điều đó đúng.

<?php 
 

 
error_reporting(E_ALL & ~E_NOTICE); 
 
session_start(); 
 

 
if($_POST['LogIn']) 
 
{ 
 
\t $servername = "localhost"; 
 
\t $username = "root"; 
 
\t $password = ""; 
 
\t $dbname = "dbuseraccounts"; 
 

 
\t // Create connection 
 
\t $conn = new mysqli($servername, $username, $password, $dbname); 
 
\t 
 
\t $email = strip_tags($_POST['Email']); 
 
\t $password = strip_tags($_POST['Password']); 
 
\t 
 
\t $sql = "SELECT UserID, Email, Password FROM users WHERE Email = '$email'"; 
 
\t 
 
\t $query = mysqli_query($conn, $sql); \t 
 
\t 
 
\t if($query) 
 
\t { 
 
\t \t $row = mysqli_fetch_row($query); 
 
\t \t $userid = $row[0]; 
 
\t \t $dbEmail = $row[1]; 
 
\t \t $dbPassword = $row[2]; 
 
\t } 
 
\t 
 
\t if($email == $dbEmail && $password == $dbPassword) 
 
\t { 
 
\t \t 
 
\t \t $_SESSION['Email'] = $email; 
 
\t \t $_SESSION['id'] = $userid; 
 
\t \t 
 
\t } 
 
\t else 
 
\t { 
 
\t \t 
 
\t \t $message = "Incorect username or password"; 
 
\t \t echo "<script type='text/javascript'>alert('$message');</script>"; 
 
\t } 
 
} 
 
?> 
 

 
<!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 { 
 
\t margin-left: 0px; 
 
\t 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"> 
 
\t <div class="container-fluid"> 
 
\t <div class="header"> 
 
\t <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>

Trả lời

1

này là không an toàn, đây chỉ là một hướng dẫn.

Về cơ bản, điều này khá dễ dàng nếu bạn có ý tưởng đúng!

Làm thế nào để đạt được ...

  • đầu tiên khi người dùng đăng nhập vào thành công tạo ra một $ _SESSION [] var. $ _SESSION [] vars được sử dụng trên hầu hết mọi trang web chạy trên PHP, bạn có thể bắt đầu một phiên đơn giản bằng cách thêm mã bên dưới vào đầu trang của bạn.

    session_start(); 
    
  • Thứ hai khi mã của bạn cho biết đăng nhập người dùng tạo thành công một phiên var như mã được hiển thị bên dưới.

    $_SESSION['loggedIn'] = true; 
    
  • thứ ba bạn cần phải tạo ra một số loại mã mà sẽ kiểm tra xem nếu người dùng đang đăng nhập, một mã ví dụ được trình bày dưới đây.

    if (isset($_SESSION['loggedIn'])) { 
        // code to execute if the user is logged in 
    } else { 
        // code to execute if the user is not logged in 
    } 
    
  • Và cuối cùng của tất cả khi bạn đăng xuất bạn cần phải tiêu diệt phiên và xóa tất cả các $ _SESSION [] vars bằng cách sử dụng mã dưới đây.

    $_SESSION = array(); 
    session_destroy(); 
    

Execute HTML Mã dựa trên câu lệnh if:

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

Nếu bạn muốn hiển thị tên người dùng, bạn cần phải tạo ra một $ _SESSION [] var gọi tên truy cập và sử dụng echo $ _SESSION [] var.

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

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

Dưới đây là một vài nguồn lực có thể giúp bạn an toàn khôn ngoan, tôi chỉ nhìn mã của bạn và nó đơn giản nhưng không thực sự được bảo đảm.

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

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

+0

cảm ơn bạn đã hướng dẫn chi tiết ạ !!! Tôi đã thực hiện nó bằng cách sử dụng hướng dẫn của bạn và thêm một số mã javascript để ẩn đăng ký và đăng nhập siêu liên kết khi người dùng đăng nhập. – Red

+0

Không vấn đề gì, nếu bạn cần thêm trợ giúp, hãy hỏi. –

1

Bạn đang đi đúng hướng. Về cơ bản cách hoạt động của nó là:

Bạn có biểu mẫu HTML. Biểu mẫu html chứa tên người dùng/email và mật khẩu để đăng nhập. Biểu mẫu html gửi (POST) đến tập lệnh đăng nhập php. Trong tập lệnh đăng nhập php, bạn tạo một phiên đăng nhập thành công. Trong phiên bạn lưu trữ tên người dùng, trong php, bạn có thể lặp lại dữ liệu từ phiên để hiển thị tên người dùng.

Vì vậy, đừng sao chép hướng dẫn, thực sự về các phiên php!

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

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

Các vấn đề liên quan