当我尝试使用cURL获取页面内容时无限循环(服务器关闭?)(+发送session_id)

时间:2014-03-16 13:00:37

标签: php session cookies curl

我有脚本[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)
}
?>

0 个答案:

没有答案