2016-07-04 51 views
-1

我有一些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

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

這將幫助你準確地找到你爲什麼越來越錯誤的結果或當腳本出錯/意外的方式