我试图通过使用外部网站获取一些IPBoard注册表数据,因为777 chmoding在整个论坛注册表将是一个可怕的想法。 如果用户登录论坛,则Registry会返回用户的用户数据。 我创建了一个启动注册表并打印数据的页面。 加载注册表并将数据放到页面非常简单
//userQuery.php
<?php
define("ALLOW_FURLS", false);
require_once 'forum/initdata.php';
require_once IPS_ROOT_PATH . 'sources/base/ipsRegistry.php';
$registry = ipsRegistry::instance();
$registry->init();
$member = $registry->member()->fetchMemberData();
$data = json_encode($member);
print $data;
?>
如果用户打开,则完美无缺。 当我尝试通过外部站点按预期访问我的userQuery.php时出现问题。 来自外部站点的curl和fopen都是服务器而非访问站点的用户请求并返回Guest数据,因为服务器未登录。
这样做
<?php
$url = "http://foo.bar/userQuery.php";
$handle = fopen($url, "r");
$result = fread($handle, 8192);
var_dump($result);
?>
返回服务器memberdata,它是Guest,而不是user_reata,因为如果通过在浏览器中打开它,可以正常访问userQuery。
有没有办法打开该页面(userQuery.php),好像用户使用php或js作为最后的手段请求其内容?我不期待重写IPBoard注册表只是为了向论坛提供外部访问检查。
答案 0 :(得分:1)
我假设您希望在用户访问网站时发生这种情况吗?因此,当Bob出现在网站上并登录时,您将获得他的数据。后来,当露西登录时,你会得到她的数据。
如果这个假设是正确的,你可以在你的网站上放一个小脚本,通过AJAX调用将数据发回服务器。
您的userQuery.php将如下所示(如果您使用jQuery进行AJAX调用),并且您需要将其包含在您网站的其中一个页面中,以便在用户访问该网站时加载它。
//userQuery.php
<?php
define("ALLOW_FURLS", false);
require_once 'forum/initdata.php';
require_once IPS_ROOT_PATH . 'sources/base/ipsRegistry.php';
$registry = ipsRegistry::instance();
$registry->init();
$member = $registry->member()->fetchMemberData();
$data = json_encode($member);
echo "<script>var data = {$data}; $.post('/some/url/on/your/site/receiver.php', data);</script>";
?>
然后,您需要在/some/url/on/your/site/receiver.php
处设置一个脚本,用于从$_['POST']
中获取数据并对其执行操作。
或者,我完全误解了你想要的东西,你可以忽略这个答案。 :)