現在、プログラマーにとって、熟練したければ、その起源を辿らなければならないことがますます難しくなってきています。なぜなら、これは、現在氾濫しているますます高度な言語や多数のフレームワークとは逆のことだからです。彼らはそれをシンプルにするためにできるだけ起源を隠蔽しようとし、個人的にはそれをプログラマーの学習のパラドックスと呼んでいます。
注: 著者は約 2 週間 Web 開発と PHP に触れてきました。以下の内容は初心者に適しています。
读读读文文文 記事のタイトルから、
この記事のアイデアは、まずセッションとは何か、セッションの用途は何か、セッションで使用されるルーチンは何か、を理解します。そしてそれがPHPでどのように使用されるか。
始める前に、プログラマにとって必須の基本的な理論書である「HTTP Authoritative Guide」を推奨します。必要な場合は、電子版を入手してください。メッセージを残すことができます。
ほとんどの人がオンラインであり、何十億ものデータがネットワーク上で相互に送信される理由は、私たちにとって非常に馴染みのある HTTP プロトコルに基づいています。その通り?実際、HTTP プロトコルの役割は、ネットワーク アクセスを完了するための一連のメソッドを提供することです。原則として、双方がアクセスを確立すると、セッションが確立されます。例を見てみましょう。Xiao Ming がブラウザに https://www.baidu.com/ と入力します (HTTPS は SSL 暗号化層が追加された HTTP の暗号化バージョンです)。これは Xiao Ming の Baidu に対するリクエストです。「私はあなたのインターフェースを見たいのですが」というメッセージを Baidu のサーバーが受信すると、そのメッセージには Xiao Ming がやりたかったことが含まれており、Xiao Ming のアドレスも含まれていました (そうしないと、Baidu はコンテンツを誰に提供すればよいかわかりません)。サーバーはその情報をチェックしました。 OK、シャオ・ミンのリクエストを録音して、シャオ・ミンが望むものを送信します。 これでリクエストは完了です。 これは の会話です。会話の中心は Xiao Ming の情報ファイルです (実際には、TCP/IP 接続の問題も含まれますが、この記事とは関係ないので無視してください) 。
実際、セッションを構築するよりも、訪問をセッションに要約する方が良いでしょう。 b. セッションは何に使用できますか? 上記の内容から、各訪問がセッションであることがわかりますが、同時に、これにはオーバーヘッドが発生する可能性があります。 10 回または 20 回ビルドして保存するだけで、オーバーヘッドが増加します。もう 1 つは愚かです。言い換えれば、1 人 (正確には同じコンピュータとブラウザ) が一定期間内であればセッションを再利用できます。なぜ一定期間内なのでしょうか?セッションにはデフォルトの有効期限があるため、OK、同じ人による複数の訪問は 1 つのセッションであるため (サーバーが同じ人を識別できないことを疑う必要はありません。詳細については、上記で推奨されている本を読むことができます)、各訪問の内容は記録されます。つまり、サーバーはセッション サイクル内のすべての行動を把握しています 次に、サーバーはアクセス リクエストを分析することで、その特定のユーザーの行動の好みを学習することができます。ユーザーが関心を持ちたいデータをプッシュすることができます。これが広告のターゲティングの仕組みです。
もちろん、他のユーザーやパフォーマンスなどもあるかもしれません。私自身はその仕組みを特に理解していませんが、ここではそれを説明します。
3. PHP でのセッションの使用
上記の議論を通じて、セッションの概念が実際にはサーバー側で発生することがわかります。
PHP は、Session 関数を非常にうまく実装するための一連の設定、関数などを提供します。 PHP のセッション サポートは、同時アクセス中に特定のデータを保存する方法です。これにより、よりカスタマイズされたプログラムを構築し、Web サイトの訪問者に一意の ID、いわゆるセッションが割り当てられます。この ID は、ユーザー側の Cookie に保存することも、URL を介して渡すこともできます。訪問者がサイトにアクセスすると、リクエスト内のデータを
$_SESSION独立したユーザーごとに固有のセッションIDを割り当てることで、ユーザーごとにデータを分けて保存する機能を実現できます。 セッションは、複数のページ要求間で情報を保存および共有するためによく使用されます。 一般に、セッション ID は Cookie を通じてブラウザに送信され、セッション データもセッション ID を通じてサーバー側で取得されます。 リクエストにセッション ID 情報が含まれていない場合、PHP は新しいセッションを作成し、新しく作成されたセッションに新しい ID を割り当てます。
セッションのワークフローは非常にシンプルです。セッションを開始するとき、PHP はリクエストからセッション ID を見つけようとします (通常はセッション Cookie を通じて)。リクエストにセッション ID 情報が含まれていない場合、PHP は新しいセッションを作成します。セッションが開始されると、PHP はセッション内のデータを $_SESSION 変数に設定します。 PHP が停止すると、$_SESSION の内容が自動的に読み取られてシリアル化され、保存のためにセッション保存マネージャーに送信されます。デフォルトでは、PHP は組み込みのファイル セッション保存マネージャー (files
)来完成Session的保存。 也可以通过配置项session.save_handler(php.ini中配置项目)来修改所要采用的Session保存管理器。 对于文件Session保存管理器,Session会话数据保存到配置项session.save_path (php.ini中配置项目)所指定的位置。可以通过调用函数session_start来手动开始一个会话。 如果配置项session.auto_start 设置为1
) を使用し、PHP スクリプトの実行後にセッションが自動的に開始され、同時に手動でセッションを閉じることもできます。 session_wirte_close() 関数を呼び出します
この部分については、前の質問を説明しないと、php.ini の設定が何であるかわからないため、ここで説明します。 session.save_handler と session.save_path、これら 2 つは php.ini の設定項目です。この記事のデフォルトのモードは
session_start() はセッションメカニズムの始まりであり、セッションは現在 $_COOKIE[session_name()] が存在するかどうかを判断し、存在しない場合は session_id を保存する COOKIE キーの値を返します。 session_id が生成され、生成された session_id が COOKIE の値としてクライアントに渡されます。これは、逆に、session_id =$_COOKIE[session_name]; の場合は、指定されたフォルダーに移動することと同じです。 session.save_path によって名前「SESS_」.session_id() ファイルを見つけます。ファイルの内容を読み取り、デシリアライズして、セッションが終了すると、セッション書き込み操作が実行されるか、session_write_close が実行されます。 () の操作は手動で行われます
セッションの破棄はコード内で行うのが一般的で、 1. setcookie(session_name(),session_id(),time() -8000000,. .); // ログアウトする前に実行します
2. usset($_SESSION); // これにより、更新後に COOKIE が渡されますが、データは削除されません。 $_SESSION を実行し、セッションファイルと session_id を削除してください、最後にインターネット上のコードを引用します