Sesión de PHP y cookie para lograr la expiración del inicio de sesión

Sesión de PHP y cookie para lograr la expiración del inicio de sesión

  • La diferencia entre cookie y sesión

1. Los datos de la cookie se almacenan en el navegador del cliente y los datos de la sesión se almacenan en el servidor, por lo que la seguridad de la sesión es mayor que la de la cookie.

2. Además, la información de la sesión que obtenemos se obtiene a través del sessionId almacenado en la cookie.

3. Debido a que la sesión se almacena en el servidor, el aumento continuo de las cosas en la sesión aumentará la carga en el servidor. Pondremos algunas cosas importantes en la sesión y las menos importantes en la cookie del cliente.

4. Las cookies se dividen en dos categorías, una son cookies de sesión y cookies persistentes. Su ciclo de vida es el mismo que el del navegador. Cuando se cierra el navegador, la cooki desaparecerá y la persistencia se almacenará en el cliente. disco.

5. La cookie desaparece cuando se cierra el navegador, por lo que desaparece nuestra sesión, en qué circunstancias se perderá la sesión, es decir, cuando se cierre el servidor o caduque la sesión (20 minutos por defecto).

  • La relación entre cookie y sesión:

http es un protocolo sin estado. La sesión se basa en la reescritura de cookies o URL. Está orientada a procesos y se implementa de forma predeterminada mediante cookies. La sesión es un mecanismo para guardar información de contexto. Es variable para cada usuario. El valor se almacena en el servidor Cuando el usuario se conecta al servidor, el servidor generará un SessionID único. El SessionID se usa para distinguir diferentes clientes y facilitar la siguiente identificación. Session es un espacio de almacenamiento del lado del servidor mantenido por el servidor de aplicaciones, y SessionID es este Un dato se guarda en el cliente con una cookie. Cuando el usuario envía la página, el SessionID se enviará al servidor para acceder a los datos de la sesión.

  • Ejemplos:

//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 "三秒后返回登入页面";
	}
?>

Supongo que te gusta

Origin blog.csdn.net/weixin_49298265/article/details/111877453
Recomendado
Clasificación