0

jQueryとPHPを(プロキシとして)使用してサービスからフェッチしようとしています。

これがJSONをフェッチする私のPHPです。

<?php 

    if (!isset($_GET['url'])) die();
    $url =  urldecode($_GET['url']);
    $url = 'http://' . str_replace('http://', '', $url);
    echo file_get_contents($url);

 ?>

JSを使用してデータを操作します(申し訳ありませんが、キーを削除する必要がありました):

var api ='proxy.php?url=http://api.buycraft.net/v3?secret=MY-SECRET-KEY&action=payments';

$.getJSON(api, function(data){
     $.each(data, function(i, donor){
       console.log(donor);
     });
}); 

したがって、に行くとproxy.php?url=http://api.buycraft.net/v3?secret=MY-SECRET-KEY&action=payments次のようになります。

{"code":100,"payload":[]}

しかし、JSONに直接アクセスすると、必要なデータを確認できます

{
"code": 0,
"payload": [
{
"time": 1349661897,
"packages": [
"49381"
],
"ign": "notch",
"price": "15.99",
"currency": "USD"
}

例えば。

?action=paymentsそして、それはphpがクエリを削除するためだと私は知っています。&amp;の代わりに使用しても&。では、PHPがURLからクエリを削除しないようにする方法はありますか?

4

2 に答える 2

1

明らかなセキュリティ上の理由から、API キーを php に保持し、javascript でクライアント側に公開しないでください。URL全体(を除くproxy.php)をphp configに保存することもできます。

また、データを取得するために CURL の使用を実装する必要があります。API が利用できない場合にクライアントに情報を送り返すことができるように、いくつかのエラー処理を可能にします。

于 2012-12-16T14:03:41.333 に答える
0

これをバックエンドPHPスクリプトから削除してみてください。

$url =  urldecode($_GET['url']);

PHPはそれを自動的に実行します。

于 2012-12-16T14:00:34.037 に答える