php脚本不从网络主机服务器上的网址中选择数据

时间:2016-07-04 20:22:11

标签: php json

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

但是当我从我的本地主机服务器执行此操作时,它会工作并将结果作为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)",
        }
    ]

}

但是当我从webhost服务器执行此操作时,它会向我返回空值

{

    "movieRecord":[
        null,
        null,
        null
    ]

}

我该怎么办?

我的代码:

  <?php
    include "conn3.php";


    $get_user_email=@$_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);
    }
    ?>

1 个答案:

答案 0 :(得分:1)

1.乘坐 $get_user_email= isset($_GET['email'])?@$_GET['email']:false; if(!$get_user_email) die('not all get params are passed'); 。如果缺少var,则更新会抑制错误:

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

2.SQl注射。不要立即使用外部数据,尤其是在db查询中使用它。你应该总是从GET或POST安全地获得$ vars。至少这样做:

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);

3.如果您收到意外结果,请使用print_r或var_dump调试所有变量,结果和查询:

{
   "Name": "ABC",
   "Phone":"123",
   "Address":[{"City":"City-1"},{"Country":"Country-1"}]
}

{
   "Name": "ABC-1",
   "Phone":"123-1",
   "Address":[{"City":"City-2"},{"Country":"Country-2"}]
}

这将帮助您找到错误结果或脚本出错/意外方式的确切原因