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 サイトの他の関連記事を参照してください。