1. セッションの概要
セッションとは何ですか? 素人の辞書では会議、会議期間と訳されています。不適切な比喩をしてみましょう
(不適切ではありますが、意味は同じです)、セッションとはあなたとWebサイトとの関係です。セッションは Web テクノロジーにおいて非常に重要な役割を果たします。 Webページはステートレス接続プログラムであるため、ユーザーの閲覧状況を知ることができません。したがって、ユーザーがこの機能で Web サーバーに再度リクエストを送信するときに確認できるように、セッションを通じてユーザーの関連情報を記録する必要があります。たとえば、一部の Web サイトではユーザーにログインを要求することがよくありますが、その方法は次のとおりです。ユーザーがログインしていることはわかりますか? セッションが存在しない場合、ログイン情報は保持されないため、すべての Web ページでユーザーにユーザー名とパスワードの入力を要求してはどうでしょうか。
もちろん、セッションはユーザー ID 認証に使用されるだけでなく、後で説明する他の側面にも使用される場合があります。セッションは中国語でセッション期間として説明されます。セッションは、ユーザーがサイトの URL を入力すると開始され、サイトを離れると終了します。セッションは、ダイナミック スクリプト言語のアクティブ サーバー ページで初めて登場しました。その機能は非常に強力なので、一言で説明することはできません。
PHP がまだバージョン 3.0 だったとき、セッションは永遠の苦痛でした。 PHP には、実行速度が速く、柔軟に使用でき、強力な機能があるという利点がありますが、多くの Web サイト開発者がセッションの問題を理由に PHP を放棄しました。少なくとも私の上司はそう考えています。当時、PHP3 でセッションを実装するためのソリューションを提供する PHP の無料関数ライブラリは数多くありましたが、どれも本物ではないと感じられました。何千円も出して買った携帯電話に、粗末な俵がついてくるようなものだが、機能は同じなのに、いつも違和感がある。 php4 の登場により、PHP はセッションの問題にカムバックするチャンスを与えられました。セッションの実装は (主に効率の問題により) 理想的ではありませんが、最終的には単独で実装され、実際に使用できます。 それで、セッションを何に使うのですか? 私がそれを使わなかったら、あなたは紙を売っていると疑われませんか?さて、セッションが何に使用されるかを見てみましょう。Web サイトで作業したことがある人なら誰でも、あるページの変数 (この章ではすべてサーバー側の変数を指します。以下同様) は次のページでは使用できません。これを実現するにはフォームや URL 文字列などのいくつかの方法がありますが、フォームが自動的に送信されたとしても、遅延はユーザーにとっては不便であり、どちらの方法も非常に困難です。プログラマーの負担が増える。大規模なプロジェクトを開発している場合、これらの追加の負担は無視できません。セッションを使用すると、セッションに登録した変数をグローバル変数として扱うことができます。すごいですね、グローバル変数?このようにして、その用途がわかります。最も重要なものは、ユーザー ID 認証、プログラム ステータスの記録、ページ間のパラメータ転送に使用されます。
その利点について長々と話してきたので、あなたはすでに誘惑に駆られていますが、まだ満足しないでください。欠点もあります。変数はファイルに保存されます (もちろん効率的ではありません。他の方法も使用できますが、しかし非常に面倒です)、オブジェクトを保存できません。対照的に、ASP のセッションはオブジェクト変数を保存し、メモリ変数を使用してセッション変数を保存できます。それでもなぜ PHP を選ぶのでしょうか? はは、この章を最初から読んでいただければ理解できると思いますが、まだ理解できない場合は、最初からやり直してください。あなたも php のエキスパートになれます^_^。
セッションはどのように実装されますか?はは、とても奥深いと思いますが、その秘密をお話しましょう。変数を保存するだけなら、これは非常に簡単であることは多くの読者に理解されると思いますが、前に述べたように、http プロトコルはステートレス接続であり、変数が誰に属しているのかをどのようにして知るのでしょうか? Cookie を使用して実現されます。セッション実装中。 Cookie はクライアント、つまりユーザーのマシン上に存在し、ユーザーのブラウザがサーバーに要求すると、セッション ID もサーバーに送信されます。自分が誰なのかを特定し、変数も特定できる。このようにして、セッションが時々失敗する理由を理解するのは難しくありません。信じられない場合は、次のことを試してください。 IE の「ツール」メニューに「インターネット オプション」メニューがあり、それを開いて、「セキュリティ」->「レベルのカスタマイズ」を選択し、「使用を許可」を変更します。セキュリティ設定の「各会話」で「Cookie」を無効に設定し、セッションが使用できるかどうかを確認してください。これで理解できました。ただし、php4 は Linux/Unix プラットフォームで Cookie のステータスを自動的にチェックし、Cookie が利用できない場合には、セッション ID が URL に自動的に付加されて渡されます。これがセッションの点で ASP よりも優れている唯一の点です。
2. php3 と 4 でのセッションの実装
php3 にはセッションのようなものはありませんが、それが必要です。心配しないでください。これを行ってくれる人はたくさんいます。最も有名なのは phplib です。海外でもダウンロードできますし、国内のほとんどのPHPサイトからダウンロードできます。最初にやらなければならないことは、phplib と php3 を一緒に動作させることです。この機能を実現するには、まず phplib をインストールする必要があります。フォローしてください、とても簡単です (次のメソッドは win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 に渡されます) phplib の最も基本的な機能には、ユーザー認証、セッション管理、権限、データベースの抽象化が含まれます。
phplibを使用してセッション機能を実装するには? 1. まず、phplibを解凍します。このディレクトリをApacheのインストールディレクトリにコピーします。著者のマシンを例に挙げます。私の Apache は d:/apache ディレクトリにインストールされています。上記の「php」ディレクトリを d:a/pache にコピーし、phplib の下の Pages ディレクトリ内のファイルとディレクトリを d の下にコピーしました。 :/apache/htdocs、ディレクトリ自体を含めないように注意してください。 phplib クラス ライブラリは、システムに応じて初期化する必要があります。このファイルには、いくつかの基本パラメータが含まれています。マシンの実際の状況に応じて変更できます。 d:/apache/php/prepend.php3 ファイル内のプログラムを次のように変更します:
if (!isset($_phplib) または !is_array($_phplib)) {
$_phplib["libdir"] = "d :/apache/php/"; //ここを、phplib 配下の php ディレクトリを置いたパスに変更します
}
次に、d:/apache/php/local.inc ファイルを次のように変更します:
class db_example extends db_sql {
var $host = "localhost";//mysqlデータベースのホスト名
var $database = "test";//データベース名
var $user = "root";//データベースのユーザー名
var $password = " ";/ /データベース ユーザー パスワード
}
最後のステップは、解凍された phplib ディレクトリのスタッフ ディレクトリにある create_database.mysql ファイルを実行して、初期テーブルを生成することです。 phplib がどのように機能するかを説明しましょう。phplib を使用するすべてのページは、まず phplib を実行するために必要なクラス ライブラリ ファイルを見つける必要があります。これを指定すると、phplib 配布パッケージに prepend.php3 ファイルが含まれます。 auto_prepend の「d:/apache/php/prepend.php3」 (引用符付き) を使用すると、各ページに phplib クラス ライブラリが自動的にインクルードされます。phplib クラス ライブラリが配置されているディレクトリを include 変数に追加することもできます。もちろん、最も簡単な方法は phplib の絶対パスを指定することです。これは移植性が低すぎるため、良い考えではありません。
2 番目のステップでは、phplib を使用するすべてのページで、最初に初期化のために page_open 関数を呼び出す必要があります。これにより、現在または将来的に状態を保存する必要があることが phplib に伝えられます。典型的な
page_open の例は次のとおりです:
page_open(array("sess" => "example_session"));
配列変数 (sess) は、いくつかの状態保存オブジェクトを初期化するために使用されます。注: phplib 組み込み名 (sess) を使用する必要があります。これらの組み込み名は、ページのコンテンツがブラウザーに出力される前に、local.ini で定義されている必要があります。 php3 スクリプトは page_close() で終了する必要があります。これにより、関連するステータス データがデータベースに書き戻されます。忘れた場合でも、結果を考えることができるはずです。笑、すべての変数が失われています。私を責めないでください。 ...
phplib は状態情報を保存するために Cookie を使用するため、ページ コンテンツがブラウザーに出力される前に、page_open() 関数を呼び出す必要があります。 「おっと - ヘッダーが送信された後に setcookie が呼び出されました」というエラーを見つけます。これは、page_open() の前にブラウザに出力された内容を示します。一般的なエラーは < の間にあるため、空白行に特に注意する必要があります。 ;? と ? > タグの間に空白行が出力される これも非常にエラーが発生しやすい箇所です。エラーの可能性を減らすために、次のように初期化プログラムを作成できます:
page_open(array("sess" => "example_session")); ....

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

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

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

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

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(

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









