我不确定这是否可能,因为我是PHP新手。我有一个URL(例如:http://www.mysite.com/data/response/),它给了我一些cookie数据作为json respose({“cookie_name”:“value”,“ttl”:60})。我有一个PHP脚本,它根据cookie值提供一些输出。所以,在这个php脚本之上我需要调用上面的url,获取json响应/解释它并根据响应设置一个cookie。有人可以帮帮我吗?
非常感谢提前。 →
答案 0 :(得分:1)
这是:
$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并且json_decode
不可用,请检查是否启用了JSON扩展(php.ini中的extension=json.so
)以及PHP是否与--disable-json
标志组合在一起
如果您使用5.2之前的PHP,那么您可以使用以下代码(由PHP.net上的匿名用户引入):
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并且您无法通过ini_set
更改它或在php.ini文件中设置它,那么您可以坚持使用cURL(如果启用了cURL扩展名:)) :
$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);
其余代码应该像第一个示例一样工作。希望它有所帮助!