我不確定這是否可能,因爲我是PHP新手。我有一個URL(例如:http://www.mysite.com/data/response/),它給了我一些cookie數據作爲json respose({「cookie_name」:「value」,「ttl」:60})。我有一個PHP腳本,根據cookie值輸出一些輸出。所以,在這個PHP腳本之上,我需要調用上面的url,獲取json響應/解釋它並根據響應設置一個cookie。有人可以幫助我嗎?從PHP腳本內進行jsonp調用
非常感謝提前。 大號
我不確定這是否可能,因爲我是PHP新手。我有一個URL(例如:http://www.mysite.com/data/response/),它給了我一些cookie數據作爲json respose({「cookie_name」:「value」,「ttl」:60})。我有一個PHP腳本,根據cookie值輸出一些輸出。所以,在這個PHP腳本之上,我需要調用上面的url,獲取json響應/解釋它並根據響應設置一個cookie。有人可以幫助我嗎?從PHP腳本內進行jsonp調用
非常感謝提前。 大號
這就是:
$url = 'http://www.mysite.com/data/response/';
$result = file_get_contents($url);
$json = json_decode($result, true);
set_cookie('cookie_name', $json['value'], time() + ((int) $json['ttl']));
由於cwallenpoole下面的評論中提到,確保allow_url_fopen
運行時配置變量設置爲TRUE(這是默認情況下)。如果沒有 - 使用ini_set('allow_url_fopen', 1)
,但它可能會受到安全模式的限制我認爲:)
json_decode
函數已經在PHP 5.2.0中引入。如果您的PHP> = 5.2並且json_decode
不可用,請檢查是否啓用了JSON擴展(您的php.ini中的extension=json.so
)以及您的PHP與--disable-json
標誌進行了整合。
if (!function_exists('json_decode')){
function json_decode($json)
{
$comment = false;
$out = '$x=';
for ($i=0; $i<strlen($json); $i++)
{
if (!$comment)
{
if (($json[$i] == '{') || ($json[$i] == '[')) $out .= ' array(';
else if (($json[$i] == '}') || ($json[$i] == ']')) $out .= ')';
else if ($json[$i] == ':') $out .= '=>';
else $out .= $json[$i];
}
else $out .= $json[$i];
if ($json[$i] == '"' && $json[($i-1)]!="\\") $comment = !$comment;
}
eval($out . ';');
return $x;
}
}
如果allow_url_fopen
設置爲0,你不能改變它:
如果使用預5.2 PHP那麼你可以使用下面的代碼(通過PHP.net匿名用戶推出) ini_set
或通過設置在你的php.ini文件,你可以堅持捲曲(如果捲曲擴展啓用了:)):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER_HEADER, true);
$result = curl_exec($ch);
curl_close($ch);
其餘的代碼應該在第一個例子中工作。希望能幫助到你!
你應該提到,只有當'allow_url_fopen'設置爲'1'(默認情況下,但可以禁用),這纔有效。 –
如果你想要一個來自'json_decode'的關聯數組,你需要傳遞第二個參數爲TRUE。 – cwallenpoole
@cwallenpoole:你是對的,謝謝! @Felix Kling:謝謝你的更新。 – WASD42