Wordpress会话管理

时间:2009-09-17 20:45:33

标签: wordpress session-management

我正在使用Wordpress建立一个网站,我想捎带它的会话。但我找不到任何插件,甚至文档。在我开始攻击它之前有任何建议或参考吗?

注意:我问的是WP是否以及如何使用标准PHP会话本身,而不是如何添加PHP会话,例如使用session_start()。显然任何WP所维持的状态都是通过其他方式完成的。因此,如果我想使用PHP会话,我需要使用线程中的技术完全自己添加和维护它。

全部谢谢!

9 个答案:

答案 0 :(得分:17)

修改 WP Core 文件以使用会话的能力是一个非常糟糕的主意。我找到的最好方法是从session_start()操作挂钩调用init

function kana_init_session() {
  session_start();
}

add_action('init', 'kana_init_session', 1);

您可以将其放在主题的functions.php文件中。

详细文章可在此处找到:http://www.kanasolution.com/2011/01/session-variable-in-wordpress/

答案 1 :(得分:15)

WordPress似乎没有调用session_start()因为它想成为无状态 如果定义了register_globals,它会自动销毁您的$_SESSION

答案 2 :(得分:5)

对于我需要做的事情,最好的答案包括:

  1. 要允许wordpress的Cookie在子域中保留,请安装根Cookie plugin
  2. sub1.domain.com 有wordpress; sub2.domain.com 是另一个网站。在其他网站( sub2 )中,我读取了Cookie以确定用户是谁以及用户是否已登录。
  3. 我的cookies如下:

    [wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
    [wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700
    

    使用PHP,我可以遍历cookie,解析key=>value对。这些Cookie让我知道[mshaffer]有一个存储在wordpress上的Cookie,并且还经过身份验证logged_in。 Cookie的到期时间为1255298821

    sub2 中,我可以查询wordpress数据库并获取用户信息:

    SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ...从此查询中抓取 user_id user_email

    SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ...从wp中获取了大量其他数据

    有了这些信息,我可以添加到我的 sub2 会话变量/ cookie中,并根据数据执行我想要的操作。我可以确定我是否已登录,以及我的用户名...这让我抓住了很多不同的数据。我现在可以在 sub2.domain.com 中使用WordPress身份验证,并相应地重定向。

    {X:

答案 3 :(得分:5)

考虑使用WordPress Transient API

使用Transient API存储的值对所有用户都可见,而不仅仅是当前用户,具体取决于用于检索瞬态的唯一标识符,您可以为每个用户分配一个唯一的标识符,从而导致瞬态行为非常类似于会话。

进一步考虑:

答案 4 :(得分:2)

Wordpress似乎没有使用任何会话。

最好的方法是使用它提供的动作挂钩。

答案 5 :(得分:1)

将此代码放在第一行的wp-config.php中:

if (!session_id()) {
    session_start();
}

将此代码放在第一行的主题header.php中:

session_start();

然后它将维护所有会话变量。

答案 6 :(得分:1)

你有没有检查过这里的解决方案,这可能适用于这里和它的简单方法

http://thedigilife.com/wordpress-how-to-set-session-custom-variable-while-login/

答案 7 :(得分:1)

session_start()上使用wp_loaded挂钩功能似乎适用于这种情况。

答案 8 :(得分:0)

如果您想使用自己的会话值, Wordpress确实支持

您需要在wp-config.php

的顶部添加以下行
if (!session_id()) {
    session_start();
}

然后在header.php

的顶部添加以下行
session_start();
相关问题