回 帖 发 新 帖 刷新版面

主题:[讨论]麻烦高手帮看下后台管理为什么不能登陆!什么地方出错了!

数据库中的Admin表中结构是:
CREATE TABLE `Admin` (
  `AdminID` int(11) NOT NULL auto_increment,  `AdminName` varchar(32) default NULL,  `AdminPwd` varchar(64) default NULL,  `AdminType` smallint(6) default '0',  `AddTime` varchar(20) default NULL,  `LastLoginTime` varchar(50) default '暂无登录',  `LastLoginIP` varchar(50) default '暂无登录',
  `NewsNum` int(11) default '0',  `LoginNum` int(11) default '0', `UserName` varchar(20) default NULL,  `UserSex` char(2) default NULL,  `UserBirthday` varchar(10) default NULL,  `UserEmail` varchar(50) default NULL,  `UserQQ` varchar(10) default NULL,  `UserTel` varchar(50) default NULL, `UserAddress` varchar(80) default NULL,  `UserZip` varchar(6) default NULL,  `UserInfo` longtext,  PRIMARY KEY  (`AdminID`),  KEY `AdminUID` (`AdminName`),  KEY `LoginNum` (`LoginNum`),  KEY `NewsNum` (`NewsNum`)) TYPE=MyISAM AUTO_INCREMENT=5 ;
内有数据1条是:INSERT INTO `Admin` (`AdminID`, `AdminName`, `AdminPwd`, `AdminType`, `AddTime`, `LastLoginTime`, `LastLoginIP`, `NewsNum`, `LoginNum`, `UserName`, `UserSex`, `UserBirthday`, `UserEmail`, `UserQQ`, `UserTel`, `UserAddress`, `UserZip`, `UserInfo`) VALUES (3, 'admin', 'CB939D9EA1198112BF8EDCD343ED2A1D', 3, '2006-3-20 15:36:02', '2006-3-21 10:38:10', '127.0.0.1', 0, 1, 'admin', '男', '1983-2-29', 'whan530@163.com', '', '', '', '', '');

回复列表 (共3个回复)

沙发


登陆页面主要代码为:
if(Action!=null && Action.equals("Login")){
String Page1  = (String)request.getHeader("Referer");    //得到页面地址来源
String Page2  = request.getRequestURL().toString();    //得到当前页面地址
    String methon = request.getMethod();
    if (methon.equals("POST") && Page2.equals(Page1))
    {
    try{
    Function Fun = new Function();
    Login login = new Login();
    String IP = request.getRemoteAddr();    //得到客户端Ip地址
    String User = request.getParameter("User");     //得到登录用户名
    String Pwd = request.getParameter("Pwd");       //得到登录密码
String sCode = Fun.CheckReplace(request.getParameter("VerifyCode"));
    if(!sCode.equals(session.getAttribute("VerifyCode")))
        {
        session.setAttribute("error","<li>验证码错误");
        response.sendRedirect("index.jsp");
        return;
        }
    if (login.LoginCheck(User,Pwd,IP))
    {
    session.setAttribute("Login","Yes");
    session.setAttribute("AdminID",Integer.toString(login.AdminID));
session.setAttribute("AdminType",Integer.toString(login.AdminType));
    session.setAttribute("AdminName",User);
    session.setAttribute("error","");
out.println("<SCRIPT LANGUAGE='JavaScript'>alert('登录成功!');location.href='Admin_Main.jsp';</SCRIPT>");
    return;
}
其中用到的login.LoginCheck类函数和Function.CheckReplace类函数分别为:

板凳

 函数名:LoginCheck
    * 作  用:验证登录
    * 参  数:s1,s2,s3: 字符串型,登录用户名,密码,IP
    * 返回值:布尔型。登录成功返回 Ture,否则返回 False
    ***********************************************************/
    public boolean LoginCheck(String s1,String s2,String s3)
    {
        String [] sLog = new String[5];
        try
        {
            Connection Conn = DBConn.getConn();
            Statement stmt = Conn.createStatement(1004,1007);
            ResultSet rs = null;    
            boolean OK = true;
            String AdminPwd = "";
            String User = Fun.CheckReplace(s1);
            String Pwd = md5.getMD5ofStr(md5.getMD5ofStr(Fun.CheckReplace(s2)));
            String Sql = "select * from Admin where AdminName='" + User + "'";
            rs = stmt.executeQuery(Sql);
            sLog[0] = User;
            sLog[2] = (new java.util.Date()).toLocaleString();
            sLog[3] = s3;
            if (!rs.next())
            {
                sLog[1] = "用户登录 [ 用户名不存在 ]";
                sLog[4] = "No";
                Fun.AddLog(sLog);
                OK = false;
            }
            else 
            {
                AdminPwd = rs.getString("AdminPwd");
                if(Pwd.equals(AdminPwd))
                {    
                
                    AdminID=rs.getInt("AdminID");
                    AdminType=rs.getInt("AdminType");
                    LoginNum = rs.getInt("LoginNum");
                    sLog[1] = "用户登录";
                    sLog[4] = "Yes";
                    UpdateLogin(s3,sLog[2],LoginNum+1,AdminID);
                        Fun.AddLog(sLog);
                    OK = true;
                }
                else
                {
                    sLog[1] = "用户登录[密码错误]";
                    sLog[4] = "No";
                    //UpdateLogin(s3,sLog[2],LoginNum+1,AdminID);
                    Fun.AddLog(sLog);
                    OK =false;    
                }    
            }
            return OK;
        }
        catch(SQLException e)
        {
            //e.printStackTrace();
            //return e.getMessage().toString();
            sLog[1] = "用户登录[程序异常]";
            sLog[4] = "No";
            Fun.AddLog(sLog);
            return false;
        }                
    }

3 楼


  * 函数名:CheckReplace
    * 作  用:转化SQL特殊字符串
    * 参  数:s: 字符串型,待转化的字符
    * 返回值:转化以后的字符串
    * 调 用:String s2 = CheckReplace(s1);
    ***********************************************************/    
    public String CheckReplace(String s)
    {
        try
        {
            if(s == null || s.equals("")) return "";
            else
            {
                StringBuffer stringbuffer = new StringBuffer();
                for(int i = 0; i < s.length(); i++)
                {
                    char c = s.charAt(i);
                    switch(c)
                    {                            
                                            
                    case 34: // '"'
                        stringbuffer.append("&quot;");
                        break;
        
                    case 39: // '\''                                    
                        stringbuffer.append("&#039;");
                        break;
    
                    case 124: // '|'
                        stringbuffer.append("");
                        break;
                    
                    case '&':
                        stringbuffer.append("&amp;");
                        break;
                    
                    case '<':
                        stringbuffer.append("&lt;");
                        break;
                    
                    case '>':
                        stringbuffer.append("&gt;");
                        break;
                    
                    default:
                        stringbuffer.append(c);
                        break;
                    }
                }
                return stringbuffer.toString().trim();        //返回转化以后的字符串
              }
          }catch(Exception e){ 
              return "";
          }
    }
登陆的时候总提示用户密码错误:用到的MD5加密类是绝对正确的!
帮帮忙!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册