【问题标题】:Wordpress session variable not workingWordpress 会话变量不起作用
【发布时间】:2015-10-06 19:11:33
【问题描述】:

我的 WordPress 会话有问题。我有一个文件“test.php”,用于将变量发布到 WordPress 网站。它具有条件:“如果设置了会话变量,则用户可以访问整个 WordPress 站点,如果未设置会话变量,则用户无法访问该站点”。

当我使用 test.php 将变量发布到 WordPress 站点时,主页工作正常,但是当我访问像“xyz.com/contact”这样的内页时,我收到错误Not Access,这意味着会话变量已被清除在下一页。

这里是 test.php 文件:

<form action="wordpress-site-link" method="POST">
    <input type="submit" name="var" value="go"/>
</form>

在文件themes/theme-name/header.php中我写了这段代码:

session_start();

if(isset($_SESSION['var'])) {
      echo 'Welcome'; 
}  else if(isset($_POST['var'])) {
       $_SESSION['var'] = $_POST['var']; 
} else {
       echo 'No access...';
       exit; 
}

【问题讨论】:

  • 不要假设会话已启动。 Wordpuke 可能已经输出了其他内容,导致“标头已发送”错误。检查 session_start() 的返回值 - 失败时为布尔值 false。
  • 检查剩余页面是否与首页不同,例如首页以www开头。其余页面没有。在这种情况下,会话仅为主页设置。

标签: php wordpress session


【解决方案1】:

只需像这样在你的functions.php中的“init”上挂一个函数:

function ur_theme_start_session()
{
    if (!session_id())
        session_start();
}
add_action("init", "ur_theme_start_session", 1);

然后你可以使用你的会话变量。

希望对你有所帮助。

【讨论】:

猜你喜欢
  • 2014-04-08
  • 1970-01-01
  • 2013-11-10
  • 2015-09-30
  • 2013-04-12
  • 2012-08-17
  • 2014-05-16
相关资源
最近更新 更多