我在 Firefox 中遇到 PHP 会话问题。每次刷新/页面重新加载后,Session 都会发生变化。在其他浏览器上,它工作正常。
在我的 WordPress 模板中,我已经初始化了会话,比较了 post/session 变量。在执行“the_content()”函数时,将调用 functions.php 文件中定义的短代码“inf_kit”。
functions.php 中定义的简码将调用函数 kit() 和 CSRF(),这将设置会话变量并向表单添加隐藏文本字段,并在我的模板中返回。当我提交表单时,我得到了不同的值。在 IE 中,Chrome 是可以的。有人知道问题可能出在哪里吗?
模板文件中的代码
<?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.'">';
}
?>