2012-10-17 21 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 
} 
相关问题