在PHPlogin脚本中使用会话和会话variables

我刚刚完成了创build一个完整的login和PHP注册systsem,但我的问题是我还没有使用任何会议呢。 我在PHP中是一个新手,我从来没有使用过会议。 我想要做的是在用户注册并填写login表单后,他们仍然保持在同一页面上。 因此,如果会话是logged_in,那么会有一部分会话,另一部分会是其他部分(用户没有login,因此显示login表单)。 谁能告诉我如何开始?

希望这可以帮助 :)

开始会话,您需要在页面顶部或在您呼叫会话代码之前说出

session_start(); 

在会话中放置一个用户ID来跟踪谁login

  $_SESSION['user'] = $user_id; 

检查是否有人login

  if (isset($_SESSION['user'])) { // logged in } else { // not logged in } 

findlogin的用户ID

 $_SESSION['user'] 

所以在你的页面上

  <?php session_start(); if (isset($_SESSION['user'])) { ?> logged in HTML and code here <?php } else { ?> Not logged in HTML and code here <?php } 

这里是使用php最简单的会话代码。 我们正在使用3个文件。

的login.php

 <?php session_start(); ?> // session starts with the help of this function <?php if(isset($_SESSION['use'])) // Checking whether the session is already there or not if // true then header redirect it to the home page directly { header("Location:home.php"); } if(isset($_POST['login'])) // it checks whether the user clicked login button or not { $user = $_POST['user']; $pass = $_POST['pass']; if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password { // is 1234 by default $_SESSION['use']=$user; echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php } else { echo "invalid UserName or Password"; } } ?> <html> <head> <title> Login Page </title> </head> <body> <form action="" method="post"> <table width="200" border="0"> <tr> <td> UserName</td> <td> <input type="text" name="user" > </td> </tr> <tr> <td> PassWord </td> <td><input type="password" name="pass"></td> </tr> <tr> <td> <input type="submit" name="login" value="LOGIN"></td> <td></td> </tr> </table> </form> </body> </html> 

home.php

 <?php session_start(); ?> <html> <head> <title> Home </title> </head> <body> <?php if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page { header("Location:Login.php"); } echo $_SESSION['use']; echo "Login Success"; echo "<a href='logout.php'> Logout</a> "; ?> </body> </html> 

logout.php

 <?php session_start(); echo "Logout Successfully "; session_destroy(); // function that Destroys Session header("Location: Login.php"); ?> 

首先,PHP文档有一些很好的 会话 信息

其次,您将需要一些方法来存储您的网站(例如数据库)的每个用户的凭据。 不要将密码存储为可读的,未encryption的纯文本。 存储密码时,应该使用PHP的crypt()散列函数。 这意味着,如果任何凭据被泄露,密码容易获得。

大多数login系统会散列/encryption用户input的密码,然后将结果与相应用户名的存储系统(如数据库)中的散列进行比较。 如果input的密码的散列值与存储的散列值相匹配,则用户input了正确的密码。

您可以使用会话variables来存储有关用户当前状态的信息 – 即是否已login,如果是,则还可以存储其唯一的用户标识或任何其他需要随时可用的信息。

要开始一个PHP会话,你需要调用session_start() 。 同样,要销毁会话及其数据,您需要调用session_destroy() (例如,当用户注销时):

 // Begin the session session_start(); // Use session variables $_SESSION['userid'] = $userid; // Eg find if the user is logged in if($_SESSION['userid']) { // Logged in } else { // Not logged in } // Destroy the session if($log_out) session_destroy(); 

我也build议你看看这个 。 在这里有一些很好的,容易的信息来创build一个简单的login系统。

我总是做OOP,并使用这个类来维护会话,所以你可以使用函数is_logged_in来检查用户是否login,如果没有,你做你想做的事情。

 <?php class Session { private $logged_in=false; public $user_id; function __construct() { session_start(); $this->check_login(); if($this->logged_in) { // actions to take right away if user is logged in } else { // actions to take right away if user is not logged in } } public function is_logged_in() { return $this->logged_in; } public function login($user) { // database should find user based on username/password if($user){ $this->user_id = $_SESSION['user_id'] = $user->id; $this->logged_in = true; } } public function logout() { unset($_SESSION['user_id']); unset($this->user_id); $this->logged_in = false; } private function check_login() { if(isset($_SESSION['user_id'])) { $this->user_id = $_SESSION['user_id']; $this->logged_in = true; } else { unset($this->user_id); $this->logged_in = false; } } } $session = new Session(); ?> 
 //start use session $session_start(); extract($_POST); //extract data from submit post if(isset($submit)) { if($user=="user" && $pass=="pass") { $_SESSION['user']= $user; //if correct password and name store in session } else { echo "Invalid user and password"; header("Locatin:form.php"); } if(isset($_SESSION['user'])) { //your home page code here exit; } 

您需要在页面顶部开始会话,或在您呼叫会话代码之前开始会话

 session_start(); 
 $session_start(); extract($_POST); //extract data from submit post if(isset($submit)) { if($user=="user" && $pass=="pass") { $_SESSION['user']= $user; //if correct password and name store in session } else { echo "Invalid user and password"; header("Locatin:form.php"); } if(isset($_SESSION['user'])) { //your home page code here exit; }