ログインの有効期限を達成するためのPHPセッションとCookie

ログインの有効期限を達成するためのPHPセッションとCookie

  • クッキーとセッションの違い

1. Cookieデータはクライアントのブラウザに保存され、セッションデータはサーバーに保存されるため、セッションのセキュリティはCookieのセキュリティよりも高くなります。

2.さらに、取得したセッションの情報は、Cookieに保存されているsessionIdを介して取得されます。

3.セッションはサーバーに保存されるため、セッション内のものを継続的に増やすと、サーバーの負担が大きくなります。重要なものをセッションに入れ、重要でないものをクライアントCookieに入れます。

4. Cookieは、セッションCookieと永続Cookieの2つのカテゴリに分類されます。そのライフサイクルはブラウザと同じです。ブラウザを閉じると、cookiが消え、永続性がクライアントにハードに保存されます。ディスク。。

5.ブラウザを閉じるとCookieが消えるため、セッションが消えます。どのような状況でセッションが失われるか、つまりサーバーが閉じられるか、セッションが期限切れになると(デフォルトでは20分)。

  • Cookieとセッションの関係:

httpはステートレスプロトコルです。セッションはCookieまたはURLの書き換えに基づいています。プロセス指向であり、デフォルトでCookieを使用して実装されます。セッションはコンテキスト情報を保存するメカニズムです。ユーザーごとに可変です。値はサーバーに保存されます。ユーザーがサーバーに接続すると、サーバーは一意のSessionIDを生成します。SessionIDは、さまざまなクライアントを区別し、次の識別を容易にするために使用されます。Sessionは、アプリケーションサーバーによって維持されるサーバー側のストレージスペースであり、SessionIDはこれです。 1つのデータがCookieとともにクライアントに保存されます。ユーザーがページを送信すると、SessionIDがサーバーに送信されてセッションデータにアクセスします。

  • 例:

//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