繁体   English   中英

PHP无需查询即可获取URL

[英]PHP fetches URL without query

我试图从使用jQuery和PHP(作为代理)的服务中获取。

这是我的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中删除查询?

将API密钥保留在您的php中,出于明显的安全原因,请勿将其公开给javascript的客户端。 您也可以将整个URL( proxy.php )存储在php配置中。

还应实现使用CURL检索数据。 允许进行一些错误处理,以便在API不可用时可以将信息发送回客户端

尝试从后端PHP脚本中删除它:

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

PHP将自动为您执行该操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM