ホームページ バックエンド開発 PHPチュートリアル PHP セッション制御_PHP チュートリアル

PHP セッション制御_PHP チュートリアル

Jul 13, 2016 am 10:34 AM
aspnet ソフトウェアプログラミング

セッション制御の概念は、セッションに基づいて Web サイト内のユーザーを追跡する機能です。 クッキー1個 1.1 クッキーとは

Set-Cookie: NAME = VALUE; [有効期限 = DATE;] [パス = PATH;] [ドメイン = DOMAIN_NAME;] [安全]
: 有効期限が設定されていない場合、Cookie は手動で削除されない限り永久に有効になります)。パスとドメインのフィールドは一緒に、Cookie に関連付けられた URL を指定します。 secure キーワードは、Cookie が通常の HTTP リンクで送信されないことを意味します。 1.2 PHP経由でCookieを設定する PHP で Cookie を手動で設定するには、setcookie() 関数を使用します。関数のプロトタイプは次のとおりです:
bool setcookie(文字列名 [, 文字列値 [, int期限切れ [, 文字列パス [, 文字列ドメイン [, int secure]]]]])
: Cookie ヘッダーは である必要があります。そうでない場合は無効になります (これは Cookie の制限であり、PHP の制限ではありません)。 1.3 セッションでの Cookie の使用 1.4 セッションIDを保存する 2 簡単な会話を実装します 2.1 セッションを開始する 2.2 セッション変数を登録する 2.3 セッション変数の使用 2.4 変数の登録を解除し、セッションを破棄する を使用できます。 ID をクリアする必要があります。 3簡単な会話(例) auto-main.php
<スパン session_start(); <スパン <スパンif<スパン(<スパンisset <スパン($_POST[<スパン'userid'<スパン]) & & <スパン isset<スパン($_POST[<スパン'パスワード'<スパン])){ <スパン $userid = $_POST[ <スパン 'userid'<スパン ]; <スパン $password = $_POST[ <スパン 'パスワード'<スパン ]; <スパン $db_conn = new mysqli('localhost' , <スパン 'root' <スパン , <スパン '' <スパン , <スパン 'テスト' <スパン ); <スパン <スパン <スパン if<スパン (mysqli_connect_error()){ echo 「データベースへの接続に失敗しました:」 。 mysqli_connect_errno(); <スパン <スパン 終了<スパン (); <スパン } <スパン $query = "select * from allowed_users" . " where name = '$userid'" <スパン . <スパン " およびパスワード = '<スパン $password<スパン '" <スパン ; <スパン $result = $db_conn ->クエリ($クエリ); if($result -> num_rows > 0){ $_SESSION[ 'valid_user'] = $userid; } $db_conn ->閉じる(); } ?> <html> <ボディ > <h1 >ホームページ h1 & gt; if( isset($_SESSION[ 'valid_user' ])){ echo 'あなたは次のようにログインしています: ' 。 $_SESSION['valid_user'] . '
'
; href = "logout.php"&gt; logut&lt; /a&gt;&lt; br /&gt; '; } else { if( isset($userid)){ //失败 echo 「ログインできませんでした。
; } else { echo 'ログインしていません。
'
; } }                                       echo '
ユーザーID:
パスワード:
'
;
?>
<
br
/>
<
a
href
=
"会員限定.php"
>
メンバーセクション
a
>
ボディ > html>   3.2 members_only.php
session_start(); echo

メンバー限定

; if(isset ($_SESSION['valid_user' ])){ echo "

あなたは「 」としてログインしています。 $_SESSION['valid_user' ] . "

"
; echo "

メンバー限定のコンテンツはここにあります

"
; } else { echo "

ログインしていません。

"
; } echo "メインページに戻る

"
; ?>
  3.3 logout.php
session_start(); $old_user = $_SESSION['有効なユーザー']; 設定解除($old_user); session_destroy(); ?> <html> <ボディ > <h1 >ログアウト h1 & gt; if(! ($old_user)){ echo 'ログアウトしました。
'
; } else { echo 'ログインしていないため、ログアウトされていません。
'
; } ?> <
a
href ="auto-main.php"> メインページに戻る a> ボディ > html>
4セッション 4.1 セッションデータに影響を与えるPHP関数またはイベント

session_start() ライフサイクルの始まりであるセッションを初期化します。

セッション初期化操作では、メモリに保存されているセッション データをマップするグローバル配列 $_SESSION を宣言します。セッション ファイルが既に存在し、セッション データが保存されている場合、session_start() はセッション データを読み取り、$_SESSION にデータを入力し、新しいセッション ライフ サイクルを開始します。
(2) $_セッション セッションのライフサイクル中に、グローバル変数名を使用して、グローバル変数を現在のセッションに登録します。いわゆる登録とは、$_SESSION に変数を記入することであり、その値は NULL です。セッション ファイルに対して IO 操作は実行されず、$_SESSION 変数にのみ影響します。正しい書き方は session_register($varname) ではなく session_register(‘varname’) であることに注意してください (4) session_unregister()
これは session_register 操作のまったく逆です。つまり、セッションのライフサイクル中に、指定された変数が現在のセッションから登録解除されます。また、$_SESSION にのみ影響し、IO 操作は実行されません。 (5) session_unset() セッションのライフサイクル中に、現在のセッションからすべてのセッション データをログアウトし、$_SESSION を空の配列にします。 unset($_SESSION) との違いは、unset は $_SESSION 変数を直接削除し、メモリ リソースを解放することです。もう 1 つの違いは、session_unset() はセッション ライフ サイクル中にのみ $_SESSION 配列を操作できるのに対し、unset() はセッション ライフ サイクル中にのみ操作できることです。ページ (ページ) ライフサイクル全体で $_SESSION 配列を操作できます。 session_unset() も IO 操作を実行せず、$_SESSION 配列にのみ影響します。 (6) session_destroy() session_start() がセッションを初期化すると、セッションがログアウトされます。これは、セッションのライフサイクルが終了したことを意味します。セッションのライフサイクルが完了すると、session_register、session_unset、session_register は $_SESSION 配列を操作できなくなりますが、$_SESSION 配列は unset() などの関数によって引き続き操作できます。この時点では、セッション平均は未定義であり、$_SESSION はまだグローバル変数であり、マッピング関係の外にあります。 session_destroy() を通じてセッションをログアウトすると、セッションのライフサイクルが終了するだけでなく、セッション ファイルも削除されますが、現在の $_SESSION 変数には影響しません。つまり、IO 操作が生成されます。 (7) session_regenerate_id() これを呼び出すと、現在のユーザーに新しいセッション ID が再割り当てされます。現在のページのライフサイクルが終了すると、現在のセッション データがセッション ファイルに書き込まれます。前提条件は、この関数を呼び出す前に現在のセッションのライフサイクルが終了していないことです (ポイント 9 を参照)。この関数を呼び出してすぐに新しいセッション ファイルを作成するのではなく、IO 操作が生成され、新しいセッション ファイルが作成されます。 (8) session_commit() session_commit() 関数は session_write_close() 関数のエイリアスです。現在のセッションのライフサイクルが終了し、セッション データがセッション ファイルに直ちに書き込まれます。 session_commit() を使用してセッション データを手動で書き込むことはお勧めできません。PHP は、ページのライフ サイクルが終了すると、現在の未終了のセッション ライフ サイクルを自動的に終了するためです。 IO書き込み操作が生成されます (9) セッション終了 セッションを終了します。デフォルトでは、ページのライフサイクルが終了する前に、PHP は現在の終了していないセッションを自動的に終了します。ただし、session_commit() 関数と session_destroy() 関数を使用してセッションを早期に終了することもできます。どの方法を使用しても、セッションを終了すると、異なる IO 操作が生成されます。デフォルトでは、IO 書き込み操作が生成され、現在のセッション データがセッション ファイルに書き戻されます。 session_commit() は、関数が呼び出された瞬間に IO 書き込み操作を生成し、セッション データをセッション ファイルに書き込みます。 session_destroy() との違いは、データをセッション ファイルに書き戻すのではなく、現在のセッション ファイルを直接削除することです。興味深いことに、session_commit() も session_destroy() も、$_SESSION 配列を削除することはもちろん、$_SESSION 配列をクリアしません。ただし、現在のセッションのライフサイクルが終了したため、すべての session_* 関数はセッション データを操作できなくなります。未定義のオブジェクトは操作できません。 4.2概要 1. ユーザーが Web アプリケーション システムからログアウトする場合、最適な呼び出しメソッドは session_unset(); unset($_SESSION); です。 2. $_SESSION にキーと値を入力してみます。 session_register() の使用はお勧めしません。同様に、session_unregister() の代わりに unset($_SESSION[‘var’]) を使用してみてください。 3. 多数のセッションを生成する可能性のある WEB アプリケーションの場合、session.save_path の推奨形式は session.save_path="N:/path" です。注: これらのディレクトリは手動で作成し、httpd デーモンが所有する書き込み権限を持つ必要があります。パフォーマンスを向上させるためにこれを実行してください 4、 session_regenerate_id() が呼び出され、新しいセッション ID がユーザーに割り当てられる場合。この機能は古いセッション ファイルを積極的に削除しません。古いセッション ファイルは定期的にクリーンアップする必要があるため、より最適化されます。 5. session_commit() を使用してセッションデータを送信しないようにしてください。デフォルトでは、PHP はページのライフサイクル中にセッションデータをセッションファイルに送信します。 結局のところ、セッションはユーザーのステータス情報を管理するためにのみ存在します。セッション ID の意味について説明しました。訪問している各ユーザーには、他のユーザーのセッション データを区別するために使用される一意のセッション ID が割り当てられます。つまり、セッション ID は入場券と同じようにユーザーを識別するものです。ユーザーにセッション ID が割り当てられると、各アクセス (http リクエスト) でこのセッション ID がサーバーに送信され、ユーザーのセッション データがロードされます。では、それをサーバーに渡すにはどうすればよいでしょうか?これがこのセクションで説明する内容です。 クライアントとサーバー間の Web 通信プロトコルは http です。 PHP が http 経由でユーザー データを取得するために一般的に使用される 3 つのメソッドは、POST メソッド、GET メソッド、および Cookie です。 PHP のデフォルトの配信方法は Cookie であり、これも最適な方法です。クライアントが Cookie をサポートしていない場合 (ブラウザが Cookie 機能を無効にしている場合) に限り、session_id は GET メソッドを通じて渡されます。つまり、URL の query_string 部分でセッション ID が渡されます。 転送方法を決定した後も、セッション ID の転送プロセスを理解する必要があります。ユーザーはブラウザを通じて Web ページにアクセスし、アドレス バーに URL を入力して Enter キーを押します。ブラウザはソケット送信を呼び出す前に、http リクエストの Cookie フィールドにカプセル化された有効な Cookie レコードを検索します。ヘッダーを付けて一緒に送信します。サーバーがリクエストを受信すると、リクエストは処理のために PHP に渡されます。このとき、セッション初期化関数は、$_COOKIE のキー値として session_name() で格納された値 (値はセッション ID) を見つけられなかった場合、ユーザーが初めて Web にアクセスしたものとみなします。初めてアクセスするユーザーとして、セッション初期化関数は常にランダムに session_id を生成し、setcookie() 関数呼び出しを通じて、新しく生成された session_id を http 応答ヘッダーの Set-Cookie フィールドに「sesseson_name = session_id」の形式で埋めます。そしてそれをクライアントに送信します (これにより、後続のリクエストで HTTP リクエスト ヘッダーの Cookie フィールドによって Cookie レコードが Web サーバーに送信されます)。初期化関数がユーザー側 Cookie に $_COOKIE['sess_name'] が定義されていることを検出すると、$_COOKIE['sess_name'] に対応するセッション ファイルをロードします ($_COOKIE['sess_name'] はセッション ID) )。ユーザーの Cookie レコードの有効期限が切れると、ブラウザによって削除されます。その後の次のリクエストに対して、サーバーはそれがユーザーの再度の最初の訪問であるとみなします。 4.4 セッションのリサイクル 4.5 概要 1、PHP は Cookie メソッドを使用してセッション ID を渡します。 GET メソッドを使用してセッション ID を渡すのは非常に危険であるため、使用しないでください。 2. setcookie() メソッドを使用して、クライアントのセッション ID の Cookie レコードを削除できます。 3. PHP GC プロセスはセッションの初期化によって開始されます。ただし、すべてのユーザー要求が開始されるわけではありません。デフォルトでは、その開始確率は 1/1000 です。アクセス頻度が高すぎる Web サイトや同時実行数が多い Web サイトでは、PHP GC の起動頻度が低下する可能性があります。 PHP GC リサイクル セッションは、PHP の実行効率を低下させます。 参考:

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/747728.html技術記事セッション制御の考え方は、セッションに基づいて Web サイト内のユーザーを追跡できるようにすることです。 1 Cookie 1.1 Cookie とは Set-Cookie: NAME = VALUE; [expires = DATE;] [path = PATH;] [domain = DOM...
]
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Vue.js と ASP.NET の組み合わせは、Web アプリケーションのパフォーマンスの最適化と拡張のためのヒントと提案を提供します。 Vue.js と ASP.NET の組み合わせは、Web アプリケーションのパフォーマンスの最適化と拡張のためのヒントと提案を提供します。 Jul 29, 2023 pm 05:19 PM

Vue.js と ASP.NET の組み合わせは、Web アプリケーションのパフォーマンスの最適化と拡張のためのヒントと提案を提供します。Web アプリケーションの急速な開発に伴い、パフォーマンスの最適化は開発者にとって不可欠かつ重要なタスクになっています。人気のフロントエンド フレームワークとして、Vue.js を ASP.NET と組み合わせることで、より優れたパフォーマンスの最適化と拡張を実現できます。この記事では、いくつかのヒントと提案を紹介し、いくつかのコード例を示します。 1. HTTP リクエストの削減 HTTP リクエストの数は、Web アプリケーションの読み込み速度に直接影響します。合格

生成 AI がソフトウェア開発を変える 10 の方法 生成 AI がソフトウェア開発を変える 10 の方法 Mar 11, 2024 pm 12:10 PM

翻訳者 | Chen Jun によるレビュー | Chonglou 1990 年代、ソフトウェア プログラミングというと、通常、エディタを選択し、コードを CVS または SVN コード ベースにチェックインし、コードを実行可能ファイルにコンパイルすることを意味していました。 Eclipse や Visual Studio などの対応する統合開発環境 (IDE) は、プログラミング、開発、ドキュメント化、構築、テスト、展開、その他のステップを完全なソフトウェア開発ライフ サイクル (SDLC) に統合できるため、開発者の作業効率が向上します。近年、人気のクラウド コンピューティングと DevSecOps 自動化ツールにより、開発者の包括的な能力が向上し、より多くの企業がソフトウェア アプリケーションを開発、展開、保守することが容易になりました。今日、生成 AI は次世代の開発です

ASP.NET プログラムにおける MySQL 接続プールの使用法と最適化手法 ASP.NET プログラムにおける MySQL 接続プールの使用法と最適化手法 Jun 30, 2023 pm 11:54 PM

ASP.NET プログラムで MySQL 接続プールを正しく使用し、最適化するにはどうすればよいですか?はじめに: MySQL は、高いパフォーマンス、信頼性、使いやすさを特徴とする、広く使用されているデータベース管理システムです。 ASP.NET 開発では、データ ストレージに MySQL データベースを使用することが一般的な要件です。データベース接続の効率とパフォーマンスを向上させるには、MySQL 接続プールを正しく使用し、最適化する必要があります。この記事では、ASP.NET プログラムで MySQL 接続プールを正しく使用し、最適化する方法を紹介します。

ASP.NETプログラムでMySQLに再接続するにはどうすればよいですか? ASP.NETプログラムでMySQLに再接続するにはどうすればよいですか? Jun 29, 2023 pm 02:21 PM

ASP.NETプログラムでMySQLに再接続するにはどうすればよいですか? ASP.NET 開発では、MySQL データベースを使用するのが非常に一般的です。ただし、ネットワークまたはデータベース サーバーの理由により、データベース接続が中断されたりタイムアウトになったりする場合があります。この場合、プログラムの安定性と信頼性を確保するために、接続が切断された後に接続を再確立する必要があります。この記事では、ASP.NET プログラムで MySQL 接続を再接続する方法を紹介します。必要な名前空間を最初に参照するには、コード ファイルの先頭でそれらを参照します。

