検索
ホームページバックエンド開発PHPチュートリアルPHPセッション制御用Cookieの詳細説明

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[&#39;username&#39;];        $upwd=$_POST[&#39;pwd&#39;];    //验证用户名和密码
   if($uid=="admin" && $upwd=="pass")
   {        echo("您已经登入成功,欢迎光临");        if($_POST[&#39;checkboxCookie&#39;]=="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中的会话控制

php中会话控制的深入理解

详细介绍php会话控制的实例代码

以上がPHPセッション制御用Cookieの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッション固定攻撃をどのように防ぐことができますか?セッション固定攻撃をどのように防ぐことができますか?Apr 28, 2025 am 12:25 AM

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

セッションレス認証をどのように実装しますか?セッションレス認証をどのように実装しますか?Apr 28, 2025 am 12:24 AM

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

PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?PHPセッションに関連するいくつかの一般的なセキュリティリスクは何ですか?Apr 28, 2025 am 12:24 AM

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

PHPセッションをどのように破壊しますか?PHPセッションをどのように破壊しますか?Apr 28, 2025 am 12:16 AM

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

PHPのデフォルトセッションの保存パスをどのように変更できますか?PHPのデフォルトセッションの保存パスをどのように変更できますか?Apr 28, 2025 am 12:12 AM

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(

PHPセッションに保存されているデータをどのように変更しますか?PHPセッションに保存されているデータをどのように変更しますか?Apr 27, 2025 am 12:23 AM

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

PHPセッションに配列を保存する例を示します。PHPセッションに配列を保存する例を示します。Apr 27, 2025 am 12:20 AM

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

Garbage CollectionはPHPセッションでどのように機能しますか?Garbage CollectionはPHPセッションでどのように機能しますか?Apr 27, 2025 am 12:19 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

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

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン