ことがある:以下のコメントで述べた
$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
フラグと組み合わされているかどうかを確認してください。
あなたは事前5.2 PHPを使用する場合は、あなたが(PHP.net上の匿名ユーザーにより導入された)次のコードを使用することができます:allow_url_fopen
が0に設定されている、あなたがして変更することができない場合
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;
}
}
は、あなたはcURLのに固執することができini_set
やphp.iniファイルでそれを設定することで、(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);
残りのコードは、最初の例のように動作するはずです。それが役に立てば幸い!
これは 'allow_url_fopen'が' 1'(デフォルトでは無効ですが)に設定されている場合にのみ動作することに言及してください。 –
'json_decode'からの連想配列が必要な場合は、2番目のパラメータをTRUEとして渡す必要があります。 – cwallenpoole
@cwallenpoole:そうです、ありがとう! @Felix Kling:更新にも感謝します。 – WASD42