ホームページ >バックエンド開発 >PHPチュートリアル >PHP フレームワーク codeigniter でフレームワークを使用する方法に関する session_PHP チュートリアルの解析

PHP フレームワーク codeigniter でフレームワークを使用する方法に関する session_PHP チュートリアルの解析

WBOY
WBOYオリジナル
2016-07-21 15:03:53845ブラウズ

セッションを使用するには 2 つの方法があります:
1 は php の元のセッション メソッドです。これは非常に簡単です。 $_SESSION['name']="name" で、必要な場所に表示します。 echo $_SESSION [ 'name'];
2 は codeigniter フレームワークのメソッドです:
以下は、このやや複雑なメソッドの使用方法の詳細な説明です:
まず、ciapplicationconfig の下の config.php ファイルを見つけます: $config[ 'encryption_key'] = '';これには任意の値を入力できますが、空にすることはできません。通常は英語なので、気負いすぎないでください。
次に、ciapplicationconfig の下の auto.php ファイルを見つけます: $autoload['libraries'] = array(''); を入力します: $autoload['libraries'] = array('session'); または、適切な例を入力します。 、コントロール フォルダー内の対応するファイル (通常は構築メソッド内) に次のように記述します: $this->load->library('session'); これも機能します。
環境が設定されたので、次はコードを記述します:
セッションを配置する必要がある場所を記述します:
$this->session->set_userdata('name','yang');
Inこのようにして、セッション内で価値があります。 C 表示値: hecho $ this-& gt; session-& gt; userdata ('name');
$ newdata = Array (
'username' = & gt; 'johndoe',
' email ' => 'johndoe@some-site.com',
'logged_in' => 無意味な関連知識:
セッションは各ページが読み込まれた後に実行を開始するため、最初にセッション クラスを初期化する必要があります。

1. コントローラーで初期化することも、システムに自動的にロードすることもできます (翻訳者注: autoload.php で設定します) $autoload['libraries'] = array('session');

2. コントローラー コンストラクターでセッション クラスを初期化するには、$this->load->library 関数を使用します。 $this->load->library('session'); $this->session のように使用できます。
セッション クラスのほとんどはバックグラウンドで実行されるため、セッションが初期化されると、セッション データが自動的に読み取られ、作成され、更新されます。

セッションはどのように機能しますか?

知っておくべき非常に重要なことは、セッション クラスが初期化されると、自動的に実行されるということです。残りは完全に無視して構いません。以下でわかるように、セッションを通常どおりに操作したり、独自のセッション データを追加したりすることもできます。その過程で、読み取り、書き込み、更新の操作が自動的に完了します。

ページがロードされると、セッション クラスはユーザーの Cookie に有効なセッション データがあるかどうかを確認します。セッション データが存在しない (または有効期限が切れている) 場合は、新しいセッションが作成され、Cookie に保存されます。セッションデータが存在する場合、その情報が更新され、同時に Cookie も更新されます。更新のたびに session_id の値が再生成されます。

デフォルトでは、セッション Cookie は 5 分ごとにのみ更新されるため、プロセッサの負荷が軽減されます。ページを繰り返しロードすると、「最後のアクティビティ」時間は 5 分以上経過するまで変わらないことがわかります。これは、Cookie が最後に書き込まれた時間です。 この時間は、application/config/config.php ファイルの $config['sess_time_to_update'] 行を設定することで変更できます。

セッションは、次の情報を含む配列で構成されます:

一意のユーザー セッション ID (これは、MD5 暗号化を使用して、平均情報量から計算された非常に強力なランダムな文字列であり、デフォルトでは 5 分ごとに更新されます)
ユーザーの IP アドレス

ユーザーのブラウザ情報 (最初の 50 文字を取得)

最新のアクティブなタイムスタンプ
上記のデータはシリアル化され、次の配列形式で Cookie に保存されます:



コードをコピーします。
コードは次のとおりです:

[array]( 'session_id' => ランダムハッシュ, 'ip_address' => 'string - ユーザー IP アドレス', 'user_agent' => 'string - ユーザー エージェント データ',
'last_activity' => タイムスタンプ
)


1. セッション データを取得します:
次の関数を通じてセッション配列の情報を取得できます:
$this->session->userdata('item');
item は配列内の対応するデータです。索引。たとえば、セッション ID を取得するには、次のコードを使用する必要があります:
$session_id = $this->session->userdata('session_id');
注: ターゲット データが存在しない場合、この関数はwill は FALSE (ブール値) を返します。

2. カスタマイズされたセッション データを追加する:
特定のユーザーが Web サイトにログインすると、そのユーザー名と電子メールをセッション Cookie に追加せずに削除できます。データベースにアクセスするときは、グローバル変数として使用します。
次の関数を使用して、新しいユーザー配列をセッション配列に渡すことができます:
$this->session->set_userdata($array);
$array は、新しいデータを保存するために使用される結合配列です。例:

コードをコピーします コードは次のとおりです:

$newdata = array(
'johndoe@some-site.com',
'logged_in' => TRUE
);
$ this->session->set_userdata($newdata);

次の set_userdata() 関数を使用する場合、一度に追加できるユーザー データは 1 つだけです。
$this->session->set_userdata('some_name', 'some_value');
注: Cookie は 4 KB のデータのみを保存できるため、使用する場合はその容量を超えないよう注意してください。特に暗号化すると元のデータよりも長いデータ列が生成されるため、保存するデータのサイズには注意してください。

3. セッション データの削除: set_userdata() を使用してセッションに情報を追加するのと同じように、セッション キーを unset_userdata() 関数に渡すことでこの情報を削除できます。たとえば、セッション情報から 'some_name' を削除したい場合:$this->session->unset_userdata('some_name');
削除する項目の連想配列をこの関数に渡すこともできます。
$array_items = array('username' => '', 'email' => '');
$this->session->unset_userdata($array_items);

4. セッション データをデータベースに保存する:
データベースでセッション データが利用可能な場合、ユーザー Cookie から有効なセッションが見つかるたびに、それに一致するデータベース クエリが実行されます。セッション ID が一致しない場合、セッションは破棄されます。セッション ID は更新されることはなく、新しいセッションが作成されたときにのみ生成されます。
セッションを保存するには、まずデータテーブルを作成する必要があります。これは、セッション クラス (MySQL の場合) に必要な基本構造です:

コードをコピー コードは次のとおりです:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0 ' NOT NULL、
ip_address varchar(16) DEFAULT '0' NOT NULL、
user_agent varchar(50) NOT NULL、
last_activity int(10) unsigned DEFAULT 0 NOT NULL、
user_data text DEFAULT '' NOT NULL、
主キー(セッションID ) );


