竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


257月/160

Bootstrap表单验证插件bootstrapValidator使用方法整理

发布在 邵珠庆

文档首页 :
http://bv.doc.javake.cn/api/





 
 
$(document).ready(function() {
   
// 原价、现价同时双验证
$("#original_price").blur(function () {
    $("#form_yanzheng").data('bootstrapValidator').resetForm().validateField('price');
});
$("#price").blur(function () {
    $("#form_yanzheng").data('bootstrapValidator').resetForm().validateField('original_price');
});
 
//表单验证
$('#form_yanzheng').bootstrapValidator({
    message: '值没有被验证',
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
        subject: {
            message: 'The username is not valid',
            trigger: 'blur', //失去焦点就会触发
            validators: {
                notEmpty: {
                    message: '商品名称不能为空'
                },
                stringLength: {
                    min: 2,
                    max: 15,
                    message: '输入字符数量错误'
                },
                callback: {
                    message: '商品名称有非法内容',
                    callback: function () {
                        var filter = true;
                        var subject = $("#subject").val();
 
                        if (subject.indexOf("储值卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("充值卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("会员卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("vip卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("打折卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("年卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("美容卡") >= 0) {
                            filter = false;
                        }
                        if (subject.indexOf("健身卡") >= 0) {
                            filter = false;
                        }
 
                        return filter;
                    }
                }
            }
        },
        original_price: {
            trigger: 'blur', //失去焦点就会触发
            message: 'The username is not valid',
            validators: {
                notEmpty: {
                    message: '输入整数或者2位小数'
                },
                regexp: {
                    regexp: /^(\d+\.\d{1,2}|\d+)$/,
                    message: '输入整数或者2位小数'
                },
                callback: {
                    message: '原价要大于等于现价',
                    callback: function () {
                        var op = $('#original_price').val();
                        var pp = $('#price').val();
                        return parseFloat(op) >= parseFloat(pp);
                    }
                }
            }
        },
        price: {
            trigger: 'blur', //失去焦点就会触发
            message: 'The username is not valid',
            validators: {
                notEmpty: {
                    message: '输入整数或者2位小数'
                },
                regexp: {
                    regexp: /^(\d+\.\d{1,2}|\d+)$/,
                    message: '输入整数或者2位小数'
                },
                callback: {
                    message: '原价要大于等于现价',
                    callback: function () {
                        var op = $('#original_price').val();
                        var pp = $('#price').val();
                        return parseFloat(op) >= parseFloat(pp);
                    }
                }
            }
        },
        inventory: {
            trigger: 'blur', //失去焦点就会触发
            message: 'The username is not valid',
            validators: {
                notEmpty: {
                    message: '输入整数或者2位小数'
                },
                between: {
                    min: 0,
                    max: 999999,
                    message: '输入有效库存数量'
                }
            }
        },
        validity_period: {
            trigger: 'blur', //失去焦点就会触发
            message: 'The username is not valid',
            validators: {
                notEmpty: {
                    message: '请正确填写有效天数7-360天'
                },
                between: {
                    min: 7,
                    max: 360,
                    message: '请合理输入使用有效期'
                }
            }
        }
    }
}).on('success.form.bv', function (e) {
 
    var refertype = $('#refertype').val();
    var urlpath = "{:U('Index/" + refertype + "')}";
 
    $.ajax({
        type: "POST",
        url: urlpath,
        data: $('#form_yanzheng').serialize(),
        dataType: 'json',
        success: function (data, statusText, xhr, $form) {
            if (data.type == 'true') {
                swal({
                    title: data.info,
                    text: "",
                    type: "success",
                }, function () {
                    self.location = "{:U('Index/index')}";
                });
 
            } else {
                swal(data.info, "", "error");
                return false;
            }
        }
    });
});
});

56月/100

网页表单密码破解程序技术

发布在 邵珠庆

使用说明

1、Target:填写表单将要的路径,该路径可以通过查看网页的源文件得到,如<FORM NAME="form1" METHOD="post " ACTION="http://www.163.com/CheckUser.jsp>

2、Referer:有些网页的验证表单处要 ...
使用说明

1、Target:填写表单将要的路径,该路径可以通过查看网页的源文件得到,如
<FORM NAME="form1" METHOD="post " ACTION="http://www.163.com/CheckUser.jsp>

2、Referer:有些网页的验证表单处要检测表单由何处提交,这里可以填写该表单的URL,如
www.163.com

3、CorrectFlag:此处填写表单验证后正确的关键字,如何得知该关键字呢?如果你有一个帐号能够通过该表单验证,可以使用GetFlag按钮来获得该关键字。

4、WrongFlag:同上,这里是获得验证失败的关键字,也是通过GetFlag得到的。

5、Keep Session:是保持页面在传递中的Session(目前没有实现)

6、Var1Name:指表单中第一个文本框的名字,一般是用户名:),也可以通过查看源程序得到,如
<input name="username"size=12 class=log>
其中的usrname就是名字

Var1Value:指该处应该填写的内容,如果要猜jack的密码,就填写jack

UseDict:指是否使用字典文件,如果该标记被选中,会让你选择字典文件。

Var2Name、Var2Value、UseDict同上。

注意:如果想检测某个用户名是否已存在(一般网站都会提供该功能),可以将Var1使用字典,Var2留白。如果只是猜某一指定用户的密码,则将Var2使用字典。目前不支持用户名和密码同时使用字典文件。

7、Delay如果某些ISP限制了访问页面的时间间隔,请设定该间隔时间,单位为毫秒。

8、OtherParameters:如果表单中还有其它需要提交的元素,可以自己拼写提交,如
submit="登录"&style="1"

9、此处是反馈的结果

Load/Save:打开/保存配置文件

下面是示例:

我在自己的机器上准备了4个文件:default.html(登录页面),check.jsp(身份验证),error.jsp(用户名或密码错误页面),ok.jsp(登录成功的页面)

default.htm的内容

<form name="form1" method="post" action="check.jsp">
用户名:<input name="username" type="text" size="12"><br>
密 码:<input name="password" type="password" value="" size="12">
<input name="submit" type="submit" value="提交">
</form>
--------------------------------------------------------------------------------

check.jsp

<%
String username = request.getParameter("username");
String password = request.getParameter("password");

if (!username.equals("zhang")) {
response.sendRedirect("error.jsp?msg=用户不存在");
return ;
}

if (!password.equals("test")) {
response.sendRedirect("error.jsp?msg=密码不正确");
return ;
}

response.sendRedirect("ok.jsp");
%>
--------------------------------------------------------------------------------

error.jsp

<%
out.println(request.getParameter("msg"));
%>
--------------------------------------------------------------------------------

ok.jsp

<%
out.println("Login Success");
%>

由default.htm中可以看出,Target应该是check.jsp,Var1Name是username,Var2Name是password,因此,Target处应该填写http://localhost:8080/server/check.jsp,Var1Name处填写username,Var2Name处填写password,上面的程序中我已经知道了用户zhang使用密码test时能够正确登录,因此我将Var1Value填写zhang,Var2Value填写test,然后GetFlag,返回的结果如下:

HTTP/1.1 302 Moved Temporarily
Set-Cookie: JSESSIONID=D774019940B30BC65709C15197A13B0A; Path=/server
Location: http://127.0.0.1:8080/server/ok.jsp
Content-Type: text/html
Content-Length: 0
Date: Sat, 10 Apr 2004 14:57:27 GMT
Server: Apache-Coyote/1.1
Connection: close

在我们再将Var1Value和Var2Value留空,再看看登录失败时的返回数据

HTTP/1.1 302 Moved Temporarily
Set-Cookie: JSESSIONID=21E3ECB8815AC7876A78D1479B30EB7D; Path=/server
Location: http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú
Content-Type: text/html
Content-Length: 0
Date: Sat, 10 Apr 2004 15:00:22 GMT
Server: Apache-Coyote/1.1
Connection: close

从上面返回的两组数据中可以看到,当登录成功时,返回的数据包含Location: http://127.0.0.1:8080/server/ok.jsp,失败则包含Location:http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú(这里没有处理中文编码,所以显示乱码),因此,我们在CorrectFlag中填写http://127.0.0.1:8080/server/ok.jsp,WrongFlag中填写Location: http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú,现在再假设我要猜测用户zhang的密码,这时可以将Var1Value中填写zhang,Var2Value使用字典文件。我准备的字典文件内容如下:

iloveyou
loveyou
love
ILOVEYOU
LOVEYOU
LOVE
loveme
LOVEME
test
778852177885217788521
77885217788521
7788521
521521521
521521
521
520520520
520520
520
zhang
772587725877258
7725877258
77258
258258258
258258
258
sina
sohu
163
263
(最后一行要留空)

此时界面应该如下:

然后Start,结果如下

注意:

1、选择关键字最好是尽量靠前,这样会使网络传输的数据量比较小

2、能务必填写CorrectFlag,也就是说你必须知道登录正确的关键字(这也是提高速度的一个方面,同时,如果仅通过错误的关键字来猜测密码是否正确比较困难,这是由于关键字比较难找,最重要的是,如果不填写CorrectFlag,目前不能正常工作:))

