Wordpress会话管理

dkr*_*etz 22 wordpress session-management

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

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

谢谢大家!

And*_*nko 17

修改WP Core文件以使用会话的能力是一个非常糟糕的主意.我发现的最好方法是调用session_start()from init动作钩子.

function kana_init_session() {
  session_start();
}

add_action('init', 'kana_init_session', 1);
Run Code Online (Sandbox Code Playgroud)

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

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


Ste*_*eve 15

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

  • 链接已经死了,但它在回归机器中https://web.archive.org/web/20161021035452/http://www.thinkingoutloud.co.za/content/20091012/php_wordpress_and_session (2认同)

msh*_*fer 5

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

  1. 要允许wordpress的cookie在子域中保持不变,请安装Root Cookie 插件.
  2. sub1.domain.com有wordpress; sub2.domain.com是另一个网站.从其他站点(sub2),我读取cookie以识别用户是谁以及用户是否已登录.

我的cookies如下:

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700
Run Code Online (Sandbox Code Playgroud)

使用PHP,我可以遍历cookie,解析key=>value对.这些cookie让我知道[mshaffer]有一个cookie存储在wordpress上,并且还被认证为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:


far*_*ace 5

考虑使用WordPress Transient API

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

进一步考虑: