2

我一直忙于将 Wordpress 集成到一个 CakePHP 应用程序中。上周一我破解了集成它的方法。现在我面临的另一个问题是客户端想要自动登录在 CakePHP 端登录的用户,我也这样做了在本地工作正常。我正在使用在 cakephp 的 core.php 中设置的 CakePHP 的会话变量,也在 Wordpress 中。自动登录插件的代码片段是:-

session_name("Cake_PHP_Session_Vars");
session_start();
function auto_login(){if (!is_user_logged_in()) {
    //determine WordPress user account to impersonate
    $user_login = 'guest';

   //get user's ID
    $sessVars = $_SESSION['User'];
    $user_id = $sessVars['id'];

    //login
    wp_set_current_user($user_id, $user_login);
    wp_set_auth_cookie($user_id);
    do_action('wp_login', $user_login);
}}add_action('init', 'auto_login');

这在本地系统上一切正常,但是当我将它放在服务器上时,它无法正常工作。请建议我这里可能是什么问题。提前致谢

4

2 回答 2

6

好吧,我纠正了我面临的问题。我只是通过在 Session 变量中设置的用户 ID 将当前用户从 Cake Side 设置为 WP。但是在 Cake 的用户表中增加的 id 可能会有所不同,当我们将其放入 Wp_users 表时可能与 that.so 不同。所以在新插件中我刚刚添加了一些行,其中检索登录用户的用户名,然后获取该用户的 ID,因为我们知道有两个的可能性为 0(或更多)具有相同 USERNAME 的用户。这就是为什么我们然后获取我们在 Session 中拥有的用户名的 Id 然后使用

wp_set_current_user($user_id, $user_name);

你们都可以看到我已经用 $user_name(从会话变量中获取)替换了 $user_login(默认设置为 Guest)。现在它工作正常。主要问题是在我的本地系统 Cake's Tables 和 Wordpress 表中同步得很好,但是在服务器中同步出现了一些问题。

于 2010-04-07T12:07:54.263 回答
1

是您的博客在不同的子域下,如 blog.domain.com。在这种情况下,除非您解决问题,否则将为博客访问者创建一个新会话。

当您从主站点转到博客时,您的域是否从 domain.com 更改为 www.domain.com?如果是这样,还会创建一个新会话。

于 2010-04-07T01:25:35.193 回答