83月/100

jquery表单元素取值和选中

发布在 邵珠庆

获取一组radio被选中项的值
var item = $('input[@name=items][@checked]').val();
获取select被选中项的文本
var item = $("select[@name=items] option[@selected]").text();
select下拉框的第二个元素为当前选中值
$('#select_id')[0].selectedIndex = 1;
radio单选组的第二个元素为当前选中值
$('input[@name=items]').get(1).checked = true;

获取值:

文本框,文本区域:$("#txt").attr("value");
多选框checkbox:$("#checkbox_id").attr("value");
单选组radio:   $("input[@type=radio][@checked]").val();
下拉框select: $('#sel').val();

控制表单元素:
文本框,文本区域:

$("#txt").attr("value",'');//清空内容
$("#txt").attr("value",'11');//填充内容

多选框checkbox:

$("#chk1").attr("checked",'');//不打勾
$("#chk2").attr("checked",true);//打勾
if($("#chk1").attr('checked')==undefined) //判断是否已经打勾

单选组radio:    $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项
下拉框select:

$("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项
$("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option
$("#sel").empty();//清空下拉框

33月/100

js 验证表单提交验证类

发布在 邵珠庆

附加:js验证radio是否选择
<script language="JavaScript">
function checkform(obj)
{
for(i=0;i<obj.oo.length;i++)
if(obj.oo[i].checked==true) return true;
alert("请选择")
return false;
}
</script>
<form id="form1" name="form1" method="post" action="" onsubmit="return checkform(this)">
<input type="radio" name="oo" value="radiobutton" />
<input type="radio" name="oo" value="radiobutton" />
<input type="submit" name="Submit" value="提交 " />
</form>
1. 长度限制
<script>
function test()
{
if(document.a.b.value.length>50)
{
alert("不能超过50个字符!");
document.a.b.focus();
return false;
}
}
</script>
<form name=a onsubmit="return test()">
<textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
<input type="submit" name="Submit" value="check">
</form>

2. 只能是汉字
<input onkeyup="value="/oblog/value.replace(/[^/u4E00-/u9FA5]/g,'')">

3." 只能是英文
<script language=javascript>
function onlyEng()
{
if(!(event.keyCode>=65&&event.keyCode<=90))
event.returnvalue=false;
}
</script>

<input onkeydown="onlyEng();">

4. 只能是数字
<script language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
//考虑小键盘上的数字键
event.returnvalue=false;
}
</script>

<input onkeydown="onlyNum();">

5. 只能是英文字符和数字
<input onkeyup="value="/oblog/value.replace(/[/W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))">

6. 验证 油箱格式
<SCRIPT LANGUAGE=javascript RUNAT=Server>
function isEmail(strEmail) {
if (strEmail.search(/^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$/) != -1)
return true;
else
alert("oh");
}
</SCRIPT>
<input type=text onblur=isEmail(this.value)>

7. 屏蔽关键字(这里屏蔽***和****)
<script language="javascript1.2">
function test() {
if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){
alert(" ");
a.b.focus();
return false;}
}
</script>
<form name=a onsubmit="return test()">
<input type=text name=b>
<input type="submit" name="Submit" value="check">
</form>

