1

我在 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.'">'; 
}
?>
4

0 回答 0