クッキーの簡単な説明

クッキーの意味

  • ログイン後、Cookieに情報が保存されているとします。この情報の有効期限は7日です。
    • ブラウザを閉じるかどうかに関係なく、キャッシュをクリアしない限り、Cookieは常にそこにあります。
    • 7日で期限切れ
  • ログインすると:
    • まず、Cookieに保存した情報があるかどうかを確認します
    • ある場合は、ログインを直接実行して処理を完了します
    • そうでない場合は、ログインしていないものとして処理されます
  • 一度ログインする限り:
    • このログイン情報は7日以内に保存できます
    • 7日以内に再度ログインする必要はありません。ウェブサイトを開くたびに、ログインの完了に応じて処理されます。
    • 7日後、再度ログインする必要があります
    • それは7日間のログインフリー機能を実現することです

クッキーとは

  • cookieデータが文字列の形式で保存される場所です
  • すべてのHTTPリクエストは、リクエストヘッダーのCookieをサーバーに送信します
  • すべてのHTTP応答は、応答ヘッダーにCookieを入れてクライアントに送信します
  • つまり、Cookieを手動で設定する必要はなく、クライアントとサーバー間でデータが自動的に移動されます。
  • クッキーの内容を設定するだけです。

クッキーの保管形態

  • Cookieは文字列key=valueの形式で保存され、次の形式で文字列に表示されます。
  • それぞれkey=valueがデータの一部です
  • 複数のデータに;分割
// cookie的形态
`a=100; b=200; c=300;`

クッキーの特徴

  • ドメイン名で保存:つまり、設定した人は誰でも読むことができます
  • 適時性:つまり、有効期限があり、
    1. デフォルトはセッションレベルです(つまり、ブラウザを閉じると期限切れになります)
    2. 手動で設定できます
  • ストレージサイズには制限があります:通常4kbまたは約50
  • フロントエンドとバックエンドの両方を操作できます。
    1. jsによるフロントエンド操作
    2. バックエンドはバックエンド言語で動作します
  • 自動キャリーをリクエストする:
    1. クッキースペースにコンテンツがある場合
    2. 現在のドメイン名でのリクエストである限り、Cookieが自動的に運ばれ、リクエストヘッダーに配置されます。
    3. クッキーに自動的に運ばれる金額
    4. クッキーにコンテンツがない場合、それは運ばれません

JS操作Cookie

クッキーを追加する

  • 文法:document.cookie = "key=value";
  • 注:一度に設定できるCookieは1つだけです。2つ設定する場合は、2回書き込む必要があります。
  • クッキー設定の適時性
    • 設定されていない場合、デフォルトはセッションエージングです(ブラウザを閉じると消えます)
    • クッキーの適時性を設定することは、クッキーを変更することです
      • document.cookie = "key=value; 修饰信息1=修饰的值1;修饰信息2=修饰的值2"
      • 有効期限の設定:document.cookie = "key=value; expires = 时间对象"
      • 有効なパスを設定します:(document.cookie = "key=value; path=路径"パスが設定されていない場合、デフォルトは現在のディレクトリパスです)
  • クッキーを設定するタイミング
    • new Date()を使用して取得するのは、端末の時刻です。これは、+ 8タイムゾーンの時刻です。
    • 新しいDate()で9:30を取得するとします。
    • しかし、私たちのターミナルでのこのクッキーの時間は17 :: 30です
    • 現時点でCookieを期限切れにする場合
    • それからあなたが得る終末時間は-8時間です
// 增加一条cookie
document.cookie = 'a=100';

// 再增加一条cookie
document.cookie = 'b=hello';

// 设置有过期时间的cookie
var date = new Date('2022/2/12');
document.cookie = "c=200; expires="+date;

// 设置cookie的path
document.cookie = "d=300;path=/";

// 设置一个cookie在5秒后过期
var date1 = new Date();
// 把当前时间往前推8个小时消失,在增加5秒时间
date1.setTime(date1.getTime()-8*60*60*1000+5*1000);
document.cookie = "e=200;expires="+date1;

// 设置一个有过期时间的cookie
document.cookie = 'f=100; expires=Thu,18 Dec 2043 12:00:00 GMT';// 上面这个 cookie 数据会在 2043 年 12 月 18 日 12 点以后过期,过期后会自动消失

// 获取cookie
console.log(document.cookie);

クッキーを削除する

  • クッキーは削除できません
  • このクッキーがもう必要ない場合
  • 次に、このCookieの有効期限を現在の時刻より前に設定してから、削除します。
