PHPとcodeigniterでのsession-cookieの使い方を詳しく解説

墨辰丷
リリース: 2023-03-27 18:34:01
オリジナル
1525 人が閲覧しました

この記事では、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 がクリアされ、次回開いたときに新しい 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;];
ログイン後にコピー
ログイン後にコピー

持続時間:

クライアントのセッションIDがまだ有効であるため、サーバーのセッションが削除されるとき、クライアントの持続時間は2時間です。再度開くと、サーバーはクライアントと同じセッション ID でセッションを作成します。もちろん、それが新しい ID であるか古い ID であるかは関係ありません。これは同じ名前の ID であるだけであり、存在するものはありません。その中のデータ

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

> > 値は同じです

> 両方を混合しないでください。ネイティブ メソッドは完全に放棄する必要があります

> ネイティブ phpsession は httponly です。ネイティブ セッションは xxs を通じて攻撃される可能性があり、Cookie は js を通じて取得できます

<4>例外

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

この時点で ci_session がすでに存在する場合、この ci_ は永続的であるため

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

Cookie を表示すると、ネイティブ セッションが存在せず、CI セッションのみであることがわかり、サーバーのセッションでこのファイルを見つけ、この値が書き込まれていないことがわかります。 session_start() が宣言されている場合は、ネイティブ モードに移行して新しい phpsession を作成し、値が書き込まれます

何も宣言または代入されず、値が直接取得されると、エラーが発生します。 ci_session を使用するには、load をロードする必要があるため、load しないとエラーが報告されるため、ネイティブを使用していることがわかります。途中で値を代入する場合、セッションを開始して有効にするのと同じです。 ci_session ですが、書き込み権限がありません。これはバグと言えます

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

Cookie の操作の比較がわかりやすく書かれています。 cookie に書き込まれ、書き込まれたものが読み取られます。当サイトのCookieであればキー値で読み出すことが可能です。 セッションの値はサーバーに保存されますが、この値がどのユーザーに属しているかをどうやって知ることができるのでしょうか?セッション ファイル名をユーザー Cookie に保存すると、保存された値はサーバー上の同じ名前のファイルに配置されます。 Cookieを盗むというのは、サーバー上に重要な情報が保存されているのですが、これが盗まれたら終わりです。したがって、Cookie に保存されているセッション キーは信頼できないため、認証を実行する必要があります。

がセッションに書き込むとき、ユーザーの Cookie へのセッションキーの書き込みは、サーバーの php.ini で自動的に行われることに注意してください。 以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。

関連する推奨事項:


PHP

+MySQL の高同時実行ロックのトランザクション処理問題の解決策


PHP

file_get_contents を使用して http リクエスト関数を送信するのは簡単です

PHPによって実装されたMonkey Kingアルゴリズム(猿が王を選ぶ)

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

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