将sql语句设置为参数
- 新建数据库查询
- 设置数据库查询的sql语句
- 添加控件
JavaScript实现sql注入
- 添加事件
- 编写JavaScript代码
//获取评价人id
var pjrid = this.options.form.getWidgetByName("id").getValue();
//显示评价人id
alert("评价人:" + pjrid);
//根据评价人id获取评价人的个人信息
var name = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",2,1)');
var class1 = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",3,1)');
var spe = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",4,1)');
var post = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",5,1)');
var num = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",6,1)');
//显示评价人信息
alert("姓名:" + name + "\n" + "身份:" + post + "\n" + "班组:" + class1 + "\n" + "小组:" + num + "\n" +"专业:" + spe + "\n");
//str设置默认值,str值注入sql
var str="select * from 数据库名.表名 where id=0 ";
//将本人的个人信息筛掉
var beside="and id!="+pjrid;
switch (post) {
case "组长":
str = "select * from 数据库名.表名 where post='组长' "
break;
case "修理工":
if (class1 == "长白班") {
str = "select * from 数据库名.表名 where (post='修理工' or post='技术员') and spe=\'"+ spe+"\'"
} else {
str = "select * from 数据库名.表名 where post='修理工' and class=\'"+ class1+"\'and spe=\'"+spe+"\' and num=\'"+num+"\'"
}
break;
case "技术员":
str = "select * from 数据库名.表名 where (post='修理工' or post='技术员') and spe=\'"+ spe+"\'"
break;
default:
alert("无评价权限")
}
//字段拼接
str=str+beside;
//将str注入到sql中
_g().getParameterContainer().getWidgetByName("sql").setValue(str);
FR.remoteEvaluate('=sql("jb","select * from 数据库名.表名 where id=\'' + pjrid + '\'",2,1)');
用远程公式
FR.remoteEvaluate('=公式')
来执行函数
帆软中sql函数的用法
_g().getParameterContainer().getWidgetByName("sql").setValue(str);
1)首先用全局接口 _g() 获取报表对象。
2)因为要获取参数面板上控件,所以先要获取到参数面板,使用 _g() 的 getParameterContainer 方法获取参数面板对象,即:
_g().getParameterContainer
3)获取到参数面板后,再获取参数面板上的「文本框」控件,使用参数面板的 getWidgetByName 接口获取控件,即:
_g().getParameterContainer().getWidgetByName(“sql”)
帆软中的JS API
报表安全设置
若不进行安全设置,则会报错
确定数据库安全级别可以使用sql注入,如果涉及一些机密数据,不建议使用此方法(避免遭受sql注入攻击)
- 打开报表平台管理
- 关闭脚本调用公式限制
- 关闭对特殊关键字的禁用