所以在我写的这个程序中,我实际上是使用表单从用户那里获取SQL查询.然后我继续在我的数据库上运行该查询.
我知道不要"信任"用户输入,所以我想对输入进行清理.我正在尝试使用mysql_real_escape_string
但是没有成功使它工作.
根据输入,这是我正在尝试的内容:
select * from Actor;
//"query" is the input string:
$clean_string = mysql_real_escape_string($query, $db_connection);
$rs = mysql_query($clean_string, $db_connection);
if (!$rs)
{
echo "Invalid input!";
}
Run Code Online (Sandbox Code Playgroud)
这总是给我的
"输入无效!"
错误.
当我取出clean_string
部分并运行mysql_query
查询时,
"输入无效"
消息未输出.相反,当我这样做时:
$rs = mysql_query($query, $db_connection);
if (!$rs)
{
echo "Invalid input!";
}
Run Code Online (Sandbox Code Playgroud)
它不输出
"输入无效".
但是,我需要使用该mysql_real_escape_string
功能.我究竟做错了什么?
更新:
鉴于
select * from Actor;
作为输入,我发现以下.
使用echo语句我发现在清理之前,字符串保存了值:
select * from Actor;
这是正确的.但是,在清理后它会保留不正确的值select *\r\nfrom Actor;
,因此会显示错误消息.为什么
mysql_real_escape_string
这样做?
这是一个我无法弄清楚的超奇怪的问题.我有我的div与地图和它的CSS风格.Leaflet地图显示在一个矩形中,而不是div中.它好像z索引是错误的,但我无法弄明白.JS位于document.ready函数中.我在地图div周围添加了一个边框,以显示一切都是如何.
CSS:
#map {width:100%;height:100%;margin-left:10px;margin-top:40px}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div id="showTravel" class="row" style="display:none">
<div class="col-lg-12">
<div class="wrapper wrapper-content">
<h2 style="margin-top:-18px">All Travelers</h2>
<div id="travelContent">
<div id=map></div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var map=L.map('map',{
minZoom:2,
maxZoom:18
}).setView([x,y],16);
var buildingIcon=L.icon({
iconUrl:'/images/bicon.png',
iconSize:[25,40],
popupAnchor: [-3, -20],
iconAnchor: [14, 38]
});
L.marker(x,y],{
icon:buildingIcon,
title:'town, state'
})
.bindPopup('<b>first last</b><br>Email: email address<br>Cell: phone number')
.addTo(map);
mapLink='<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © ' + mapLink,
maxZoom:18
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
我已经解决了重叠问题,但最后一个问题仍然存在,即
当页面加载并且地图在地图上呈现时,document.ready()
只能在屏幕的左上角看到.如果我更改浏览器的大小(最大化,最小化),则地图会正确刷新.
我正在尝试使用leaflet和topojson图层创建交互式地图.我想做以下事情:
1-当单击某个topojson多边形时,它应该被删除.
2-当单击另一个多边形时,应该将其删除,并且应该添加先前单击的多边形.
所以基本上一直只有一个多边形不存在.这是地图的代码块:
function addRegions(map) {
var regionLayer = new L.TopoJSON();
$.getJSON('map-developmentregions.topo.json').done(addRegionData);
function addRegionData(topoData){
regionLayer.addData(topoData);
regionLayer.addTo(map);
regionLayer.eachLayer(handleLayer);
}
function handleLayer(layer) {
layer.setStyle({
fillColor : getColor(getNewsCount(layer.feature.properties.REGION)),
weight: 2,
opacity: 1,
color: 'white',
fillOpacity: 1
});
layer.on({
mouseover : enterLayer,
mouseout: leaveLayer,
click: clickAction
});
}
//Here's the code for clickAction... this is where I suppose the code should be placed
function clickAction(e) {
var layer = e.target;
map.removeLayer(layer);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这段代码允许我点击topojson多边形来删除它,但是一旦点击了另一个多边形,我就无法想到如何检索先前删除的多边形.
我想我应该将每个多边形与多边形的总数进行比较,并在删除当前单击的多边形之前添加缺少的多边形,但我无法执行该多边形.
请帮忙.谢谢
为了在我的fpdf
文件中包含现有的pdf,我可以调用任何函数吗?
例如
$pdf->AddPage(from file example.pdf);
Run Code Online (Sandbox Code Playgroud)
这样的事情?它可以吗?
我对Web开发比较陌生,目前遇到了一个我无法解决的错误.
我在输入" http://localhost/index.html " 后使用IIS测试我的php 并选择要上传的示例文件,它会生成以下警告:
Warning: move_uploaded_file(upload/Angela_Nie_resume_technical - EditedMW.doc): failed to open stream: Permission denied in C:\inetpub\wwwroot\test.php on line 26
Warning: move_uploaded_file(): Unable to move 'C:\Windows\Temp\php74F2.tmp' to 'upload/Angela_Nie_resume_technical - EditedMW.doc' in C:\inetpub\wwwroot\test.php on line 26
Run Code Online (Sandbox Code Playgroud)
以下是与移动文件相关的代码.
$target_dir = "upload/";
$target_file = $target_dir . basename( $_FILES["uploaded"]["name"]) ;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_file)) {
echo "The file has been uploaded";
}
else {
echo "Sorry, there was a problem uploading file.";
}
Run Code Online (Sandbox Code Playgroud)
我使用Windows 8.1并使用IIS运行localhost.提前谢谢你帮助我!
我需要Geoserver
在我的 Azure 网站上添加一些数据。我只是想知道是否需要Geoserver
在我的帐户上安装它(如果可能的话)还是有其他方法?
正如我只是环顾四周,我发现这个环节的工作
http://geoserver.azurewebsites.net/
如果这个环节的工作,这是否意味着我们可以配置Geoserver
在Azure
我已使用以下方法在地图上实现了click事件
google.maps.event.addListener(map, 'click', mapclick);
而且一切正常。
我还在地图上添加了geojson图层。因此,问题是当我单击覆盖的geojson图层(实际上是多边形图层)时,未触发地图单击事件。因此,我的问题是,当我单击地图上的叠加层时,如何使地图单击事件也起作用?
从2000年到2010年,我有30多个地区的密度数据.我想为每年创建一个交互式的等值区域地图,然后使用滑块(理想情况下)或单选按钮来选择年份.
我可以在第一年获得互动,但不会在其他年份的层次上.你可以在这里看到一个有用的例子,但是让我在下面提供一些细节:
为简单起见,请考虑两年.blocks1995
具有非重叠多边形BlockA和BlockB(两个区)并blocks1996
具有相同的块.他们有一个叫做density
产生等值的财产:
var blocks1995 = {
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" }
},
"features": [{
"type": "Feature",
"properties": { "time": 1995, "density": 3.1, "nameB": "BlockA" },
"geometry": {
"type": "Polygon",
"coordinates": [[[50.0, 29.0],[50.0, 29.99],[50.51, 29.99],[50.0, 29.0]]]
}
}, {
"type": "Feature",
"properties": { "time": 1995, "density": 1.1, "nameB": "BlockB" },
"geometry": {
"type": "Polygon",
"coordinates": [[[50.01, 30.0],[50.52, 30.0],[50.52, 30.5]]]
}
}]
};
var blocks1996 …
Run Code Online (Sandbox Code Playgroud) 我希望Leaflets 图层控件功能使用的图层名称来自变量而不是字符串,并且基于图层中的数据.
下面显示的示例使用变量layerName.这是否可能,因为它期待一个名称值对?有工作吗?
var layerName = feature.properties.condition[0];
//layer control
var baseMaps = {
"OpenStreetMap": OSM,
"Aerial Imagery": MapQuestOpen_Aerial
};
var overlayMaps = {
layerName: layer1,
};
L.control.layers(baseMaps, overlayMaps).addTo(map);
Run Code Online (Sandbox Code Playgroud) javascript ×5
leaflet ×4
php ×3
azure ×1
choropleth ×1
controls ×1
file-upload ×1
fpdf ×1
geo ×1
geojson ×1
geoserver ×1
google-maps ×1
iis ×1
interactive ×1
jquery ×1
layer ×1
mysql ×1
pdf ×1
topojson ×1
warnings ×1
web ×1