【发布时间】:2013-08-18 07:31:44
【问题描述】:
我正在为客户构建一个网络应用程序,我现在处于系统初稿几乎完成的阶段,但是我遇到了一个最终问题,这让我无法舒适区。
页面功能通过使用跨三个变量的 GET 请求来通过 SQL 查询过滤数据,这些变量 s、p 和 g 在表单提交时传递到 URL 以执行搜索。除了每当我尝试切换滑块时,一切都工作正常,我的 ?s 参数从 URL 中删除,导致查询中断( s 由于某种原因没有被提交。)。关注页面can be seen here
获取变量和查询 -
$pType = $_GET['s'];
$pVal = $_GET['p'];
$gVal = $_GET['g'];
$sql = "SELECT * FROM pumps
WHERE pump_type='$pType'
AND flow_psi <= '$pVal'
AND flow_gpm <= '$gVal'
AND high_psi <= '$pVal'
AND high_gpm <= '$gVal'";
表格-
<form id="pumpSlider" action="<?php echo $_SERVER['PHP_SELF']; ?>?s=<?php echo $pType ?>&p=<?php echo $pVal ?>&g=<?php echo $gVal ?>" method="get" align="center">
<div class="btn-group" data-toggle="buttons-radio">
<button type="submit" class="<?php if( $pType == 'intermittent' ){ echo 'active '; } ?>btn btn-primary waitingUiBut" id="but1" name="s" value="intermittent">INTERMITTENT</button>
<button type="submit" class="<?php if( $pType == 'continuous' ){ echo 'active '; } ?>btn btn-primary waitingUiBut" id="but4" name="s" value="continuous">CONTINUOUS</button>
</div>
<div align="center" class="productSlider">
<p class="inlineLabel">PSI</p><div class="filterSlider" id="psiSlider"></div>
<p class="inlineLabel">GPM</p><div class="filterSlider" id="gpmSlider"></div>
<input id="pS" type="hidden" name="p" value="<?php echo $pVal ?>" />
<input id="gS" type="hidden" name="g" value="<?php echo $gVal ?>" />
</div>
</form>
最后,我使用了一些基本的 javascript 来处理表单的提交事件,以应对滑块值的变化。
$(document).ready(function() {
$("#psiSlider" ).slider({
// options
start: function (event, ui) {
// code
},
slide: function( event, ui ) {
var curValue = ui.value || initialValueA;
var target = ui.handle || $('.ui-slider-handle');
var tooltip = '<div class="tooltip"><div class="tooltip-inner">' + curValue + '</div><div class="tooltip-arrow"></div></div>';
$(target).html(tooltip);
var valA = $('#psiSlider').slider("value");
document.getElementById('pS').value = valA;
var valB = $('#gpmSlider').slider("value");
document.getElementById('gS').value = valB;
},
change: function(event, ui) {
var val = $('#pS').slider("value");
var val = $('#gS').slider("value");
$('#pumpSlider').submit();
}
});
});
我的想法完全被难住了,如果有人有任何意见,我将不胜感激,谢谢。
【问题讨论】:
-
?s=';delete%20from%20pumps;怎么样? -
这是一个的想法(删除
pumps的内容)。 -
我真的不明白什么?s=';delete%20from%20pumps;真的会吗?
-
这将使
$sql以SELECT * FROM pumps WHERE pump_type=''; delete from pumps;开头。这将删除pumps的内容。 -
是的,我没有回答您的问题,或者我会在下面的“答案”部分中回答。我指出您的面向 Web 的应用程序对于最基本的 SQL 注入攻击是不安全的,并且您的“舒适区”的表面积需要重新评估。
标签: php javascript forms url form-submit