php session 和cookie 实现登录过期

php session 和cookie 实现登录过期

  • cookie 和session 的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上,所以session的安全性要高于cookie。

2、再者,我们获取的session里的信息是通过存放在cookie里的sessionId获取的

3、因为session是存放在服务器里的,所以session 里的东西不断增加会增加服务器的负担,我们会把一些重要的东西放在session里,不太重要的放在客户端cookie里

4、cookie分为两大类,一个是会话cookie和持久化cookie,他们的生命周期和浏览器是一致的,浏览器关了的话cooki也就消失了,从而持久化会存储在客户端硬盘中。

5、当浏览器关闭的时候cookie也就消失所以我们的session也就消失了,session在什么情况下丢失,就是在服务器关闭的时候,或者是session过期(20分钟默认)。

  • cookie和session的关系:

http是无状态的协议 session是以cookie或URL重写为基础的, 他是流程化的 ,默认使用cookie来实现, session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,用户在连接服务器时,会由服务器生成一个唯一的SessionID,通过 SessionID来区分不同的客户 并且方便下一次的识别 Session是由应用服务器维持的一个服务器端的存储空间,而SessionID这一数据则是用Cookie保存到客户端,用户提交页面时,会将这SessionID提交到服务器端,来存取Session数据。

  • 实例:

//index.php
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>登录</title>
</head>
<body>
	
	<form action="login.php" method="post">
	    <p>帐号:<input type="text" name="name"/></p>
		<p>密码:<input type="password" name="pw"/></p>
		<p><input type="submit" name="login" value="登入"/></p>
	</form> 
</body>
</html>
//login.php
<?php
			session_start();


			if(isset($_POST["login"])){
    
    
				
				$name=$_POST["name"];
				$pw=$_POST["pw"];
				if($name=="admin"&&$pw==123456)
				{
    
    
					$_SESSION["name"]=$name;
					$_SESSION["pw"]=$pw;
					setcookie("Auth",1, time()+120); //2分钟后过期

					echo '登入成功,<a href="test.php">查看个人信息</a>';
				}
				else{
    
    
					echo '帐号或密码错误!<a href="JavaScript:history.back()">返回登入</a>';
				}
			}
			else{
    
    
				echo "plaese login";
			}
		?>
//test.php
<?php
	session_start();
	error_reporting(0);
	if (!isset($_COOKIE["Auth"])){
    
    	
		if (!isset($_SESSION["name"])) 
	{
    
    
   		echo "会话过期";
	
	}
	echo "<a href='index.php'>重新登录</a>";
	
}
	else{
    
    
		echo "帐户信息:<br/>";
		echo "用户名:".$_SESSION["name"]."<br/>";
		echo "密码:".$_SESSION["pw"]."<br/>";
		echo '<a href="logout.php?action=logout">注销</a>';
	}

//logout.php
<?php
	if($_GET['action']=="logout"){
    
    
		header('Refresh:3; url="index.php"');
		session_start();
		setcookie("cookiename", NULL);
		session_unset();
		session_destroy();
		echo "三秒后返回登入页面";
	}
?>

猜你喜欢

转载自blog.csdn.net/weixin_49298265/article/details/111877453