8. 两次输入密码是否相同
<FORM METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" onclick="check()">
</FORM>
<script>
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert("false")
input1.value = "";
input2.value = "";
}
else document.forms[0].submit();
}
}
</script>
够了吧
屏蔽右键 很酷
oncontextmenu="return false" ondragstart="return false" onselectstart="return false"
加在body中

2.1 表单项不能为空

<script language="javascript">
<!--
function CheckForm()
{
if (document.form.name.value.length == 0) {
alert("请输入您姓名!");
document.form.name.focus();
return false;
}
return true;
}
-->
</script>

2.2 比较两个表单项的值是否相同

<script language="javascript">
<!--
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert("您两次输入的密码不一样!请重新输入.");
document.ADDUser.PWD.focus();
return false;
}
return true;
}
-->
</script>

2.3 表单项只能为数字和"_",用于电话/银行帐号验证上,可扩展到域名注册等

<script language="javascript">
<!--
function isNumber(String)
{
var Letters = "1234567890-"; //可以自己增加可输入值
var i;
var c;
if(String.charAt( 0 )=='-')
return false;
if( String.charAt( String.length - 1 ) == '-' )
return false;
for( i = 0; i < String.length; i ++ )
{
c = String.charAt( i );
if (Letters.indexOf( c ) < 0)
return false;
}
return true;
}
function CheckForm()
{
if(! isNumber(document.form.TEL.value)) {
alert("您的电话号码不合法!");
document.form.TEL.focus();
return false;
}
return true;
}
-->
</script>
2.4 表单项输入数值/长度限定

