2015-07-19 53 views
1

这是一种有效的方法:我想通过源代码保持api密钥不被访问,所以我一直试图用PHP隐藏它并使用Javascript来显示数据。 (我更喜欢使用js语法来显示数据)我已经能够成功显示数据,但是当我查看源代码时,我可以看到JSON响应。任何人都可以告诉我,如果这是一个有效的方法,为什么不是一个好主意,让源显示json?使用Javascript访问PHP JSON响应

<?php 
$apikey = "xxxx"; 
$data = file_get_contents('http://url?apikey=' . $apikey); 
$json = json_decode($data,true); 
?> 

我再访问响应,像这样:

<script type="text/javascript"> 

    var data = <?php echo json_encode($json) ?>; 
    $('.in-theaters-soon').append('<p>' + data.movies[0].title + '</p>'); 

</script> 

回答

3

您可以直接echo,因为你已经在$json的响应从PHP值。例如:

<div class="in-theaters-soon"> 
    <p><?php echo $json['movies'][0]['title']; ?></p> 
</div> 
+0

嗨littleibex,我更喜欢使用JavaScript来显示数据,因为我更熟悉它的语法。你认为上述方法有效吗?以及您如何看待可以在源代码中查看JSON? – Jgunzblazin

+1

您的方法是有效的,因为它可以完成工作,即使这是一个非常迂回的做法。您的JSON在源代码中查看的事实不会造成任何伤害,因为您无论如何都以一种非常好的方式(使用HTML)将其显示给用户。另外,由于它只是JSON,因此无法回溯JSON的来源和方式。 – littleibex

+0

好的,谢谢你的输入 – Jgunzblazin

1

总是对打印的数据进行一些验证。

<?php 
$apikey = "xxxx"; 
$data = file_get_contents('http://url?apikey=' . $apikey); 
if (is_array($data) && ! empty($data)) { 
    /** 
    * Do something. 
    /**/ 
} 
0

你可以做这样的事情,如果你有一个单独的文件的PHP。

您的php文件。

<?php 
// create a token check to make sure it is being called. 
$apikey = "xxxx"; 
$data = file_get_contents('http://url?apikey=' . $apikey); 
echo json_encode($data); 
?> 

然后查询你的php文件就像这样发送一个令牌或类似的东西。

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {token:token}, 
    success: function(data){ 
     var response = $.parseJSON(data); 
     for(var x = 0; x < response.length; x++){ 
      $('.in-theaters-soon').append('<p>' + response[x].title + '</p>'); 
     } 
    }, 
    cache: false, 
    contentType: false, 
    processData: false 
}); 

希望这会有所帮助。