目次
PHP の Yii フレームワーク、yiicookie
您可能感兴趣的文章:
ホームページ バックエンド開発 PHPチュートリアル PHP の Yii フレームワークの cookie およびセッション関数の関連操作を分析する、yiicookie_PHP チュートリアル

PHP の Yii フレームワークの cookie およびセッション関数の関連操作を分析する、yiicookie_PHP チュートリアル

Jul 12, 2016 am 08:56 AM
cookie php yii

PHP の Yii フレームワーク、yiicookie

Sessions

の Cookie とセッション関数の関連操作を分析します。

リクエストやレスポンスと同様に、セッションにはデフォルトで yiiwebSession インスタンスのセッション アプリケーション コンポーネントを通じてアクセスできます。

セッションの開閉

次のコードを使用してセッションを開いたり閉じたりできます。

リーリー

yiiwebSession::open() メソッドと yiiwebSession::close() メソッドを複数回呼び出しても、メソッドはセッションが開いているかどうかを最初にチェックするため、エラーは発生しません。

セッションデータにアクセスする

セッションに保存されたデータにアクセスするには、次の手順を実行できます:

リーリー

補足: session コンポーネントを使用してセッションデータにアクセスする場合、セッションが開かれていない場合は、最初に session_start() を実行する必要がある $_SESSION とは異なります。
セッション データが配列の場合、セッション コンポーネントにより、データ内のユニット項目を直接変更することが制限されます。例:

リーリー

この問題を解決するには、次のいずれかの回避策を使用してください:

リーリー

パフォーマンスと可読性を向上させるために、最後の解決策をお勧めします。これは、セッション変数を配列として保存するのではなく、各配列項目を同じキー プレフィックスを持つセッション変数に変換することです。

カスタマイズされたセッションストレージ

yiiwebSession クラスは、デフォルトでセッション データをサーバー上にファイルとして保存します。Yii は、さまざまなセッション ストレージ メソッドを実装するために次のセッション クラスを提供します。

    yiiwebDbSession: セッションデータをデータテーブルに保存します
  • yiiwebCacheSession: セッション データをキャッシュに保存します。キャッシュは構成内のキャッシュ コンポーネントに関連付けられます。
  • yiiredisSession: セッションデータを記憶媒体としてredisに保存します
  • yiimongodbSession: セッション データを MongoDB に保存します。
  • これらすべてのセッション クラスは、同じ API メソッドのセットをサポートしているため、別のセッション ストレージ メディアに切り替えるときに、そのセッションを使用するプロジェクトのコードを変更する必要はありません。

注: $_SESSION を通じてカスタム ストレージ メディアを使用してセッションにアクセスする場合は、yiiwebSession::open() を使用してセッションが開かれていることを確認する必要があります。これは、カスタム セッション ストレージ プロセッサがこのメソッドに登録されているためです。

これらのコンポーネント クラスの設定方法と使用方法については、API ドキュメントを参照してください。以下は、データ テーブルをセッション ストレージ メディアとして使用するようにアプリケーション設定で yiiwebDbSession を設定する方法を示す例です。

リーリー
セッション データを保存するには、次のデータベース テーブルを作成する必要もあります:

リーリー

「BLOB」は、選択したデータベース管理システムの BLOB タイプに対応します。以下は、一般的に使用されるデータベース管理システムの BLOB タイプです。

MySQL: LONGBLOB

    PostgreSQL: BYTEA
  • MSSQL: BLOB
  • 注: php.ini で設定された session.hash_function に従って、id 列の長さを調整する必要があります。たとえば、session.hash_function=sha256 の場合は、長さ 40 ではなく 64 の char 型を使用する必要があります。 。

フラッシュデータ

フラッシュデータは特別な種類のセッションデータであり、一度リクエストに設定されると、次のリクエストでのみ有効になり、その後データは自動的に削除されます。 ユーザーがフォームを送信した後に確認情報を表示するなど、エンド ユーザーに 1 回だけ表示する必要がある情報を実装するためによく使用されます。

セッションは、セッション アプリケーション コンポーネントを通じて設定またはアクセスできます。例:

リーリー

通常のセッションデータと同様に、任意のデータをフラッシュデータとして保存できます。

