案例分析题

阅读以下说明,回答下列提出问题,将解答填入答题纸的对应栏内。
【说明】
某软件公司采用ASP.NET+SQL Server 技术,前端页面采用HTML+CSS +JavaScript方式,开发一套电子商务网站,主要包括用户注册与登录、商品展示与销售、订单处理等功能,项目团队某成员被分配设计实现用户注册与登录部分。

问答题

为了提高网站访问效率,采用JavaScript 进行客户端验证,用户注册页面中,需要验证用户各信息的合法性。假定页面中用户名控件的ID为“myname”,密码控件的ID为“mypwd1”,确认密码控件的ID为“mypwd2”,以下程序验证用户名非空且长度至少6位,密码及确认密码一致、非空且必须是数字(其他信息的验证忽略)。根据题目描述,完成以下程序。
function checkReg()

     var username=document.getElementByID(“myname”).(1)
     var pwd=document.getElementById(“mypwd1”).(1)
     var pwdConfirm=document.getElementById(“mypwd2”).(1)
     var checkright=true;
     if(username=="")||pwd==""||pwdConfirm==""
     {
        alert("请确认用户名和密码输入是否正确!!")
        checkright=false;
      }
      else
      {
         if(username.length<(2))
         { 
            alert(“用户名长度至少6个字符!!”);
            checkright=false;
         }
         else
         {
            for(var i=0;i<pwd.(3);i++)
            {
                  var onechar=pwd.charAt(i)
                  if(onechar>(4)||onechar<(5))
                  {
                      alert("密码必须为数字字符!");
                      checkright=false;
                      break;
                   }
            }
            if(i>=(6))
            {
               if(pwd!=(7))
               {
                   alert("两次输入的密码必须一致!!");
                   checkright=false;
               }
               else
               {
                   checkright=(8);
               }
            }
       }
       return checkright;
}

【正确答案】

(1)value
(2)6
(3)length
(4)’9’
(5)’0’
(6)pwd.length
(7)pwdConfirm
(8)true

【答案解析】

(1)document.getElementById("id").value是获取HTML标签中id=“id”的value的方法。
(2)判断用户名长度至少为6个字符条件表达式为if(username.length<6)。
(3)设置for循环条件,i的终值为密码的长度,即pwd.length。
(4)(5)判断密码字符中是否有非数字字符,判断条件设置为if(onechar>’9’||onechar<’0’)
(6)判断密码是否已经符合纯数字的规范了,即i的值>=密码的长度(i>=pwd.length)
(7)判断密码及确认密码是否输入不一致,即if(pwd!= pwdConfirm)
(8)判断密码及确认密码输入一致的情况下,将checkright置为true值,将其作为函数值返回。

问答题

以下程序表示用户登录过程,假定数据库连接字符串正确无误,用户信息表名为"users",登录页面中包括用户编号控件(ID 为 myUserID) 、密码控件(ID为 mypwd) 等。采用 SQL 参数化方式实现数据库查询,登录成功时,跳转至"userCenter.aspx" 页面,登录失败时,弹出错误提示。根据题目描述,完成以下程序。
public void UserLogin()
{
      string strcon="server=dataServer;database=shop;uid=sa;pwd=sa;";
      SqlConnection con=new SqlConnection(strcon);
      string userID=Request.Form["(9)"];
      string pwd=Request.Form["(10)"];
      string sqlStr="select * from users where UserID=@userID and UserPWD=@pwd";
      Sqlparameter[]p=
      {
          new SqlParameter("@userID",(11))
          new SqlParameter("@"pwd,(12))
       };
      try
       {
           SqlDataAdapter da=new SqlDataAdapter(aqlStr,(13));
           da.SelectCommand.Parameters.AddRange(p);
           DataSet ds=new DataSet();
           da.Fill((14));
           if(ds.Tables[0].Rows.Count>0)
                   Response.Redirect("(15)");
           else
                   Response.Write("<script>alert('用户名或密码错误,请重新输入!');</script>");
        }
        catch(Exception e)
        {
               Response.Write(e.ToString());
        }
}

【正确答案】

(9)myUserID
(10)mypwd
(11)userID
(12)pwd
(13)con
(14)ds
(15)userCenter.aspx

【答案解析】

(9)Request.Form是接收post方法的对象,从题中判断得知是用来接收用户名控件中的用户信息,即Request.Form[“myUserID”]。
(10)用来接收密码控件中的密码信息,即Request.Form[“mypwd”]。
(11)SqlParameter(String, Object),初始化 SqlParameter 类的新实例,该类使用参数名称和新 SqlParameter 的值;根据题中判断得知,@userID值为userID。
(12)根据题中判断得知,@pwd值为pwd。
(13)SqlDataAdapter的语法格式为SqlDataAdapter 对象名 = new SqlDataAdapter (查询用sql语句,数据库连接对象),根据题中判断可知为连接对象con。
(14)Fill方法括号中接DataSet对象,即ds。
(15)实现页面跳转,即Response.Redirect(“userCenter.aspx”)。