Wordpress会话管理

Wordpress会话管理,wordpress,session-management,Wordpress,Session Management,我正在使用Wordpress建立一个网站,我想借助它的会话。但我没有找到任何插件,甚至没有文档。在我开始破解之前有什么建议或参考资料吗 注意:我想问的是WP是否以及如何使用标准PHP会话本身,而不是如何添加PHP会话,例如使用session_start()。显然,WP维持的任何状态都是通过其他方式实现的。因此,如果我想使用PHP会话,我需要完全自己添加和维护它,使用线程中的技术 谢谢大家 Wordpress似乎没有使用任何会话 最好的方法是使用它提供的动作挂钩。对于我需要做的事情,最好的答案包括

我正在使用Wordpress建立一个网站,我想借助它的会话。但我没有找到任何插件,甚至没有文档。在我开始破解之前有什么建议或参考资料吗

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


谢谢大家

Wordpress似乎没有使用任何会话


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

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

  • 要允许wordpress的cookie跨子域持久化,请安装根cookie
  • sub1.domain.com有wordpresssub2.domain.com是另一个站点。我从另一个站点(sub2)读取cookies,以确定用户是谁以及用户是否登录
  • 我的饼干如下:

    [wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
    [wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700
    
    使用PHP,我可以循环cookies,解析
    key=>value
    对。这些cookie让我知道
    [mshaffer]
    在wordpress上存储了一个cookie,并且还通过了
    登录的身份验证。cookie的到期日为
    1255298821

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

    从'wp\u users'中选择*其中user\u login='mshaffer'…
    抓取用户id用户电子邮件

    SELECT*FROM`wp\u usermeta`WHERE user\u id='$user\u id'.
    从wp获取大量其他数据

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

    蒙特


    {x:

    WordPress似乎没有调用
    session\u start()
    ,因为它希望是无状态的
    如果定义了
    register\u globals
    ,它会自动销毁您的
    $\u会话

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

    function kana_init_session() {
      session_start();
    }
    
    add_action('init', 'kana_init_session', 1);
    
    您可以将它放在主题的
    functions.php
    文件中

    详细的文章可以在这里找到:

    考虑使用

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

    进一步考虑事项:

    • 根据用户设置的对象缓存等,瞬变可能会发生 不总是存储在数据库中(例如memcached),使用瞬态 会话可能意味着数据会变得庞大并填满内存 快速(使用memcached)

    • 而且,WP似乎没有为这些对象执行自动垃圾收集 瞬变:


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

    if (!session_id()) {
        session_start();
    }
    
    session_start();
    
    将此代码放在第一行的theme的header.php中:

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

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

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

    您需要在
    wp config.php

    if (!session_id()) {
        session_start();
    }
    
    session_start();
    
    然后在
    header.php的顶部添加以下行

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

    你检查过这里的解决方案了吗?这可能适用于这里,而且很简单


    wp\u加载的
    上用
    session\u start()
    钩住函数似乎在这种情况下有效。

    谢谢-从中我了解到,你可以在wp\u配置中自己调用session\u start(),更新不会覆盖它。但比这更好的是,我使用wp\u配置来实例化“上下文”的单个实例类,它可以调用session_start()。您的引用为我澄清了这一点。(现在我需要用他的补丁维护wp_设置以保留$_会话,或者使用合并的“$input”数组。或者让“Context”维护和更新会话变量。)我讨厌他们那样做。Link已经死了,但它在wayback机器中你是完全错误的,Anraiki。Wordpress肯定使用会话。另外,如果你想使用自己的自定义会话值,请遵循以下方法:你需要在
    wp config.php
    if(!session_id())的顶部添加以下行{session_start();}然后在
    header.php
    session_start()的顶部添加以下行;WordPress使用cookie,而不是会话WordPress默认情况下不使用会话。更好的解决方案是:记住,你不能依赖cookie是正版的。我可以向你的网站发送一个带有任何用户名的cookie。长十六进制字符串是(我想)您需要解析的加密校验和,以确保cookie由WordPress设置。当然,Tamlyn您可以在cookie中传递额外的盐/胡椒,并在比较时传递额外的检查。这很好,但不要两者兼而有之。将其放入wp-config.php是一个问题,因为它将始终创建会话,并且会使用资源。即使bot命中,也会ld创建一个会话-每次点击一次,因为他们不做cookies。这是很多会话!如果你正在编写插件,编辑wo-config.php不是很好。如果插件需要它,钩住会话_start()值得注意的是,您可以像这样编辑wp-config.php并不意味着WordPress实际上支持它,毕竟,您正在编写所有代码。这是一个严重的问题