我不确定这是否可能,因为我是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