ホームページ >バックエンド開発 >PHPチュートリアル >PHPでのセッションの詳細説明
はじめに: これは、PHP のセッションを説明する詳細ページです。PHP に関連する知識、スキル、経験、およびいくつかの PHP ソース コードを紹介します。
class='pingjiaF' Frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=324031'scroll='no'> 概要 d:Apachephpprepend.php ファイル内のプログラムを次のように変更します:
if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
$_PHPLIB["libdir"] = "d:/ Apache /php/"; //phplib 下の php ディレクトリへのパス
}
d:Apachephplocal.inc ファイルを変更します:
class DB_Example extends DB_Sql {
var $Host = "localhost"; // のホスト名mysql データベース
var $Database = "test"; //データベース名
var $User = "root"; //データベースユーザー名
var $Password = "1234567"; //データベースユーザーパスワード
}
最後にphplib ディレクトリに従って、stuff サブディレクトリ内の create_database.mysql ファイルによって初期テーブルが生成されます。
phplib を使用するすべてのページは、まず phplib の実行に必要なクラス ライブラリ ファイルを見つけることができる必要があるため、php.ini で auto_prepend 変数を設定して、phplib に prepend.php ファイルが含まれており、auto_prepend を " d として指定できます。 :/Apache/php/prepend.php" (引用符付き) と指定すると、各ページに phplib クラス ライブラリが自動的にインクルードされます。これらのファイルが見つかるように、phplib クラス ライブラリが配置されているディレクトリを include 変数に追加することもできます。
2. page_open() 関数を呼び出す
phplib を使用するすべてのページでは、まず初期化のために page_open 関数を呼び出す必要があります。例:
page_open(array("sess" => "Test_Session " ));
?>
register( "varname") ?>
; page_open(array("sess" => "Test _Session"))
$sess->register("welcome"); // 変数を登録 $ welcome, $
$welcome="Hello, PHP world!";
……
page_close();
?>
php4 にはセッションに関連する関数が多数あります (詳細については、php.ini の設定を参照してください)。通常、呼び出す必要がある関数は session_start()、session_register()、session_is_registered() の 3 つだけです。
セッションが必要な各ページの先頭で session_start() 関数を呼び出します。例:
$welcome="hello world !";
session_register("welcome");//$welcome変数を登録します、$記号がないことに注意してください
if(session_is_registered("welcome"))//$welcome変数が登録されているか確認します
echo " welcome 変数が登録されました!
sess_open($sess_path, $session_name);
この関数は初期化のためにセッションハンドラーによって呼び出されます。
パラメータ $sess_path は、php.ini ファイルの session.save_path オプションに対応します。
パラメータ $session_name は、php.ini の session.name オプションに対応します。
sess_close();
この関数は、ページの実行が終了し、セッションハンドラーを閉じる必要があるときに呼び出されます
mysql> CREATE DATABASE session;
mysql> GRANT select、insert、update、delete ON セッション。
マシンのデータベース設定に一致する変数:
* データベースのホスト名*/
$SESS_DBNAME = "sessions"; /* データベース名*/
$SESS_DBUSER = " phpsession"; /* データベースのユーザー名*/
$SESS_DBPASS = "phpsession"; /* データベースのパスワード*/
session_set_save_handler( "sess_open", "sess_close", "sess_read", "sess_destroy" , "sess_gc");
?>
dbm ファイルを使用する場合のインターフェイスをカスタマイズします:
$SESS_DBM = ""
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); ..//カスタマイズされた関数
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy" , "sess_gc");
?>
セッションカスタマイズされたテストコード:
if ($handler == "dbm") include("session_dbm.php");//使用するインターフェース
elseif ($handler == "mysql") include("session_mysql.php") ;
else ……
session_start();
……
?>
ユーザーが正当であるかどうかを確認します:
session_start();
…//検証プロセス
session_register("reguser");
>
別のページでユーザーがログインしているかどうかを確認します
}
}
ユーザーはログアウトします:
session_destroy();
?>
達成方法 複数のセッションが同時に実行されていますか?
質問: 自分のユニットの購入、販売、在庫システムを作成していたとき、複数のユーザーが同時に php アプリケーションに入力できるようにする必要があることがわかりました。当初設計された静的で一意のセッション ID は、データの混乱を引き起こしました。このようにして、一意のセッション ID を動的に生成することが最優先事項になります。
解決策は簡単です。PHP ファイル名とタイムスタンプを一意のセッション ID として使用しました。これにより、プログラム内の各セッションが適切な位置に配置され、混乱がなくなりました。
同じ問題を抱えている友人が解決策を見つけられるように、以下に私のソースコードを公開します。
//変数を保存するために PHP セッションを開始します
プログラムのメモ:
ページ間で一意のセッション名の変数を渡すには、mysessionname を使用します。この名前も使用する場合は、上記のプログラムに小さな変更を加える必要があります。 Mysessionname は、セッションの開始前にすでに存在しているため、セッションの内部変数名にすることはできません。複数のセッションが元の Cookie ファイルを確実に上書きするため、Mysessionname を Cookie モードで保存することはできません。非表示のフォームフィールドを使用して保存できます。そうすれば問題はありません。
「PHPでのセッションの詳しい説明」の関連記事をもっと見る》
J2EEが大好きで、Java Michael Jackson Video Station JSONオンラインツールをフォローしてください
http://biancheng.dnbcw.info/php/324031.html pageNo:15