カスタムセッションの処理読み取りおよび書き込み順序に関連する問題

WBOY
リリース: 2016-06-13 12:17:45
オリジナル
837 人が閲覧しました

読み取りおよび書き込み順序の問題に関するカスタム セッションの処理

この投稿は、hxx_yang によって 2015-04-10 13:00:11 に最終編集されました header("content-type: text /html;charset=utf-8");

define('SESSION_PRE', 'XX_');
define('BR', '
');
function start ($savePath, $sessionName) {
global $sessionPath;
$sessionPath = $savePath .
echo __METHOD__ . BR;
return true;
}

function close () {
echo __METHOD__ . BR;
return true;
}

function read ($sessionId) {
global $sessionPath, $sessionFile;
$sessionFile = $sessionPath . ESSION_PRE . $sessionId;
echo __METHOD__ . BR;
return @file_get_contents($sessionFile);

関数 write ( $ sessionId , $data) {
global $sessionFile;
$sessionPath . $sessionId;
echo BR;
return @file_put_contents ) ;
}

function destroy ($sessionId) {
global $sessionFile;
@unlink($sessionFile);
echo __METHOD__ BR;
return true;
}

function gc ($maxLifeTime) {
echo __METHOD__ . BR;
global $sessionPath;
foreach(glob($sessionPath."/*") as $file ) {
if (filemtime($file) $maxLifeTime @unlink($file);
}
}
return true;
}
session_set_save_handler("start", "close", "read", "write", "destroy", "gc");

session_start() // 101 行目
$_SESSION['name ' ] = 'Lierei'; //102 行目
print_r($_SESSION); 関数は、start、read、write、close の順に実行されます。
公式情報: PHP は、スクリプトの実行後、または session_write_close() 関数の呼び出し後に write 関数を呼び出します。

では、このスクリプトを初めて 103 行目まで実行すると、なぜ Lilei は $_SESSION
のデータをセッション ファイルから読み取ったのかを出力します。そうであれば、スクリプトは完了していませんか?まだどうやって書き込みを実行できるのでしょうか?そうでない場合、
現時点での $_SESSION は通常の配列と同等ですか? 103 行目は通常の配列を出力しているだけですか?

-----解決策----------------------

ページは終了しておらず、session_write_close() は実行されないため、読み取られるのはメモリ内のセッション値のみです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!