// 先设置一条cookie
document.cookie = "name=zhangsan";
// 在删除这条cookie
var date = new Date();
date.setTime(date.getTime()-8*60*60*1000-1);
document.cookie = "name=zhangsan;path=/;expires="+date;

クッキーを取得する

  • jsはcookieを取得します:document.cookie
  • 彼は単一のデータを取得することはできず、すべてのCookieしか取得できません。
document.cookie = "aa=100";
document.cookie = "bbb=200";
document.cookie = "c=300";
document.cookie = "ac=60";
console.log(document.cookie);

var key = "ac";
var result;	//结果保存在这个变量里面
var str = document.cookie;	//"a=500; aa=100; bbb=200; c=300; ac=60"

//先把字符串以“; ”为分隔符,变成一个数组:['a=500','aa=100','bbb=200','c=300','ac=60']
var arr = str.split("; ");

// 遍历数组arr,看数组里面每一项
for(var i=0; i<arr.length; i++){
    
    
	// arr[0] = "a=500"
	// 把arr[i]以=为分隔符,前面是key,后面是value
	var tempArr = arr[i].split("=");//['a','500']
	if(tempArr[0]==key){
    
    
		// 如果这一项=前面的内容和key相同,=后面的值就是我们要的值,循环结束
		result = tempArr[1];
		break;
	}
	// 如果这一项的=前面的内容和key不相同,=后面的值就不是我们要的值,继续下一次
}
console.log(result);

JSオペレーションCookieパッケージ

  • jsでCookieを追加、削除、チェック、変更するための特別な方法がないため
  • したがって、メソッドを自分でカプセル化する必要があります

クッキーを設定する

/**
 * setCookie 用于设置 cookie
 * @param {STRING} key  要设置的 cookie 名称
 * @param {STRING} value  要设置的 cookie 内容
 * @param {NUMBER} expires  过期时间
 */
function setCookie(key, value, expires){
    
    
	const time = new Date();
	time.setTime(time.getTime()-1000*60*60*24*8+expires);
	document.cookie = `${
      
      key}= ${
      
      value}; expires=${
      
      time}`;
}

クッキーを削除する

/**
 * delCookie 删除 cookie 中的某一个属性
 * @param {STRING} name 你要删除的某一个 cookie 属性的名称
 */
function delCookie(name){
    
    
	setCookie(name,1,-1);
}

クッキーを取得する

/**
 * getCookie 获取 cookie 中的某一个属性
 * @param {STRING} key 你要查询的 cookie 属性
 * @return {STRING} 你要查询的那个 cookie 属性的值
 */
function getCookie(key){
    
    
	const cookieArr = document.cookie.split('; ');//这里 ; 号后面有个空格不能漏
	let value = '';
	cookieArr.forEach(item=>{
    
    
		if(item.split('=')[0] === key){
    
    
			value = item.split('=')[1];
		}
	})
	return value;
}

PHP操作Cookie

クッキーを追加する

  • 文法:setcookie(key,value,过期时间);
    • キー:設定するCookieの名前
    • value:設定するCookieの値
    • 有効期限:書き込むことはできません。デフォルトはセッション時間制限です。
  • バックエンドは、time()メソッドを使用して時間オブジェクトを取得します
    • あなたが得るものは秒単位の世界標準時間です
    • 現在の時刻から15秒後:time()+ 15
    • setcookie('php','200',time()+15);

クッキーを変更する

  • バックエンド変更Cookie
    • setcookieメソッドも使用します
    • もう一度設定するだけです
    • setcookie('a',100);
    • setcookie('a',200);

クッキーを削除する

  • バックエンドのCookieを削除する
    • setcookieメソッドも使用します
    • Cookieの有効期限が現在の時刻より前に設定されているだけです
    • setcookie('a','hello',time()-1);

クッキーを取得する

  • バックエンドからCookieを取得する
    • フロントエンドがリクエストを送信すると、Cookieはリクエストヘッダーで運ばれます
    • PHPには、と呼ばれる事前定義された変数があります$_COOKIE
    • と同様の連想配列です$_GET/$_POST
    • そこに保存されているのはCookie情報です。
    • どちらにしますか、$_COOKIE取り出してください

コードデモ

<?php
// 设置cookie,15秒后过期
setcookie('php',200,time()+15);

// 修改cookie,过期时间不写相当于改回默认过期时间
setcookie('php',100);

// 获取cookie
$php = $_COOKIE['php']; //$php=100

// 删除cookie
setcookie('php',100,time()-1);
?>

おすすめ

転載: blog.csdn.net/qq_45677671/article/details/113946466