php脚本未从web主机服务器上的url拾取数据
我有一些PHP脚本,可以从其他网站获取json数据。它通过GET方法(email)检索URL变量,并根据该变量从用户数据库中获取结果,这些结果是唯一的电影代码。然后这些代码一个接一个地放在omdbi.com web api中,以获取json对象中的结果,并放在用于收集json对象的数组中,最后返回json 但当我从本地主机服务器执行此操作时,它会工作并以json形式返回结果 像php脚本未从web主机服务器上的url拾取数据,php,json,Php,Json,我有一些PHP脚本,可以从其他网站获取json数据。它通过GET方法(email)检索URL变量,并根据该变量从用户数据库中获取结果,这些结果是唯一的电影代码。然后这些代码一个接一个地放在omdbi.com web api中,以获取json对象中的结果,并放在用于收集json对象的数组中,最后返回json 但当我从本地主机服务器执行此操作时,它会工作并以json形式返回结果 像 { "movieRecord":[ { "Title":"Froze
{
"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服务器执行此操作时,它会将null返回给我
{
"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.熟悉
@
。如果缺少var,更新的将抑制错误:
$get_user_email= isset($_GET['email'])?@$_GET['email']:false;
if(!$get_user_email)
die('not all get params are passed');
2.SQl注入。不要立即使用外部数据,尤其是在db查询中使用外部数据时。您应该始终从GET或POST safe获取$VAR。至少要这样做:
$query2 = 'SELECT `id` from `tbl_login` where email=.'mysql_real_escape_string($get_user_email);
3.如果获得意外结果,请使用print\u r或var\u 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);
echo'get_user_email:'。$get_user_email.
;
回显“查询1”;
打印(查询);
回波“针对每个循环数据”;
打印(数据);
回音“查询2”;
打印(查询);
这将帮助您准确地找到为什么会得到错误的结果,或者当脚本出现错误/意外时您容易受到
json\u encode($arr)
的影响?您不会将编码的数组保存在任何地方,因此这是一个无意义/无用的调用。您还假设file_get_contents()调用实际上返回了json。在与外部资源打交道时,永远不要假设自己成功。总是假设失败,检查失败,把成功当作惊喜。谢谢你的指导。我是初学者,我会处理好的。。但是你能告诉我另一种选择吗?你也在使用mysql.*
函数,这些函数已经被弃用了将近十年,甚至已经从最新版本的PHP中完全删除了。你几乎是在乞求被这个代码入侵。谢谢你告诉我。。我想补充一点,这段代码只是为android应用程序编写的,它会将结果返回给android。。我将看到php的最新方法