有効にすると、Session クラスはセッション データをデータベースに保存します。
また、設定ファイルでデータ テーブル名を指定していることを確認してください: $config['sess_table_name'] = 'ci_sessions';
注: デフォルトでは、このテーブルの名前は ci_sessions ですが、必要に応じて任意の名前を付けることができます。更新します application/config/config.php ファイルをチェックして、指定した名前が含まれていることを確認します。データ テーブルを作成したら、次のように config.php ファイルでデータベース オプションを有効にできます:
$config['sess_use_database'] = TRUE;
注: Session クラスには、期限切れをクリアするためのガベージ コレクション メカニズムが組み込まれています。したがって、これを行うために独自のトランザクションを作成する必要はありません。

5. セッションを破棄します
現在のセッションをクリアするには: $this->session->sess_destroy();
セッションパラメータ

6. application/config/config.php ファイルには、次のセッション関連パラメータがあります:
パラメータ デフォルト オプション 説明
sess_cookie_name ci_session なし セッション Cookie を保存する名前。
sess_expiration 7200 なし セッションが持続する秒数。デフォルトは 2 時間 (7200 秒) です。この値を 0 に設定すると、永続的なセッションを取得できます。
sess_expire_on_close FALSE TRUE/FALSE (ブール値) このオプションは、ブラウザ ウィンドウが閉じられたときにセッションを自動的に期限切れにするかどうかを決定します。
sess_encrypt_cookie FALSE TRUE/FALSE (Boolean boolean) セッション データを暗号化するかどうか。
sess_use_database FALSE TRUE/FALSE (Boolean boolean) セッション データをデータベースに保存するかどうか。このオプションをオンにする前に、まずデータベース テーブルを作成する必要があります。
sess_table_name ci_sessions 任意の有効な SQL テーブル名 セッション データベース テーブルの名前。
sess_time_to_update 300 秒単位の時間 このオプションは、セッション クラスが新しいセッションとセッション ID を生成する頻度を制御します。
sess_match_ip FALSE TRUE/FALSE (ブール値) ユーザーの IP アドレスを通じてセッション データを読み取るかどうか。 一部のネットワーク オペレータや ISP は IP を動的に変更するため、このオプションを FALSE に設定すると永続的なセッションを取得できることに注意してください。
sess_match_useragent TRUE TRUE/FALSE (ブール値) 対応するユーザー エージェントに従ってセッション データを読み取るかどうか。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327825.html技術記事セッションを使用するには 2 つの方法があります。 1 は、PHP でセッションを使用する元の方法です。これは非常に単純です。$_SESSION['name']="name" で、必要な場所に表示します。 echo $_SESSION['name' ] ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。