<script language="javascript">
<!--
function CheckForm()
{
if (document.form.count.value > 100 || document.form.count.value < 1)
{
alert("输入数值不能小于零大于100!");
document.form.count.focus();
return false;
}
if (document.form.MESSAGE.value.length<10)
{
alert("输入文字小于10!");
document.form.MESSAGE.focus();
return false;
}
return true;
}
//-->
</script>

2.5 中文/英文/数字/邮件地址合法性判断

<SCRIPT LANGUAGE="javascript">
<!--

function isEnglish(name) //英文值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return false;
}
return true;
}

function isChinese(name) //中文值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return true;
}
return false;
}

function isMail(name) // E-mail值检测
{
if(! isEnglish(name))
return false;
i = name.indexOf(" at ");
j = name dot lastIndexOf(" at ");
if(i == -1)
return false;
if(i != j)
return false;
if(i == name dot length)
return false;
return true;
}

function isNumber(name) //数值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charAt(i) < "0" || name.charAt(i) > "9")
return false;
}
return true;
}

function CheckForm()
{
if(! isMail(form.Email.value)) {
alert("您的电子邮件不合法!");
form.Email.focus();
return false;
}
if(! isEnglish(form.name.value)) {
alert("英文名不合法!");
form.name.focus();
return false;
}
if(! isChinese(form.cnname.value)) {
alert("中文名不合法!");
form.cnname.focus();
return false;
}
if(! isNumber(form.PublicZipCode.value)) {
alert("邮政编码不合法!");
form.PublicZipCode.focus();
return false;
}
return true;
}
//-->
</SCRIPT>

2.6 限定表单项不能输入的字符

<script language="javascript">
<!--

function contain(str,charset)// 字符串包含测试函数
{
var i;
for(i=0;i<charset.length;i++)
if(str.indexOf(charset.charAt(i))>=0)
return true;
return false;
}

function CheckForm()
{
if ((contain(document.form.NAME.value, "%/(/)><")) || (contain(document.form.MESSAGE.value, "%/(/)><")))
{
alert("输入了非法字符");
document.form.NAME.focus();
return false;
}
return true;
}
//-->
</script>