私はセッショントラッキングの形式をしようとしています。fwriteの前に実行されるコードが終了しました(PHP)
checkLogin.phpでは、ログインプロセスが正常に終了すると、小さなPHP配列がユーザー名とともにtxtファイルに書き込まれ、ユーザー名もセッション変数として保存されます。これは後でユーザが非アクティブであるかどうかを追跡するために使用されます。 Pythonスクリプトを使用して、ユーザーがアクティブでない場合、ユーザーの名前がアレイから削除されます。
他のWebページでは、Webアプリケーションにはtxtファイルが含まれ、セッション変数のユーザー名が配列内に残っているかどうかがチェックされ、そうでない場合はセッションが破棄され、 agn(ユーザーは非アクティブです)。
しかし、最初のログイン時に、アプリケーションがセッションユーザ名の配列をチェックすると、最初の1-2秒間は常に見つからず、その後に見つかるように変更されます。私はそれがアプリケーションが次のページに行くようにファイルがまだ書いているのでだと思う。次のページに行く前にアプリケーションが完了するのを待つようにする方法はありますか?
ログイン後、テキストファイル(USER.TXT)がこの
<?php activeUser= array("User1"); ?>
"ユーザー1" のようになります。すべてので$ _SESSION [ 'CURRENT_USER']
として格納されています私がこれを持っているコードの先頭にある他のページ
include 'user.txt';
if(in_array($_SESSION['current_user'], $activeUser)) {
echo "Found";
//User still active;
}
else {
echo "Not Found";
//session_destroy();
//header("Location:index.php?status=userInactive");
}
ログインしてホームページにアクセスした直後コードの2番目のチャンクでは、 "Not Found"と表示されますが、リフレッシュ後に "Found"に変わります。
トライは、配列とユーザーセッションvariable.Then彼らが異なっているし、さらにデバッグを行うかどうかを確認を印刷する –
、テキストファイルには、アクティブなユーザーの配列から成り理論的には、ログイン後、ログインしているユーザー(セッション変数)がテキストファイルの配列に含まれているかどうかを確認し、Foundを返す必要がありますが、fwriteが完了する前にページが速くリダイレクトされると思います。私はリダイレクトする前にfwrite仕上げをする方法を模索しています。 – KelvinGamer
修正が見つかりましたが、効率的ではないと思います。 checkLogin.phpページのリダイレクトの前にsleep(3)を置いた。 fwriteのように完了するのに約2〜3秒かかります。どんな改善もまだ大いに評価されるでしょう! :) – KelvinGamer