我有脚本[script /inc/user_record.php
](服务器A上的用户,我必须获取json数据[script /inc/json.php
](由服务器A上的另一个脚本生成)。
1问题是:脚本仅在用户登录时打印json输出(因此其他用户或访客无法阅读此消息)。我认为,如果我发送当前用户session_id()
,它将正常工作。
我在脚本user_record.php
上有下一个代码:
$json_url = "$SiteHost/inc/json.php?action=get_counters_data&period=6";
try {
$ch = curl_init($json_url);
$ses_id = session_id();
$cookie = 'PHPSESSID='.$ses_id.';';
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$json = curl_exec($ch);
curl_close($ch);
} catch (Exception $e) {
echo 'Exception thrown: ', $e->getMessage(), "\n";
}
此代码必须正常工作,但当我尝试使用脚本user_record.php
打开页面时,页面将无法加载,浏览器将显示他正在尝试加载(无限循环?)。只有服务器重启才能解决问题(或者可能是时间,我没有尝试过)。
我接下来尝试过:我将json.php
脚本上传到my-web-site.com
并登录。我复制了会话ID(例如,firebug显示它)并将其粘贴到我的本地user_record脚本user_record.php
中。看看这段代码:
$json_url = "http://my-web-site.com/inc/json.php?action=get_counters_data&period=6";
try {
$ch = curl_init($json_url);
$ses_id = "session identificatory copied from website";
$cookie = 'PHPSESSID='.$ses_id.';';
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$json = curl_exec($ch);
curl_close($ch);
} catch (Exception $e) {
echo 'Exception thrown: ', $e->getMessage(), "\n";
}
现在一切正常。
json.php
代码:
<?ob_start();
session_start();
$action = $_GET['action'];
if($_SESSION['UserAuthorized']) {
#generating and printing json message in switch (get_counters_data path)
}
?>