yiiwebSession::setFlash() を呼び出すと、同じ名前の既存のデータは自動的に上書きされ、同じ名前の既存のフラッシュにデータを追加するには、代わりに yiiwebSession::addFlash() を呼び出すことができます。 例:

リーリー

注: yiiwebSession::setFlash() と yiiwebSession::addFlash() を同じ名前のフラッシュ データに使用しないでください。後者の予防策を使用すると、新しいフラッシュ データを追加できるようにフラッシュ情報が自動的に配列に変換されます。したがって、 yiiwebSession::getFlash() を呼び出すと、これら 2 つのメソッドを呼び出す順序に応じて、配列を取得する場合もあれば、文字列を取得する場合もあります。

クッキー


Yii は、yiiwebCookie オブジェクトを使用して各 cookie を表します。yiiwebRequest と yiiwebResponse は、「cookies」という名前の属性を通じて cookie コレクションを維持し、前者の cookie コレクションはリクエストによって送信された cookie を表し、後者の cookie コレクションはユーザーに送信された cookie を表します。 。

クッキーを読む

現在要求されている Cookie 情報は、次のコードを通じて取得できます: リーリー

クッキーを送信

次のコードを使用してエンド ユーザーに Cookie を送信できます: 次のコードを使用してエンド ユーザーに Cookie を送信できます: リーリー

上記の例で定義された yiiwebCookie::name 属性と yiiwebCookie::value 属性に加えて、yiiwebCookie クラスは、yiiwebCookie::domain、yiiwebCookie::expire など、さまざまな Cookie 情報を実装するための他の属性も定義します。属性を Cookie に追加し、応答 Cookie コレクションに追加します。

注意: 为安全起见yii\web\Cookie::httpOnly 被设置为true,这可减少客户端脚本访问受保护cookie(如果浏览器支持)的风险, 更多详情可阅读 httpOnly wiki article for more details.
Cookie验证

在上两节中,当通过request 和 response 组件读取和发送cookie时,你会喜欢扩展的cookie验证的保障安全功能,它能 使cookie不被客户端修改。该功能通过给每个cookie签发一个哈希字符串来告知服务端cookie是否在客户端被修改, 如果被修改,通过request组件的yii\web\Request::cookiescookie集合访问不到该cookie。

注意: Cookie验证只保护cookie值被修改,如果一个cookie验证失败,仍然可以通过$_COOKIE来访问该cookie, 因为这是第三方库对未通过cookie验证自定义的操作方式。
Cookie验证默认启用,可以设置yii\web\Request::enableCookieValidation属性为false来禁用它,尽管如此,我们强烈建议启用它。

注意: 直接通过$_COOKIE 和 setcookie() 读取和发送的Cookie不会被验证。
当使用cookie验证,必须指定yii\web\Request::cookieValidationKey,它是用来生成s上述的哈希值, 可通过在应用配置中配置request 组件。

return [
  'components' => [
    'request' => [
      'cookieValidationKey' => 'fill in a secret key here',
    ],
  ],
];
ログイン後にコピー

补充: yii\web\Request::cookieValidationKey 对你的应用安全很重要, 应只被你信任的人知晓,请不要将它放入版本控制中。

您可能感兴趣的文章:

  • PHP的Yii框架中行为的定义与绑定方法讲解
  • 详解在PHP的Yii框架中使用行为Behaviors的方法
  • 深入讲解PHP的Yii框架中的属性(Property)
  • 解读PHP的Yii框架中请求与响应的处理流程
  • PHP的Yii框架中使用数据库的配置和SQL操作实例教程
  • 实例讲解如何在PHP的Yii框架中进行错误和异常处理
  • 简要剖析PHP的Yii框架的组件化机制的基本知识
  • PHP的Yii框架中YiiBase入口类的扩展写法示例
  • 详解PHP的Yii框架的运行机制及其路由功能
  • 深入解析PHP的Yii框架中的event事件机制
  • 全面解读PHP的Yii框架中的日志功能
  • PHP的Yii框架中移除组件所绑定的行为的方法

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1111914.htmlTechArticle解析PHP的Yii框架中cookie和session功能的相关操作,yiicookie Sessions 和 请求 和 响应类似, 默认可通过为yii\web\Session 实例的session 应用组件 来访...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP サービス CakePHP サービス Sep 10, 2024 pm 05:26 PM

この章では、CakePHP で利用できる認証プロセスに関する情報を扱います。

See all articles