1. Cookie とは:
Cookie という複数形で使用されることもあります。これは、ユーザーの身元を特定し、セッション追跡を実行するために、一部の Web サイトによってユーザーのローカル端末に保存されるデータ (通常は暗号化されている) を指します。 。 Cookie の最も一般的な用途は、登録ユーザーが Web サイトにログインしたかどうかを判断することです。ユーザーは、ログイン手順を簡素化するために、次回 Web サイトにアクセスするときにユーザー情報を保持するかどうかを尋ねられることがあります。もう 1 つの重要なアプリケーションは、「ショッピング カート」処理です。ユーザーは一定期間内に同じ Web サイトの異なるページで異なる商品を選択する場合があります。この情報は Cookie に書き込まれ、最終的な支払い時に情報を取得できるようになります。
利点:
優れた互換性
欠点:
1. ネットワーク トラフィックの増加。
2. データ容量は制限されており、ブラウザによって異なります。 Cookie を削除するため、プログラムの機能に影響を与えます。
3. 安全ではありません。複数のユーザーがコンピュータを共有する場合、Cookie を使用すると、ユーザーのプライバシーが漏洩し、セキュリティ上の問題が発生する可能性があります。
2. Cookie の仕組み:
Cookie は、Web サーバーによってユーザーのハードドライブに保存されるテキストであり、いくつかの「キーと値」のペアが保存されます。各 Web サイトはユーザーのマシンに Cookie を保存し、必要に応じて Cookie データを取得できます。通常、Web サイトには Cookie ファイルがあります。ユーザーはサイト A にアクセスするたびに、サイト A の Cookie ファイルを検索します。このファイルが存在する場合は、そこからユーザー名とパスワードの「キーと値」のペアのデータが読み取られます。ユーザー名とパスワードの「キーと値」ペアのデータが見つかった場合は、アクセス要求とともにサイト A に送信されます。サイト A がアクセス要求の受信時にユーザー名とパスワードの「キーと値」データも受信した場合、サイト A はログインにユーザー名とパスワードのデータを使用するため、ユーザーはユーザー名とパスワードを入力する必要がありません。ユーザー名とパスワードの「キーと値」のペアのデータが受信されない場合は、その時点でユーザーが以前に正常にログインしていないことを意味し、サイト A はユーザーにログイン ページを返します。また、各Cookieには有効期限があり、有効期限が切れたCookieは使用できなくなります。 一般的に使用される Cookie 操作は、Cookie データの設定、Cookie データの読み取り、指定された Cookie データの削除です。
構文:
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
setcookie() は、残りの HTTP ヘッダーとともにクライアントに送信される Cookie を定義します。 他の HTTP ヘッダーと同様に、スクリプトが出力を生成する前に Cookie を送信する必要があります (プロトコルの制限のため)。 出力 ( と
またはスペースを含む) を生成する前に、この関数を呼び出してください。 Cookie が設定されると、次回ページを開いたときに $_COOKIE を使用して読み取ることができます。 Cookie の値は $_REQUEST にも存在しますname: Cookie 名。
value: Cookie の値。 この値はユーザーのコンピュータに保存されます。機密情報は保存しないでください。 たとえば、名前は「cookiename」で、その値は $_COOKIE[「cookiename」] を通じて取得できます。
expire: Cookie の有効期限。 これは Unix タイムスタンプで、Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数です。 言い換えれば、基本的には time() 関数の結果に期限切れにする秒数を加えたものを使用できます。 または、mktime() を使用することもできます。 time()+60*60*24*30 は、Cookie が 30 日後に期限切れになるように設定します。 ゼロに設定した場合、またはパラメータを省略した場合、Cookie はセッションの終了時 (つまり、ブラウザが閉じられたとき) に期限切れになります。
path: Cookie の有効なサーバーのパス。 「/」に設定すると、Cookie はドメイン名ドメイン全体に対して有効になります。 「/foo/」に設定されている場合、Cookie はドメイン内の /foo/ ディレクトリとそのサブディレクトリ (/foo/bar/ など) に対してのみ有効です。 デフォルト値は、Cookie が設定されているときの現在のディレクトリです。
domain: Cookie の有効なドメイン/サブドメイン名。 これをサブドメイン (例: 「www.example.com」) に設定すると、Cookie がこのサブドメインとその第 3 レベルのドメイン (例: w2.www.example.com) に対して有効になります。 Cookie をドメイン全体 (そのすべてのサブドメインを含む) に対して有効にするには、Cookie をドメイン名 (この場合は「example.com」) に設定するだけです。
secure: この Cookie が安全な HTTPS 接続を通じてのみクライアントに渡されるかどうかを設定します。 TRUE に設定すると、安全な接続が存在する場合にのみ Cookie が設定されます。 この要件がサーバー側で処理される場合、プログラマは安全な接続 ($_SERVER["HTTPS"] によって決定される) を介してそのような Cookie を送信するだけで済みます。
httponly: TRUE に設定すると、Cookie は HTTP プロトコル経由でのみアクセスできます。 これは、JavaScript などのスクリプト言語を介して Cookie にアクセスできないことを意味します。偽です。制限はありません。
戻り値
この関数を呼び出す前に出力が生成された場合、setcookie() は失敗し、FALSE を返します。 setcookie() が正常に実行された場合は TRUE を返します。もちろん、これはユーザーが Cookie を受け入れたかどうかを意味するものではありません。
Cookieの設定と読み取り
<?php $value="my cookie value"; //发送一个简单的cookie setcookie("testcookie",$value,time()+60); //set cookie?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Testcookie</title></head><body> <?php if(isset($_COOKIE["testcookie"])) //判断是否存在 echo($_COOKIE["testcookie"]."<br>"); print_r($_COOKIE); ?></body></html>
Cookieの削除
Cookieを削除するには、ブラウザの削除メカニズムをトリガーするために有効期限を過去に設定する必要があります。
?>
用于记录当前用户访问网站的次数:
<?php if(isset($_COOKIE["num"])) $num=$_COOKIE["num"]; else $num=0; //首次设置cookie $num=$num+1; setcookie("num",$num,time()+60*60) //发送一个cookie num记录访问次数?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Testcookie</title></head><body> <?php if($num>1) echo("您已经第".$num."次访问本站点了。"); else echo("欢迎首次访问本站"); //关闭网页后,变量$num将被释放,但因为它的值已经保存再cookie中,所以下次打开网页会连续计数 ?></body></html>
用户验证身份是验证cookie:
<?php //身份验证cookie header("content-type:text/html;charset=utf-8"); error_reporting(0); //取输入的用户名和密码 $uid=$_POST['username']; $upwd=$_POST['pwd']; //验证用户名和密码 if($uid=="admin" && $upwd=="pass") { echo("您已经登入成功,欢迎光临"); if($_POST['checkboxCookie']=="on") { setcookie("username",$uid,time()+60*60*24); setcookie("pwd",$upwd,time()+60*60*24); } } else echo("登入失败,请返回重新登录");?><?php error_reporting(0);?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Testcookie</title> <style type="text/css">form { margin-top: 300px; padding-left: 40%;}input[type="password"]{ margin-left: 16px;}input[type="reset"],input[type="submit"]{ margin-left: 80px;}</style></head><body> <form action="1.php" method="POST"> <label>用户名: <input type="text" name="uesrname" value=" <?php echo($_COOKIE["username"]);?>"> </label> <br><br> <!-- 保留上次成功登入的用户名--> <lable>密码: <input type="password" name="pwd" value="<?php echo($_COOKIE["password"]);?>" > </lable> <!-- 保留上次成功登入的用户名 --> <input type="checkbox" checked name="checkboxCookie">保留用户信息<br><br> <!-- 复选框 --> <input type="submit" name="put_info" value="登录"> <input type="reset" name="rest_info" value="重置"> </form></body></html>
相关推荐:
以上がPHPセッション制御用Cookieの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

セッション固定攻撃を防ぐための効果的な方法には、次のものがあります。1。ユーザーがログインした後にセッションIDを再生します。 2。安全なセッションID生成アルゴリズムを使用します。 3。セッションタイムアウトメカニズムを実装します。 4。HTTPSを使用したセッションデータを暗号化します。これらの措置は、セッションの固定攻撃に直面するときにアプリケーションが破壊されないようにすることができます。

セッションのない認証の実装は、サーバー側のセッションストレージなしですべての必要な情報がトークンに保存されるトークンベースの認証システムであるJSonWebtokens(JWT)を使用することで実現できます。 1)JWTを使用してトークンを生成および検証する、2)トークンが傍受されるのを防ぐためにHTTPSが使用されることを確認する、3)クライアント側にトークンを安全に保存する、4)改ざんを防ぐためにサーバー側のトークンを検証する、5)短期アクセスや長期的なリフレイを使用するなどのトークンの取り消しメカニズムを実装する。

PHPセッションのセキュリティリスクには、主にセッションハイジャック、セッションの固定、セッション予測、およびセッション中毒が含まれます。 1。HTTPSを使用してCookieを保護することにより、セッションハイジャックを防ぐことができます。 2。ユーザーがログインする前にセッションIDを再生することにより、セッションの固定を回避できます。3。セッションの予測は、セッションIDのランダム性と予測不可能性を確保する必要があります。 4.セッションの中毒は、セッションデータを確認およびフィルタリングすることで防ぐことができます。

PHPセッションを破壊するには、最初にセッションを開始してから、データをクリアしてセッションファイルを破壊する必要があります。 1。Session_start()を使用してセッションを開始します。 2。Session_unset()を使用して、セッションデータをクリアします。 3.最後に、session_destroy()を使用してセッションファイルを破壊して、データのセキュリティとリソースのリリースを確保します。

PHPのデフォルトセッションの保存パスを変更する方法は?次の手順で達成できます。Session_save_path( '/var/www/sessions'); session_start(); PHPスクリプトで、セッション保存パスを設定します。 session.save_path = "/var/www/sessions"をphp.iniファイルに設定して、セッションの保存パスをグローバルに変更します。 memcachedまたはredisを使用して、ini_set( 'session.save_handler'、 'memcached')などのセッションデータを保存します。 ini_set(

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









