CookieとSessionの使用、長所と短所と違い

11987 ワード

php簡単ノート
1.0 Cookie
クッキーについての説明
  • HTTPプロトコルは無状態であるため、サーバはユーザが前回何をしたかを知らないので、対話式Webアプリケーションの実現を大いに阻害している。典型的なオンラインショッピングシーンでは、ユーザーはいくつかのページを閲覧し、クッキー1箱と飲み物2本を買った。最後に決算する時、HTTPの無状態性のため、追加の手段を通じて(通って)ないで、サーバーはユーザーが一体何を買いましたかを知らないで、だからCookieはHTTPの無状態性の“余分な手段”の1つを避けます。サーバは、Cookiesに含まれている情報を設定したり、読み取ったりして、ユーザとサーバのセッション中の状態を維持することができる。
  • は先ほどのショッピングシーンにおいて、ユーザが第一の商品を選択したとき、サーバーがユーザーにウェブページを送信すると同時に、その商品の情報を記録したCookieを送信しました。ユーザーが別のページにアクセスすると、ブラウザがCookieをサーバに送信します。そこで、サーバーは彼が以前に何を選んだかを知っています。ユーザーは引き続き飲み物を選んで、サーバーはもとのあのCookieの中で新しい商品の情報を追加します。決済時に、サーバーが送信してきたCookieを読み込めばいいです。
  • Cookieのもう一つの典型的なアプリケーションは、ウェブサイトにログインすると、ユーザーにユーザ名とパスワードの入力を要求し、ユーザーは「次の自動登録」にチェックすることができる。チェックを外すと、今度同じサイトにアクセスすると、ユーザーがユーザ名とパスワードを入力していないことに気づきます。これは、前回ログインしたときに、ログイン証明書(ユーザ名にパスワードを付加する暗号化形式)を含むCookieをユーザのハードディスクに送信したからです。第二次登録時に、このCookieがまだ満期にならないと、ブラウザからCookieが送られてきます。サーバ検証証明書は、ユーザ名とパスワードを入力せずにユーザー登録されます。
  • クッキー
    クッキーは現在の情報とサーバーの交流を維持するためのファイルです。
    先端で紹介したsession Strageとlocal Strageも同様の機能です。
    内容
    クッキー
    local Strage
    session Strage
    ライフサイクル
    一般的にサーバによって生成され、失効時間が設定されます。ブラウザ側でクッキーが生成されると、デフォルトでブラウザを閉じて失効します。
    削除されない限り、永久に保存します。
    現在のセッションのみ有効で、ページまたはブラウザを閉じて削除されます。
    データサイズ
    4 k
    20 M
    5 M
    サーバと通信する
    httpリクエストヘッドに携帯し、クッキーを多すぎるデータを保存すると性能に問題があります。
    クライアントすなわちブラウザにのみ保存し、サーバとの通信には参加しません。
    クライアントすなわちブラウザにのみ保存し、サーバとの通信には参加しません。
    使いやすさ
    プログラマが自分でカプセル化する必要があります。
    生インターフェースは受け入れられます。また、ObjとArrに対してより良いサポートがあります。
    生インターフェースは受け入れられます。また、ObjとArrに対してより良いサポートがあります。
    クッキーを使う
    
      	//   cookie
      	// setcookie("username", "tylor");  //          
      
    	//              cookie  -- $_COOKIE
    	if(isset($_COOKIE["username"])) {
          	echo "    ,     ";
    	}else {
    		echo "      ,         ~";
          	setcookie("username", "tylor");
        }
      
    ?>
    
    chrome:設定=>詳細設定=>コンテンツ設定=>クッキー
    明文保存のクッキー設定の値が見られます。
    クッキーのパラメータ
    クッキーの有効期間
    
        //     ,     php       (1970-1-1)
        // setcookie("username", "tylor", 100);
        setcookie("username", "tylor", time() + 10);
    
    	//        
    	setcookie("username", "tylor", PHP_INT_MAX);
    
    ?>
    
    クッキーの有効ディレクトリ
    
        //          cookie   
      	echo $_COOKIE["username"];
    
    	//   path        ,       
    	setcookie("username", "tylor", PHP_INT_MAX, "/day05/down");
    	//       ,       ,     ,        "/"         
    	// Domain:     path:      secure:   https            
    	
    
    	//        cookie
    	// set-cookie: ds_user_id=3265153328; Domain=.instagram.com; expires=Wed, 13-Feb-2019 14:19:35 GMT; Max-Age=7776000; Path=/; Secure
    
    ?>
    
    クッキーを削除
    
      	//     cookie php  
      
      	// 1.0            
      	// setcookie("username", "");             ,       
      	setcookie("username", "", PHP_INT_MAX, "/day05/down");
    	echo "ok";
    
    	// 2.0         ,        
    ?>
    
    クッキーの欠陥について
  • Cookieは、各HTTP要求に付加されるので、知らず知らずのうちに流量
  • を増加させている。
  • HTTP要求におけるCookieは平文で伝達されるので、HTTPS
  • を使用しない限り、安全性が問題となる。
  • Cookieのサイズは4 KBぐらいに制限されています。複雑な記憶需要にとっては足りない
  • です。
    2.0セッション
    セッションとクッキーの違い
  • sessionはサーバに保存されています。クライアントはその中の情報を知りません。クッキーはクライアントに保存されており、サーバはその中の情報を知ることができる
  • sessionにはオブジェクトが保存されており、cookieには文字列
  • が保存されている。
  • sessionは経路を区別できません。同じユーザーが一つのウェブサイトを訪問している間、すべてのセッションはどこでもアクセスできます。クッキーにパスパラメータが設定されている場合、同じウェブサイトの異なる経路におけるクッキーは互いにアクセスできない
  • である。
  • cookieは安全ではありません。私は当地に保管されているCOOKIEを分析してCOOKIE詐欺を行うことができます。
  • セッションは一定時間サーバに保存されます。アクセスが増えると、あなたのサーバーの性能を占用します。サーバの性能を軽減するために、COOKIE
  • を使用するべきです。
  • 単一のクッキーによって保存されたデータは4 kを超えてはいけません。多くのブラウザは一つのサイトに最大20個のクッキー
  • を保存することを制限しています。
  • セッションは、cookieを通じて動作する
  • です。
    phpファイルにセッションを設定します。
    セッションの機能を開くには、セッションを使用することができます。
    
      	// !!! php       session  ,             
    	session_start();
    	/*
    		1,            sessionID
    		2,                         ,    sess_sessionID  
    		3,          cookie,  cookie            sessionID
    	*/
      
      	//   session          $_SESSION["name"] = value;
      	$_SESSION["user"] = Array(
    							"name" => "dilireba",
      							"age" => 25
    						);
    ?>
    
    請求プロセス
  • 最初にサーバに要求を開始したが、これらのパラメータは存在しない。
  • サーバがsessionIDを作成し、対応するコンテンツ
  • を格納する。
  • サーバ戻りパラメータは、cookieにおいて
  • クライアントは、戻ってきたクッキーの値を返すことによって、
  • を要求し続ける。
  • サーバは、cookieにおけるsessionIDの値に基づいて、対応するファイル処理関連動作
  • を見つける。
    設定ファイルを変更
    //    session.auto_start       0  1  
    
    セッションの基本操作
    セッションの値を読みだします
    
     	session_start();
    	$str = $_SESSION["username"];
    ?>
    
    セッションの値を削除
    
      	session_start();
    
      	//     session  
    	unset($_SESSION["username"]);
    
    	//   session    
    	$_SESSION = [];
    
    	//   session  
    	session_destroy();
    ?>