ホームページ >php教程 >php手册 >PHPでのセッションの使い方をまとめます。

PHPでのセッションの使い方をまとめます。

PHPz
PHPzオリジナル
2016-06-13 12:32:361049ブラウズ

1. セッションの概要

セッションとは何ですか? 素人の辞書では会議、会議期間と訳されています。 。不適切な比喩をしてみましょう
(不適切ではありますが、意味は同じです)、セッションとは、あなたと Web サイトとの関係です。セッションは Web テクノロジーにおいて非常に重要な役割を果たします。 Webページはステートレス接続プログラムであるため、ユーザーの閲覧状況を知ることができません。

ユーザーがこの機能で Web サーバーに再度リクエストを行うときに確認できるように、セッションを通じてユーザーの関連情報を記録します。一部の Web サイトでユーザーにログインを要求しますが、セッションが存在しない場合、ログイン情報を保持できないため、どの Web でもユーザーにユーザー名とパスワードの入力を要求してみてはいかがでしょうか。ページ。

もちろん、セッションはユーザー認証機能だけに使用されるわけではなく、後述する他の側面にも使用される場合があります。セッションは中国語でセッション期間として説明されます。セッションは、ユーザーがサイトの 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 を解凍すると、「php」というディレクトリがあり、このディレクトリをコピーします。 apacheのインストールディレクトリ。著者のマシンを例に挙げます。私の Apache は d:/apache ディレクトリにインストールされています。上記の「php」ディレクトリを d:a/pache にコピーし、phplib の下の Pages ディレクトリ内のファイルとディレクトリを d の下にコピーしました。 :/apache/htdocs、ディレクトリ自体を含めないように注意してください。 phplib クラス ライブラリは、システムに応じて初期化する必要があります。このファイルには、いくつかの基本パラメータが含まれています。マシンの実際の状況に応じて変更できます。 d:/apache/php/prepend.php3 ファイル内のプログラムを次のように変更します:

if (!isset($_phplib) or !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 の例は次のとおりです。

<?php 
page_open(array("sess" => "example_session")); 
?>

配列変数 (sess) は、一部の状態保存オブジェクトを初期化するために使用されます。 注: phplib の組み込み名。 (sess) を使用する必要があります)、これらの組み込み名は local.ini で定義され、ページ コンテンツがブラウザに出力される前に page_open 関数を呼び出す必要があります。 php3 スクリプトは page_close() で終了する必要があります。これにより、関連するステータス データがデータベースに書き戻されます。忘れた場合でも、結果を考えることができるはずです。笑、すべての変数が失われています。私を責めないでください。 ...

phplib は Cookie を使用して状態情報を保存するため、ページのコンテンツがブラウザに出力される前に page_open() 関数を呼び出す必要があります。ここでのページコンテンツは、任意の HTML 情報または空白行である可能性があります。「おっと、ヘッダーが送信された後に setcookie が呼び出されました」というエラーが見つかった場合は、page_open() の前に何かがブラウザーに出力されていることを示しています。ラインを上げるのは非常に難しいためです。

[関連チュートリアルの推奨事項]

1. 入門から習熟までの PHP プログラミングに関する完全なビデオ チュートリアル
2.プログラミングの入門から熟練度まで Tong 3.
ブートストラップ チュートリアル

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。