私は、ajaxとPHPを組み合わせて、ページ内で読み込み/検証/送信する動的フォームを作成するサイトを構築しています。これを実現するために、PHPセッション変数とカスタムハンドラー、$。post、および$()。loadを組み合わせて使用しています。フォームを個々のphpページ(非常に大きい)で作成してから、メインページのセクションにロードします。
メインページの上部で、次のようなセッションを開始します。
<?php
require("inc/SecureSession.php"); // Custom handlers
session_save_path($_SERVER['TEMP']); session_start();
?>
次に、各フォームページでセッションを開始し、次のようにトークン変数を生成します。
<?php
require("inc/SecureSession.php"); // Custom handlers
session_save_path($_SERVER['TEMP']); session_start();
$_SESSION['token'] = rand();
?>
このトークン変数は、フォームページの下部に非表示フィールドとして挿入され、セッションに書き込む必要があります。
ただし、動的にロードされた(または投稿された)ページで設定されたセッション変数は、一貫して設定されたままではないようです。これらはフォームページの範囲内で機能しますが、必ずしもメインページに引き継がれるとは限りません。これは、実際には正しいセッションにアクセスしていなかったためかもしれないと思いましたが、フォームページ外のすべてのセッション変数にフォームページ内でアクセスできるようです。
だから私は困惑しています。私が使用しているPHPハンドラーは次のハンドラーです:http ://www.zimuel.it/en/encrypt-php-session-data/
編集:フォームページの1つを直接ロードすると、100%の時間書き込みが行われます。jQueryを介してフォームをロードした場合にのみ、フォームが不安定になります。
Edit2:問題は、コードを間違った順序で宣言していたことではありませんでした。調査を行ったところ、セッションを開始する前に、保存パスとハンドラー関数を宣言することになっていることがわかりました。問題は、「phpを開いた」のいずれかであるようです。