2012-10-17 25 views
0

我正在製作一個Google Map,它將從數據庫中提取信息並輸出xml以將其解釋爲地圖上的標記。我想將點擊過的元素id傳遞給PHP來過濾數據庫結果。執行該功能時,出現錯誤,提示「無法讀取屬性」_e3'未定義「。當我擺脫變量並直接在代碼中輸入一個類型時,一切正常。將html標識傳遞給php/mysql,接收'無法讀取屬性__e3_ undefined'

相關的jQuery

從文件
$(document).ready(function() { 
     $('.map_item').toggle(
      function() { 
       var itemid = this.id; 
       $.ajax({ 
        type: 'POST', 
        //php script takes info from database, outputs xml 
        url:'SQL.php', 
        //pass var to the php to select only items matching this id 
        data: 'variable1=' + itemid, 
        success: function(data) { 

相關PHP SQL.php

$ajax_var = $_POST['variable1']; 
$query = 'SELECT * FROM location WHERE Type="' . $ajax_var . '"'; 
$result = mysql_query($query); //sqlsrv_query 
header('Content-type: text/xml'); 

// Iterate through the rows, adding XML nodes for each 

while ($row = @mysql_fetch_assoc($result)){ 
// ADD TO XML DOCUMENT NODE 
$node = $dom->createElement('marker'); 
$newnode = $parnode->appendChild($node); 
$newnode->setAttribute("dirtType",$row['dirtType']); 
$newnode->setAttribute("lat", $row['lat']); 
$newnode->setAttribute("lng", $row['lng']); 
} 

echo $dom->saveXML(); 
+2

非常好[SQL注入漏洞](http://bobby-tables.com)...介意如果有人完全p你的服務器? –

+0

@MarcB哇感謝您指出。由於它傳遞了一個id標記,因此理論上所有需要在查看頁面時需要做的事情是打開源代碼並將該項目id標記更改爲諸如「" DROP TABLE table_name」之類的內容以刪除該表,因爲PHP將執行該新的id標記作爲SQL請求? – Hat

+0

只需在其中放置一個(int)$ ajax_var,這將有助於該注入。 –

回答

0

我要說的是,數據應該以不同的方式來發送,像這樣:

data: { 
    "variable1": itemId 
} 
相關問題