ホームページ > バックエンド開発 > PHPチュートリアル > phpとcodeigniterにおけるsession-cookieの利用方法の解析

phpとcodeigniterにおけるsession-cookieの利用方法の解析

不言
リリース: 2023-04-01 07:48:02
オリジナル
1703 人が閲覧しました

PHP と codeigniter で session-cookie を使用する方法 (詳細な説明) についての記事を次に紹介します。内容がとても良かったので、参考としてシェアさせていただきます。

1. Cookie の読み取りと書き込み

##<1>ネイティブ

setcookie(&#39;name&#39;,&#39;value&#39;,time)
ログイン後にコピー

#セットアップに失敗しました。ブラウザに正常に書き込まれませんでした。テストに失敗しました。理由は不明です。

<2>CI フレームワーク

$this->input->set_cookie("views","test10",1000);
echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
ログイン後にコピー

<3>ヘルパーによる

$this->load->helper(&#39;cookie&#39;);//这行放在view也是可以的,随便
set_cookie(&#39;views&#39;,&#39;test10&#39;,1000);
echo get_cookie(&#39;views&#39;);//此方法获取值如果获取不到,会返回空,不会报错
ログイン後にコピー

2. 読み取りおよび書き込みセッション

##<1>ネイティブ セッション

#スタートアップ:

#

<?php
session_start();
?>
ログイン後にコピー

##割り当て:

#
$_SESSION[&#39;views&#39;] = "test20";
ログイン後にコピー

値:

echo "Session:". $_SESSION[&#39;views&#39;];
ログイン後にコピー
ログイン後にコピー

期間:

## ####セッション。ブラウザを閉じると、Cookie 内の phpsession がクリアされ、次回ブラウザを開いたときに

が再生成されますが、サーバーはセッションを保存したままになります。セッションの有効期限は php.ini で設定されます。別の記事を参照してください

php (codeigniter) セキュリティに関する考慮事項

<2>CI フレームワーク セッション

スタートアップ:

$this->load->library(&#39;session&#39;);//load必须在controller完成,当要使用session必须先load赋值:
$this->session->views = "test11";
ログイン後にコピー

値:

echo "Session:". $_SESSION[&#39;views&#39;];
ログイン後にコピー
ログイン後にコピー


期間:

サーバーのセッションが削除されると、クライアントの期間は 2 時間になります。 ID はまだ有効であるため、再度開かれると、サーバーはクライアントと同じセッション ID でセッションを作成します。もちろん、ID のみが存在するため、新しい ID を作成するか古い ID を作成するかは問題ではありません。同じ名前のデータはありません

<3>違い

>2 つのセッション名は異なり、1 つは phpsession と呼ばれます。もう 1 つは ci_session と呼ばれます。

>どちらか一方のみを開始できます。両方は開始できません。>値は同じです。>Doこの 2 つを混同しないでください。その方法は、ネイティブ phpsession に気軽にアクセスでき、ci_session は httponly です。つまり、ネイティブ セッションは xxs 経由で攻撃される可能性があります。 Cookie は js を通じて取得できます

<4>例外

##次のような状況があります:

この ci_ は永続的であるため、この時点で Ci_session はすでに存在します。

//session_start();//没有启动原生的session
//$this->load->library('session');//没有启动ci的session
$_SESSION['views'] = "test23";//直接用原生的方式进行赋值
echo "Session:". $_SESSION[&#39;views&#39;];//可以正常取值出来"test23"
ログイン後にコピー

Cookie をチェックすると、それが見つかります。ネイティブ セッションが存在せず、それが ci セッションのみである場合は、サーバーのセッションでこのファイルを見つけ、値が書き込まれていないことがわかります。 session_start() が宣言されている場合、ネイティブ モードに移行し、再度phpsession を作成すると値が書き込まれます。If nothing 宣言や代入がない場合、ci_session を使用するため、エラーが報告されます。ロードしないとエラーが報告されます。したがって、ネイティブの方法で値を割り当てる場合、 ci_session が有効になっているのに、書き込み権限がないことがわかります。バグと言われています

<5>セッションの仕組み

Cookieの動作が比較的わかりやすく書かれています。ユーザーの Cookie に送信され、書き込まれたものはすべて読み出されます。当サイトのCookieであればキー値で読み出すことが可能です。

セッションの値はサーバー上に存在しますが、この値がどのユーザーに属しているかをどのようにして知ることができるのでしょうか?セッション ファイル名をユーザー Cookie に保存すると、保存された値はサーバー上の同じ名前のファイルに配置されます。 Cookieを盗むというのは、サーバー上に重要な情報が保存されているのですが、盗まれたら終わりです。したがって、Cookie に保存されているセッション キーは信頼できないため、認証を実行する必要があります。

注意: セッションを書き込むとき、ユーザーの Cookie へのセッション キーの書き込みは自動的に完了します。この期間はサーバーの .ini で構成されている必要があります。 。

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP CodeIgniter ページングと複数条件クエリを実装する方法

以上がphpとcodeigniterにおけるsession-cookieの利用方法の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート