使用会话&;PHP登录脚本中的会话变量

使用会话&;PHP登录脚本中的会话变量,php,session,login,Php,Session,Login,我刚刚用PHP创建了一个完整的登录和注册系统,但我的问题是我还没有使用任何会话。我是PHP的新手,以前从未使用过会话。我想做的是,在用户注册并填写登录表单之后,他们仍然会停留在同一页面上。所以,其中一部分将是会话是否登录,另一部分将是其他部分(用户未登录,所以显示登录表单)。有人能告诉我如何开始吗?希望这有帮助:) 开始会话时,您需要在页面顶部或调用会话代码之前说这句话 session_start(); session_start(); 在会话中放置用户id以跟踪登录的用户 $_SE

我刚刚用PHP创建了一个完整的登录和注册系统,但我的问题是我还没有使用任何会话。我是PHP的新手,以前从未使用过会话。我想做的是,在用户注册并填写登录表单之后,他们仍然会停留在同一页面上。所以,其中一部分将是会话是否登录,另一部分将是其他部分(用户未登录,所以显示登录表单)。有人能告诉我如何开始吗?

希望这有帮助:)

开始会话时,您需要在页面顶部或调用会话代码之前说这句话

 session_start(); 
session_start(); 
在会话中放置用户id以跟踪登录的用户

 $_SESSION['user'] = $user_id;
 if (isset($_SESSION['user'])) {
   // logged in
 } else {
   // not logged in
 }
检查是否有人登录

 $_SESSION['user'] = $user_id;
 if (isset($_SESSION['user'])) {
   // logged in
 } else {
   // not logged in
 }
查找已登录的用户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
 }

在这里登录HTML和代码
未在此处登录HTML和代码

首先,PHP文档中有一些

其次,您需要某种方式来存储网站每个用户的凭据(例如数据库)。最好不要将密码存储为人类可读、未加密的纯文本。存储密码时,应使用PHP的哈希函数。这意味着,如果任何凭据被泄露,密码将不可用

大多数登录系统都会对用户输入的密码进行哈希/加密,然后将结果与存储系统(如数据库)中相应用户名的哈希进行比较。如果输入密码的哈希值与存储的哈希值匹配,则表示用户输入了正确的密码

您可以使用会话变量来存储有关用户当前状态的信息,即他们是否登录,如果是,您还可以存储他们的唯一用户ID或任何其他您需要的信息

要启动PHP会话,需要调用。类似地,要销毁会话及其数据,您需要调用(例如,当用户注销时):

//开始会话
会话_start();
//使用会话变量
$\会话['userid']=$userid;
//例如,查找用户是否已登录
if($\u会话['userid']){
//登录
}
否则{
//未登录
}
//销毁会话
如果($注销)
会话_destroy();

我还建议您看看。关于在那里创建一个简单的登录系统,有一些好的、易于理解的信息。

我总是使用OOP并使用这个类来维护会话,这样你就可以使用函数is\u logged\u in来检查用户是否登录,如果没有,你可以做你想做的事情

<?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();
?>

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

login.php

<?php  session_start();   // session starts with the help of this function 


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>
<?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>
<?php
 session_start();

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

登录页面
用户名
密码
home.php

<?php  session_start();   // session starts with the help of this function 


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>
<?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>
<?php
 session_start();

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

<?php  session_start();   // session starts with the help of this function 


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>
<?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>
<?php
 session_start();

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

您需要在页面顶部或调用会话代码之前开始会话

 session_start(); 
session_start(); 

这是一个单页登录/注销系统的示例。
密码永远不会公开,HASH+SALT与任何使用HASH-SALT密码查看数据库表的人一样安全

首先,使用此命令创建一个附加密码
$hash
,并确保将结果字符串替换为以下$hash的
***

index.php
单页:


我的应用程序
欢迎
登录


免责声明:请注意上述内容

  • 没那么糟,但是
  • 应使用SHA轮和/或比SHA256更强的算法进行改进
  • 永远不要硬编码秘密(盐)或散列到可分发的文件中
  • 仍然容易受到
  • 它可以通过格式错误/损坏的服务器文件类型响应公开(Facebook'07综合症)
  • 不专业(阅读:禁止)用公开的秘密Salt和Hash将此类代码推送到公共git回购协议
  • 可能是一个短期的“登录看看东西”项目确定
  • 如果对所提供的代码/脚本没有正确、深入的理解,您应该不要从堆栈溢出中“仅复制粘贴”

“如果你能想象一整本书都能回答你的问题,那你的要求就太多了。”-澄清一下,你的问题太宽泛了。没有什么是以前没有过的。检查,这是一个很好的开始:]也看看这个,也尝试一下引入的PHP5.5(具有5.3.7兼容代码),它应该用于密码哈希生成和验证。这些函数消除了一些程序员在使用
crypt()
或其他PHP通用哈希函数时可能出现的安全性减弱错误。有关为什么使用密码\u hash()而不是crypt()的详细信息,请参阅答案底部的链接(此链接已断开)。你能为这个资源提供一个永久链接吗?顺便说一句,你会想对这个资源的密码进行散列和加密。然后对输入进行散列和盐析以进行比较。谢谢,这是一个很好的起点,但应该扩展您的类,以便通过电子邮件进行用户身份验证;)