Firefox の PHP セッションで問題が発生しています。各更新/ページのリロード後にセッションに変更があります。他のブラウザでは問題なく動作しています。
私の WordPress テンプレートでは、ポスト/セッション変数を比較して、セッションを初期化しました。functions.php ファイルで定義されたショートコード「inf_kit」は、「the_content()」関数の実行中に呼び出されます。
functions.php で定義されたショートコードは、関数 kit() および CSRF() を呼び出します。これにより、セッション変数が設定され、非表示のテキスト フィールドがフォームに追加され、テンプレートに返されます。フォームを送信すると、別の値が得られます。IEならChromeでOKです。問題がどこにあるのか、誰かが知っていますか?
テンプレート ファイル内のコード
<?php
session_start();
if(isset($_POST["s_405"])){
print_r($_SESSION);
if($_SESSION['token_valid'] == $_POST['token_valid']) echo 'Good'; else echo 'issue';
}
the_content();
?>
functions.php のコード
<?php
add_shortcode( 'inf_kit', 'kit');
function kit($atts){
$form .= '<form name="kit" method="post">
<input type="hidden" value="'.time().'" name="s_405"/>'
. CSRF('valid').
'</form>';
return $form;
}
function CSRF($key){
$tkn = sha1($key.uniqid(rand(), true));
$_SESSION['token_'.$key] = $tkn;
return '<input type="hidden" name="token_'.$key.'" value="'.$tkn.'">';
}
?>