php脚本不从网页主机服务器上的网址获取数据

问题描述:

我有一些PHP脚本从其他网站获取json数据。它通过GET方法(电子邮件)检索URL变量,并根据此变量从用户数据库中获取唯一电影代码的结果。然后将这些代码一个一个地放在omdbi.com的web api中,以获得json对象的结果并放入一个数组中,该数组用于收集json对象,然后返回结尾jsonphp脚本不从网页主机服务器上的网址获取数据

但是,当我从它的工作原理本地主机服务器,并返回结果为JSON 如..

{ 

    "movieRecord":[ 
     { 
      "Title":"Frozen", 
      "Year":"2013", 
      "Rated":"PG", 
      "Released":"27 Nov 2013", 
      "Runtime":"102 min", 
      "Genre":"Animation, Adventure, Comedy", 
      "Director":"Chris Buck, Jennifer Lee", 
      "Writer":"Jennifer Lee (screenplay)", 
     } 
    ] 

} 

但是,当我这样做从虚拟主机提供商的服务器返回空值我

{ 

    "movieRecord":[ 
     null, 
     null, 
     null 
    ] 

} 

我能做些什么?

我的代码:

<?php 
    include "conn3.php"; 


    [email protected]$_GET['email']; 


    $query2 = "SELECT id from tbl_login where email='$get_user_email';"; 
    $hasil2 = mysql_query($query2)or die(mysql_error()); 
    while ($data2=mysql_fetch_array($hasil2)){ 

     $id= $data2['id']; 

    } 

    $query = "SELECT movie from usermovieassoc where userr='$id';"; 


    $hasil = mysql_query($query)or die(mysql_error()); 
    if (mysql_num_rows($hasil) > 0) { 
     $response = array(); 
    $response["movieRecord"] = array(); 
    while ($data = mysql_fetch_array($hasil)) 
    { 
     $h['movie'] = $data['movie'] ; 
     $get_id=$h['movie']; 
     $url = file_get_contents("http://www.omdbapi.com/?i=$get_id&plot=full&r=json"); 

     $arr = json_decode($url,true); 

     json_encode($arr) 

     array_push($response["movieRecord"], $arr); 
    } 

     echo json_encode($response); 
    } 
    else { 

     echo json_encode($response); 
    } 
    ?> 
+4

你很容易受到[sql注入攻击](http://bobby-tables.com) –

+1

'json_encode($ arr)'有什么意义?你不会在任何地方保存编码数组,所以这是一个毫无意义的/无用的调用。你也只是假设file_get_contents()调用实际上返回了json。在处理外部资源时永远都不会成功。总是假设失败,检查失败,并将成功视为令人惊喜的事情。 –

+0

感谢您的指导。我是初学者,我会照顾它..但你能告诉我另一种吗? –

@ 1.Get车程。较新的压制错误,如果你缺少var:

$get_user_email= isset($_GET['email'])[email protected]$_GET['email']:false; 
if(!$get_user_email) 
    die('not all get params are passed'); 

2.SQ1注射。不要马上使用外部数据,特别是你在db查询中使用它。您应该始终从GET或POST安全地创建$ vars。所以,至少要做:

$query2 = 'SELECT `id` from `tbl_login` where email=.'mysql_real_escape_string($get_user_email); 

3.如果你得到意想不到的结果调试使用的print_r或后续代码var_dump所有瓦尔,结果和查询:

echo 'get_user_email:'.$get_user_email.'<br/>'; 

echo 'query 1 '; 
print_r($query); 

echo 'for each loop data'; 
print_r($data); 

echo 'query 2 '; 
print_r($query); 

这将帮助你准确地找到你为什么越来越错误的结果或当脚本出错/意外的方式