【问题标题】:Using $_SESSION or $_COOKIE that were set in wordpress使用在 wordpress 中设置的 $_SESSION 或 $_COOKIE
【发布时间】:2016-03-09 07:29:12
【问题描述】:

我想知道人们是如何访问我的网站的,所以链接会有一个查询字符串“kw”来识别他们。传入链接如下所示:

mysite.com?kw=ABC

mysite.com/PAGE?kw=XYZ

mysite.com/blog/post?kw=123

我的问题一直是我无法获得在 wordpress 中设置的$_SESSION$_COOKIE。所以进入 mysite.com/blog/(我有 wordpress)的用户,我设置了这个:

if ((isset($_GET['kw']))||(!isset($_COOKIE['kw']))) {
    setcookie('kw',$_GET['kw'], time()+3600*24, '/',$_SERVER['HTTP_HOST'],false);   
    $_SESSION['kw']=$_GET['kw'];
}

所以它应该同时设置$_SESSION['kw']$_COOKIE['kw']。如果我转到我网站上的另一个页面,$_COOKIE 仍然未设置,$_SESSION 重新开始。我把session_start();放在我的wp-config.php中。

wordpress 是否会对这些内容进行处理以防止它们与我网站的其他部分共享?

编辑 - 我注意到,在我加载类似 mysite.com/blog/post?kw=123 的 URL 后,没有存储“123”,如果我将光标放在地址栏中并按回车键,它将被存储,我可以在外面访问它。如果我重新加载页面,它不会。这是怎么回事?

【问题讨论】:

  • 您确定 session_start 调用正确还是您没有以某种方式修改 session_id ?因为不应将 $_SESSION 放在整个网站上。

标签: php wordpress session cookies


【解决方案1】:

你可以使用会话,只需要在模板目录下的functions.php中添加一个函数。

已回复here

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

【讨论】:

  • 在模板目录中你的意思是/wp-includes还是你的意思是主题的functions.php?
  • 主题的functions.php
猜你喜欢
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2012-05-17
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
相关资源
最近更新 更多