- 浏览: 274249 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
夏保森:
太简单了,而且不是太好用,我现在项目就是要实现这样一个功能,比 ...
前台拼接SQL语句 -
人参萝卜:
楼主你好,想要一下这个样例工程的源码,能否分享一下,多谢多谢! ...
MxGraph web流程设计器破解 -
814292160:
为什么解压不了
extjs多文件上传 -
dongqing82585061:
楼主你好,能给份这个demo给我吗?现在我刚好需要实现类似的效 ...
MxGraph web流程设计器破解 -
ddccjjwwjj:
在JBPM中你的连线坐标根本无法做到JBPM的效果 全部会变形 ...
MxGraph web流程设计器破解
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>查询条件表单</title>
<style>
*{
font-size:12px;
padding:0;
margin:0;
}
body{
padding:40px;
}
#MainBox{
border:#666 1px solid;
background-color:#eee;
width:700px;
}
#MainBox td{
padding:4px;
}
#ConditionBox{
height:150px;
width:100%;
overflow-y:auto;
border:#bbb 1px solid;
padding:2px;
background-color:#fff;
}
.tmFrame{
border:#eee 1px solid;
padding:2px;
width:100%;
}
.tmFrame_highlight{
border:#666 1px solid;
padding:2px;
width:100%;
background-color:#f7f7f7;
}
.fname{
float:left;
width:200px;
}
.conn{
float:left;
width:100px;
}
.fvalue{
float:left;
width:100px;
}
.handlebox{
float:right;
width:180px;
display:none;
}
.handlebox_view{
float:right;
width:180px;
display:block;
}
.rbox{
float:right;
margin:1px;
background-color:#999;
color:#fff;
padding:1px;
width:15px;
cursor:hand;
}
legend{
border:#bbb 1px solid;
padding:4px;
}
fieldset{
border:#bbb 1px solid;
padding:4px;
}
.sqlwords{
margin:2px;
border:#bbb 1px solid;
width:100%;
}
</style>
<script>
////构造函数
function ce(e){return document.createElement(e)}
/* Example:
* var a = cex("DIV", {onmouseover:foo, name:'div1', id:'main'});
*/
function cex(e, x){
var a = ce(e);
for (prop in x){
a[prop] = x[prop];
}
return a;
}
/*
* function ge
* Shorthand function for document.getElementById(i)
*/
function ge(i){return document.getElementById(i)}
/*
* function ac
* Example: ac( house, ac(roof, shingles), ac(floor, ac(tiles, grout)))
*/
function ac(){
if (ac.arguments.length > 1){
var a = ac.arguments[0];
for (i=1; i<ac.arguments.length; i++){
if (arguments[i])
a.appendChild(ac.arguments[i]);
}
return a;
} else {
return null;
}
}
/////ID增量
function guid(){
if (!window.__id) window.__id = 0;
return ++window.__id;
}
//======建立条件类
function term(tname,fname,conn,fvalue,ttype){
this.tname=tname;
this.fname=fname;
this.conn=conn;
this.fvalue=fvalue;
this.id= guid();
this.ttype=ttype;
}
term.prototype.getHTML = function(){
var termFrame = cex("DIV", {
id:this.id,
className:'tmframe',
onmouseover:this.fc_term_onmouseover(),
onmouseout:this.fc_term_onmouseout()
});
//var module = cex("DIV", {
//id:'module'+this.id,
//className:'module'
//});
var tttt=this.tname+"."+this.fname;
if(this.ttype!='fset')
tttt=this.tname;
var mtt = cex("input", {
id:'tp'+this.id,
name:'fname'+this.id,
type:"hidden",
value:this.ttype
});
var fname = cex("DIV", {
id:'fname'+this.id,
className:'fname',
innerHTML:tttt
});
var conn = cex("DIV", {
id:'conn'+this.id,
className:'conn',
innerHTML:this.conn
});
var fvalue = cex("DIV", {
id:'fvalue'+this.id,
className:'fvalue',
innerHTML:this.fvalue
});
var handlebox = cex("div", {
id:'handlebox'+this.id,
className:"handlebox"
});
var mdel = cex("div", {
id:'tmdel'+this.id,
onclick:this.fc_mdel_onclick(),
className:"rbox",
title:"删除此条件",
innerHTML: 'X'
});
var mup = cex("div", {
id:'tmup'+this.id,
onclick:this.fc_mup_onclick(),
className:"rbox",
title:"向上移动",
innerHTML: '↑'
});
var mdown = cex("div", {
id:'tmdown'+this.id,
onclick:this.fc_mdown_onclick(),
className:"rbox",
title:"向下移动",
innerHTML: '↓'
});
var mzkh = cex("div", {
id:'tzkh'+this.id,
onclick:this.fc_mzkh_onclick(),
className:"rbox",
title:"添加左括号",
innerHTML: '('
});
var mykh = cex("div", {
id:'tykh'+this.id,
onclick:this.fc_mykh_onclick(),
className:"rbox",
title:"添加右括号",
innerHTML: ')'
});
var mand = cex("div", {
id:'tand'+this.id,
onclick:this.fc_mand_onclick(),
className:"rbox",
title:"添加并条件",
innerHTML: 'and'
});
var mor = cex("div", {
id:'tor'+this.id,
onclick:this.fc_mor_onclick(),
className:"rbox",
title:"添加或条件",
innerHTML: 'or'
});
// Build DIV
ac (termFrame,
mtt,
ac (handlebox,
mdel,
mup,
mdown,
mykh,
mzkh,
mand,
mor
),
fname,
conn,
fvalue
);
return termFrame;
}
term.prototype.highlight = function(){
ge("handlebox"+this.id).className = 'handlebox_view';
ge(this.id).className = 'tmFrame_highlight';
}
term.prototype.lowlight = function(){
ge("handlebox"+this.id).className = 'handlebox';
ge(this.id).className = 'tmFrame';
}
term.prototype.remove = function(){
var _this = ge(this.id);
_this.parentNode.removeChild(_this);
}
term.prototype.moveup = function(){
var _this = ge(this.id);
var pre_this = _this.previousSibling;
if(pre_this!=null){
_this.parentNode.insertBefore(_this,pre_this);
this.lowlight();
}
}
term.prototype.movedown = function(){
var _this = ge(this.id);
var next_this = _this.nextSibling;
if(next_this!=null){
_this.parentNode.insertBefore(next_this,_this);
this.lowlight();
}
}
term.prototype.addzkh = function(){
var _this = ge(this.id);
var tzkh = new term('╭----------------','','','','zkh');
var node_zkh = tzkh.getHTML();
_this.parentNode.insertBefore(node_zkh,_this);
}
term.prototype.addykh = function(){
var _this = ge(this.id);
var tykh = new term('╰----------------','','','','ykh');
var node_ykh = tykh.getHTML();
if(_this.nextSibling!=null)
_this.parentNode.insertBefore(node_ykh,_this.nextSibling);
else
_this.parentNode.appendChild(node_ykh);
}
term.prototype.addand = function(){
var _this = ge(this.id);
var tand = new term(' 并且','','','','tand');
var node_and = tand.getHTML();
if(_this.nextSibling!=null)
_this.parentNode.insertBefore(node_and,_this.nextSibling);
else
_this.parentNode.appendChild(node_and);
}
term.prototype.addor = function(){
var _this = ge(this.id);
var tor = new term(' 或者','','','','tor');
var node_or = tor.getHTML();
if(_this.nextSibling!=null)
_this.parentNode.insertBefore(node_or,_this.nextSibling);
else
_this.parentNode.appendChild(node_or);
}
///对象控制函数
term.prototype.fc_term_onmouseover = function(){
var _this = this;
return function(){
//if (!_this.isDragging)
_this.highlight();
}
}
term.prototype.fc_term_onmouseout = function(){
var _this = this;
return function(){
//if (!_this.isDragging)
_this.lowlight();
}
}
term.prototype.fc_mdel_onclick = function(){
var _this = this;
return function(){
_this.remove();
}
}
term.prototype.fc_mup_onclick = function(){
var _this = this;
return function(){
_this.moveup();
}
}
term.prototype.fc_mdown_onclick = function(){
var _this = this;
return function(){
_this.movedown();
}
}
term.prototype.fc_mzkh_onclick = function(){
var _this = this;
return function(){
_this.addzkh();
}
}
term.prototype.fc_mykh_onclick = function(){
var _this = this;
return function(){
_this.addykh();
}
}
term.prototype.fc_mand_onclick = function(){
var _this = this;
return function(){
_this.addand();
}
}
term.prototype.fc_mor_onclick = function(){
var _this = this;
return function(){
_this.addor();
}
}
/////插入页面
function insertterm(){
var tname = document.all.tname.value;
var fname = document.all.fname.value;
var conn = document.all.conn.value;
var fvalue = document.all.fvalue.value;
//xl(tname+"|"+fname+"|"+conn+"|"+fvalue);
var tm = new term(tname,fname,conn,fvalue,"fset");
var tmHTML = tm.getHTML();
ac(ge("ConditionBox"),tmHTML);
//ZA.addterm(tm);
addtofrom(tname);
}
var tt = new Array();
function addtofrom(tname){
var ttexit="no";
for(var i=0;i<tt.length;i++){
if(tt[i]==tname)
ttexit="yes";
}
if(ttexit=="no"){
tt[i]=tname;
//alert(tt[i]);
}
}
//====条件控制窗口函数
function CBadd(){
var h = document.all.ConditionBox.offsetHeight;
document.all.ConditionBox.style.height = h + 20 + "px";
}
function CBcut(){
var h = document.all.ConditionBox.offsetHeight;
if(h>=150)
document.all.ConditionBox.style.height = h - 20 + "px";
else
return false;
}
////////SQL语句处理函数
function getSQL(){
var sql="";
var ma = ge("ConditionBox").childNodes;
//alert(ma.length);
for(i=0;i<ma.length;i++){
var id = ma[i].getAttribute("id");
var tp = ge("tp"+id).value;
if(tp=="fset"){
//sql+=" "+ge("fname"+id).innerHTML;
//sql+=" "+ge("conn"+id).innerHTML;
//sql+=" \""+ge("fvalue"+id).innerHTML+"\"";
var fname=ge("fname"+id).innerHTML;
var conn=ge("conn"+id).innerHTML;
var fvalue=ge("fvalue"+id).innerHTML;
sql+=" "+fname;
if(conn=="等于")
sql+=" = "+"\'"+fvalue+"\'";
if(conn=="大于")
sql+=" > "+"\'"+fvalue+"\'";
if(conn=="小于")
sql+=" < "+"\'"+fvalue+"\'";
if(conn=="不等于")
sql+=" <> "+"\'"+fvalue+"\'";
if(conn=="为空")
sql+=" is null ";
if(conn=="不为空")
sql+=" is not null ";
if(conn=="包含")
sql+=" like \'%"+fvalue+"%\'";
}
else{
//sql+=" "+ge("fname"+id).innerHTML;
if(tp=="zkh")
sql+=" (";
if(tp=="ykh")
sql+=" )";
if(tp=="tand")
sql+=" and";
if(tp=="tor")
sql+=" or";
}
//var mn = ma.childNodes;
}
var ffrom = "FROM "+getFrom();
ge("sqlwords").value ="SELECT * "+ ffrom+" WHERE "+sql;
}
function getFrom(){
var ff=tt.toString();
return ff;
}
//////////////term数组处理
//var ZA = {};
//ZA.terms = new Array();
//ZA.addterm = function(term){
// var ZAl = ZA.terms.length;
// ZA.terms[ZAl] = term;
//alert(ZA.terms[ZAl].ttype);
// ZAl++;
//}
//ZA.insert_bef_term = function(term,tm){
//}
</script>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" id="MainBox">
<tr>
<td colspan="2" style="background-color:#999;color:#000;font-weight:bolder;font-size:14px">复杂查询表单</td>
</tr>
<tr>
<td><div id="ConditionBox"></div>
<div style="width:100%"><SPAN title='放大显示框' style='float:right;FONT-SIZE: 14px; CURSOR: hand;FONT-FAMILY: webdings' onclick='CBadd()'>6</SPAN><SPAN title='缩小显示' style='float:right;FONT-SIZE: 14px; CURSOR: hand;FONT-FAMILY: webdings' onclick='CBcut()'>5</SPAN></div></td>
</tr>
<tr>
<td>
<fieldset>
<legend>SQL表达式</legend>
<input type="text" id="sqlwords" class="sqlwords" /><input type="submit" name="Submit" value="GET SQL" onclick="getSQL()" style="float:right"/>
</fieldset>
</td>
</tr>
<tr>
<td>
<fieldset>
<legend>定义条件</legend>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>表</td>
<td><select name="tname" id="tname">
<option value="table1" selected="selected">表1</option>
<option value="table2">表2</option>
<option value="table3">表3</option>
<option value="table4">表4</option>
<option value="table5">表5</option>
</select></td>
<td>字段</td>
<td><select name="fname" id="fname">
<option value="f1">字段1</option>
<option value="f2">字段2</option>
<option value="f3">字段3</option>
<option value="f4">字段4</option>
<option value="f5">字段5</option>
<option value="f6">字段6</option>
<option value="f7">字段7</option>
</select></td>
<td>关系</td>
<td><select name="conn" id="conn">
<option value="大于">大于</option>
<option value="等于">等于</option>
<option value="小于">小于</option>
<option value="不等于">不等于</option>
<option value="为空">为空</option>
<option value="不为空">不为空</option>
<option value="包含">包含</option>
</select></td>
<td>值</td>
<td><input name="fvalue" type="text" id="fvalue" value="111111" /></td>
<td><input type="submit" name="Submit" value="增加新条件" onclick="insertterm()"/></td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
</body>
</html>
- 拼接SQL1.rar (3.9 KB)
- 下载次数: 8
发表评论
-
dhtmlx 2.5破解版
2012-03-09 15:30 2981dhtmlx 2.5破解版 -
FusionCharts 破解
2012-01-15 22:47 1087FusionCharts_Widgets_PowerChart ... -
JQuery zTree 很不错的一个TREE
2012-01-10 20:34 928http://www.baby666.cn/hunter/in ... -
sql 分页语句
2011-09-09 15:21 856CREATE proc pageSelect (@pageSi ... -
JSP版的完善KindEditor在线编辑器开源代码
2011-07-09 13:18 1531package com.elkan.kindeditor.up ... -
js浮动toolbar
2011-07-09 12:41 1882这几天做程序一直在找浮动的toolbar 找到个比较好的 ... -
MxGraph web流程设计器破解
2011-03-15 23:04 4613与JBPM结合可以做最好的web流程设计器,这里找了2个破解 ... -
TBCompressor_v2.4 非常好的js 和 css 压缩工具
2011-01-21 15:28 1561淘宝前端的开发环境以Windows居多。为了方便使用,对YUI ... -
JS屏幕尺寸
2010-11-14 01:16 1092<!DOCTYPE HTML PUBLIC " ... -
随IE滚动的按钮
2010-11-14 01:13 886随IE滚动的按钮 -
Delphi简单ActiveX网页调用示例
2010-11-07 15:40 1884将来要调用用户本机相关信息Active必定是个不错的应用 D ... -
EditPlus技巧
2009-05-13 13:33 2087除了windows操作系统,Edi ... -
一个EditPlus 格式化js小工具
2009-03-27 11:27 4099打开 EditPlus,工具栏-->工具-->配置 ... -
JavaScript 计算当天是本年本月的第几周
2009-03-19 16:51 2212var getMonthWeek = function (a, ... -
Js获取当前日期时间及其它操作
2009-03-19 16:27 3851myDate.getYear(); //获取当 ... -
Companion.JS IE javascript 调试工具
2009-03-19 13:53 2499做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先 ... -
IE Developer Toolbar
2009-03-19 13:47 2155IE Developer Toolbar是微软专门 ... -
multibox 全选
2008-10-15 01:14 1124function allselect() { try{ var ... -
SQL 连接 左连接,右连接,全连接,内连接,交叉连接,自连接
2008-09-18 11:56 2190现在在这写写关于它们的作用假设有如下表:一个为投票主表,一个为 ... -
梅花日历控件V3.0
2008-09-06 17:36 1663JS常用日历控件
相关推荐
在该文件中,de*_add函数对GET和POST参数进行了判断,但是没有对参数进行安全过滤,导致用户输入的参数可以直接拼接到SQL语句中执行,造成SQL注入漏洞。该漏洞可以被利用来执行任意SQL语句,从而获取敏感数据或控制...
由于没有对`$id`变量进行有效的输入验证或过滤处理,攻击者可以轻易地通过构造恶意SQL语句来绕过正常的数据过滤机制,从而触发SQL注入漏洞。 #### 三、漏洞详细分析 1. **漏洞触发点**: - 当用户访问文章详情页...
1. **参数化查询**:使用预编译的SQL语句,并用参数代替直接拼接用户输入,如PDO的预处理语句。 2. **输入验证**:对用户输入进行严格的校验,确保输入的数据类型和格式符合预期。 3. **转义特殊字符**:对用户输入...
6. **安全性**:为防止SQL注入攻击,应使用参数化查询或存储过程,避免直接拼接SQL语句。此外,对敏感信息(如密码)进行加密存储也是必要的安全措施。 Asp.NET还支持ORM(对象关系映射)框架,如Entity Framework...
SQL语句不固定, 会根据前台用户的操作而进行变化的SQL语句, 可以被称之为动态SQL. 在MyBatis中, 提供了一组标签, 用于方便的实现动态SQL, 不需要通过java代码拼接字符串了. ###2.动态sql中的标签
- **参数化查询**:使用参数化查询代替直接将用户输入拼接到SQL语句中,这可以有效防止恶意代码被执行。 - **输入验证**:对所有用户输入的数据进行严格的验证,确保它们符合预期的格式和范围。 - **输出编码**:对...
2. 动态SQL:MyBatis的动态SQL功能强大,可以方便地实现条件查询、动态拼接SQL等复杂操作。 3. 缓存机制:MyBatis内置了本地缓存和二级缓存,能够提高数据读取速度。 4. 易于集成:MyBatis可以方便地与其他Java框架...
Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便。 使用MyBatis中的RowBounds进行分页查询时,不需要在 sql 语句中写 offset,limit...
- 使用参数化查询或预编译语句来防止SQL注入,而不是拼接字符串来构造SQL。 - 对输出到HTML的内容进行适当的转义,如使用 `htmlspecialchars()` 或类似的安全函数。 - 避免在不进行转义的情况下将用户输入直接写入...
3. 查询条件生成器:允许用户在页面上添加查询条件,后台代码无需编写逻辑判断,动态拼接SQL语句来追加查询条件。 4. 页面校验器:利用EasyUI的页面校验机制,实现前端页面字段的校验功能。 5. 常用共通封装:包括...
查询条件生成器是Jeecg中的另一个强大功能,它可以动态拼接SQL语句,自动添加各种查询条件。这样开发者就不需要手动编写复杂的SQL语句来处理查询逻辑,大大简化了开发流程。 #### 五、页面校验器 页面校验器采用了...
- 查询条件生成器:动态拼接SQL语句,实现复杂的查询功能。 - 页面校验器:利用EasyUI提供的校验机制,自动生成页面表单校验。 - 基础用户权限封装:包括用户、角色、权限、菜单等,权限控制可以细致到按钮级别。 - ...
攻击者可能通过精心构造的SQL语句,绕过原有的安全防护措施,对数据库进行非法操作,如读取敏感数据、修改记录甚至破坏数据库结构。 为了防止此类漏洞的发生,开发者应遵循以下最佳实践: 1. 对所有用户输入进行...
MyBatis通过XML配置文件或注解将SQL语句与Java代码分离,使得SQL的编写和维护更加直观。它支持动态SQL,可以根据条件动态拼接SQL,提供了更灵活的数据库操作方式。MyBatis将Java对象与数据库表记录映射,使得开发...
开发者需要了解SQL语句,如SELECT、INSERT、UPDATE、DELETE等,以便进行数据操作。 5. 安全与优化 - SQL注入防护:避免在代码中直接拼接SQL,应使用参数化查询或存储过程。 - XSS防护:过滤或转义用户输入,防止...
- 防止SQL注入:在处理用户输入时,应使用预编译的SQL语句或参数化查询,避免直接拼接SQL,防止恶意用户通过注入SQL代码来获取敏感信息或破坏数据库。 - 保护用户隐私:用户的密码应使用安全的哈希算法进行存储,...
2. 查询条件生成器:此功能允许动态拼接SQL语句,并动态追加查询条件。开发者可以根据实际需求灵活配置查询条件,而无需编写复杂的逻辑代码。 3. 页面校验器:JEECG采用EasyUI的校验机制,能够自动生成表单校验代码...
在描述中提到,数据是“拼接后传到前台”的。这意味着后台可能将所有省市区的数据一次性获取并组合成适合前端展示的格式,例如JSON对象,每个对象包含省、市、区的信息。前端接收到数据后,解析JSON并构建树结构。 ...