有关页面登陆的一些设计

登陆窗口是进入后台的唯一通道,所以一定要把好这一关才行。
       以下我自己的一些思路:
       一般有两个页面组成 login.asp      chklogin.asp
       login.asp用于登陆,chklogin.asp用于验证登陆
      login.asp的主要设计为:姓名,密码,验证码。
      验证码用于防止暴力破解。
     chklogin.asp的主要设计为:
     1.验证login.asp中表单传过来的数据是否合法,如果合法再把合法数据与数据库中的数据
        对比,相符合则允许登陆。
     2.最好加上防止表单外提交的功能。
     3.保存合法变量,用session("name")=
                                         session("password")=
                                         session("num")=验证码
         或者用cookies 也可以。

     注意问题:
      1.验证数据合法性,过滤特殊字符,防止sql漏洞
      2.防止表单外提交

      一些代码的实现:
      server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
      server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
      if mid(server_v1,8,len(server_v2))<>server_v2 then
      response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"
      response.end
      end if

客户端验证代码

 function Jtrim(str)  //去空隔函数
{

        var i = 0;
        var len = str.length;
        if ( str == "" ) return( str );
        j = len -1;
        flagbegin = true;
        flagend = true;
        while ( flagbegin == true && i< len)
        {
           if ( str.charAt(i) == " " )
                {
                  i=i+1;
                  flagbegin=true;
                }
                else
                {
                        flagbegin=false;
                }
        }

        while  (flagend== true && j>=0)
        {
            if (str.charAt(j)==" ")
                {
                        j=j-1;
                        flagend=true;
                }
                else
                {
                        flagend=false;
                }
        }

        if ( i > j ) return ("")

        trimstr = str.substring(i,j+1);
        return trimstr;
}

        function isNumber(s) //数字判断函数
        {
                var digits = "0123456789";
                var i = 0;
                var sLength = s.length;

                while ((i < sLength))
                {
                        var c = s.charAt(i);
                        if (digits.indexOf(c) == -1) return false;
                        i++;
                }

                return true;
        }
function isemail (s)//验证E-MAIL格式函数
{
        
        if (s.length > 100)
        {
                window.alert("email地址长度不能超过100位!");
                return false;
        }

         var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$"
         var re = new RegExp(regu);
         if (s.search(re) != -1) {
               return true;
         } else {
               window.alert ("请输入有效合法的E-mail地址 !")
               return false;
         }
}
//判断是否中文函数
function ischinese(s){
var ret=true;
for(var i=0;i<s.length;i++)
ret=ret && (s.charCodeAt(i)>=10000);
return ret;
}
//--------------------------------------------------------------------------------
function ismit()//判断radio是否没有选择函数
{
        var count=0;
        for (ii=0;ii<myform.elements.length;ii++)
        {
                if (myform.elements[ii].type=="radio" && myform.elements[ii].checked==true)
                {
                                count++;
                }
        }
          
         if (Jtrim(document.myform.user_name.value)=='') {
                window.alert ("请输入您的队员名 !")
                myform.user_name.focus();
                return false;
        }
       if(ischinese(document.myform.user_name.value)){
       window.alert("请输入英文队员名")
       myform.user_name.focus();
                return false;
}
        
    }
      if (Jtrim(myform.user_pass1.value)=="" || myform.user_pass1.value.length < 4)
     {
         alert("您的密码不能为空且不能少于4位数!");
         myform.user_pass1.focus();
         myform.user_pass1.select();
         return false;
     }
     if (Jtrim(myform.user_pass2.value)=="" || myform.user_pass2.value.length < 4)
     {
         alert("您的确认密码不能为空且不能少于4位数!");
         myform.user_pass2.focus();
         myform.user_pass2.select();
         return false;
     }
     if (myform.user_pass1.value!=myform.user_pass2.value)
     {
                 alert("您两次输入的密码不相同,请重新输入!");
                 myform.user_pass1.value="";
                 myform.user_pass2.value="";
                 myform.user_pass2.focus();
                 return false;
     }
  
        if (!isNumber(document.myform.user_qq.value))
        {
          window.alert ("QQ号码应该是数字,请重新输入!");
          myform.user_qq.focus();
          myform.user_qq.value='';
         return false;
     }
        if (Jtrim(document.myform.user_email.value)==''){
        window.alert("请填写您经常使用的一个邮箱!");
        myform.user_email.focus();
        return false;
     }
     if (!isemail(document.myform.user_email.value))
     {
         myform.user_email.focus();
         return false;
     }
     if (myform.user_question.value==0)
     {
         alert("请选择一个密码提示问题");
         myform.user_question.focus();
         return false;
     }
     
    return true;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值