1

我有一个域。对于这个问题,我们称它为www.example.com 。感谢我如何设置和/或 Wordpress 的奇迹,如果我输入example.com,它会将我重定向到www.example.com,而 Wordpress 会做它的事情。我还有一个名为members.example.com的子域,我在其中使用 CodeIgniter 构建了一个相当复杂的系统,并将其放入public_html的/members文件夹中。

在一个完美的世界中,我想做的是能够将一些 php 代码放入 Wordpress 中,这将允许阅读“www”方面的人能够确定他们当前是否也在“会员”上登录事情的一面。我知道 CodeIgniter 会话仍然存在,因此每当我跳到成员方面时,我仍然处于登录状态。我的第一个想法是在 CI 中建立一个快速页面来执行此操作:

public function isLogged()
{
    $x = "off";
    if ($this->session->userdata('memberKey') != 0) {
        $x = "on";
    }
    echo $x;
}

然后,每当我运行链接members.example.com/login/isLogged时,我总是会“关闭”或“打开”来确定我是否在。 memberKey 可能是 0 表示未登录,或者是基于某人在数据库中的对应键的数字。我希望我能够从 www 端(在 Wordpress 中)运行类似 THIS 的东西

$homepage = file_get_contents('http://members.example.com/login/isLogged');

...并且我将能够对该人是否登录采取行动。好吧,显然这里的缺陷是,当我调用上述函数时,我总是会因为我的结果而“关闭”,因为我是从服务器进行调用,而不是从需要此信息的客户端进行调用.

能够阅读这些信息的最优雅的解决方案是什么?有没有办法跨平台读取cookies?

4

1 回答 1

1

好吧,我意识到我已经完成了这个过程,我不想让任何人挂起,所以我的解决方案是:

首先,我知道对于我的 cookie,我进入了 codeIgniter 的/application/config/config.php并将以下内容作为我的 cookie 域(第 269 行 - 我在这里更改了域名以保护我的客户,显然)

$config['cookie_domain']    = ".example.com";

我在这里很小心,并使用“。” 在域之前覆盖所有子域。

我也知道我正在将会话数据写入数据库。因此,在 Wordpress 方面,我将这段代码放在某个位置:

$memCCinfo = unserialize(stripslashes($_COOKIE['ci_session'])); // Changed for OBVIOUS reasons
$mysqli = mysql_connect('localhost', 'NAME', 'PASSWORD'); // Changed for OBVIOUS reasons
$mysqlDatabase = mysql_select_db('DATABASE',$mysqli); // Changed for OBVIOUS reasons
$isLoggedCC = "off";
$sessInfoQry = mysql_query('SELECT user_data FROM ci_sessions WHERE session_id = "' . $memCCinfo['session_id'] .'"',$mysqli);
while ($sessInfo = mysql_fetch_assoc($sessInfoQry)) { 
    $breakOutInfo = unserialize(stripslashes($sessInfo['user_data']));      
    if (is_array($breakOutInfo)) { $isLoggedCC = "on"; }
}

然后,我现在有一种方法可以确定成员是否登录到“成员”端。问题是......我正在做的事情是否有任何我应该担心的漏洞?

于 2012-08-28T20:28:11.423 回答