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);
}
?>
答
的@
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);
这将帮助你准确地找到你为什么越来越错误的结果或当脚本出错/意外的方式
你很容易受到[sql注入攻击](http://bobby-tables.com) –
'json_encode($ arr)'有什么意义?你不会在任何地方保存编码数组,所以这是一个毫无意义的/无用的调用。你也只是假设file_get_contents()调用实际上返回了json。在处理外部资源时永远都不会成功。总是假设失败,检查失败,并将成功视为令人惊喜的事情。 –
感谢您的指导。我是初学者,我会照顾它..但你能告诉我另一种吗? –