2012-12-16 28 views
0

我試圖從使用jQuery和PHP(作爲代理)的服務中獲取數據。PHP在不查詢的情況下提取URL

這是我的PHP獲取JSON。

<?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" 
} 

例如。

我知道這是因爲php刪除了?action=payments查詢。即使我使用&amp;而不是&。那麼有沒有辦法阻止PHP從URL中刪除查詢?

回答

1

將API密鑰保存在您的php中,並且出於明顯的安全原因,請勿在javascript中將其公開給客戶端。您也可以將整個URL(proxy.php除外)存儲在您的php配置中。

也應該使用CURL來退出數據。允許一些錯誤處理,因此如果API不可用,則可以將信息發送回客戶端

+0

你是對的。咄。 – devs

+0

應該可以簡單地使用它,因爲從那裏,沒有url_encoding需要 – charlietfl

+0

謝謝你提醒我。只需將它封裝在一個PHP函數中,並稱它爲一天。 – devs

0

嘗試從後端PHP腳本中刪除此:

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

PHP執行自動爲您服務。

+0

-1。到達PHP時已經完成了損壞。 –