Vue.js と ASP.NET の組み合わせにより、エンタープライズ レベルのアプリケーションの開発と展開が可能になります。 Vue.js と ASP.NET の組み合わせにより、エンタープライズ レベルのアプリケーションの開発と展開が可能になります。 Jul 29, 2023 pm 02:37 PM

Vue.js と ASP.NET の組み合わせにより、エンタープライズ レベルのアプリケーションの開発と展開が可能になります。今日の急速に発展するインターネット テクノロジ分野では、エンタープライズ レベルのアプリケーションの開発と展開がますます重要になっています。 Vue.js と ASP.NET は、フロントエンドとバックエンドの開発で広く使用されている 2 つのテクノロジであり、これらを組み合わせることで、エンタープライズ レベルのアプリケーションの開発と展開に多くの利点をもたらします。この記事では、コード例を通じて、Vue.js と ASP.NET を使用してエンタープライズ レベルのアプリケーションを開発およびデプロイする方法を紹介します。まず、インストールする必要があります

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は? ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は? Jun 29, 2023 pm 12:56 PM

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は?インターネットの発展とデータ量の増加に伴い、データベースへのアクセスと接続の需要も増加しています。データベースのパフォーマンスと安定性を向上させるために、接続プーリングは不可欠なテクノロジーになっています。この記事では、データベースの効率と応答速度を向上させるために、ASP.NET プログラムで MySQL 接続プールを正しく構成および使用する方法を主に紹介します。 1. コネクションプーリングの概念と機能 コネクションプーリングはデータベースコネクションを再利用する技術であり、プログラムの冒頭で使用されます。

ASP.NET での MySQL 接続プールのトランザクション パフォーマンスの使用と最適化 ASP.NET での MySQL 接続プールのトランザクション パフォーマンスの使用と最適化 Jun 30, 2023 pm 12:12 PM

ASP.NET プログラムで MySQL 接続プールのトランザクション パフォーマンスを正しく使用し、最適化するにはどうすればよいですか? ASP.NET プログラムでは、データベース トランザクションは非常に重要な部分です。トランザクションにより、データベースの一貫性と整合性が確保されると同時に、パフォーマンスも向上します。 MySQL データベースを使用する場合、接続リソースを管理し、パフォーマンスを最適化するために接続プールを使用することが不可欠です。まず、MySQL 接続プールの概念を簡単に理解しましょう。接続プールは、接続グループのバッファ プールです。

aspnet の組み込みオブジェクトとは何ですか? aspnet の組み込みオブジェクトとは何ですか? Nov 21, 2023 pm 02:59 PM

ASP.NET の組み込みオブジェクトには、「リクエスト」、「レスポンス」、「セッション」、「サーバー」、「アプリケーション」、 「HttpContext」、「Cache」、「Trace」、「Cookie」、および「Server.MapPath」: 1. リクエスト、クライアントによって発行された HTTP リクエストを示します; 2. レスポンス: Web サーバーによって返された HTTP 応答を示します。クライアントなど

See all articles