社区
界面
帖子详情
登录界面
渔夫4797
2003-12-02 11:58:23
如何用vc制作带密码检验功能的登录界面?????
...全文
158
10
打赏
收藏
登录界面
如何用vc制作带密码检验功能的登录界面?????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanw0212
2003-12-25
打赏
举报
回复
在论坛里找到你的帖自,点击管理菜单,然后给分!
lxz9117
2003-12-10
打赏
举报
回复
ding
canjian
2003-12-10
打赏
举报
回复
收藏
checkyvc6
2003-12-10
打赏
举报
回复
如果问题解决了话,赶快揭帖啊!
你可以对密码进行简单的加密这样文件中或者数据库中显示的密码不是昵登陆时的密码
下面给你一个加密类直接用就可以了
class CCrypt
{
public:
CCrypt();
virtual ~CCrypt();
public:
static CString Encrypt(CString S, WORD Key); // 加密函数
static CString Decrypt(CString S, WORD Key); // 解密函数
};
// 常量
#define C1 52845
#define C2 22719
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCrypt::CCrypt()
{
}
CCrypt::~CCrypt()
{
}
CString CCrypt::Encrypt(CString S, WORD Key) // 加密函数
{
CString Result,str;
int i,j;
Result=S; // 初始化结果字符串
for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
{
Result.SetAt(i, S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
Key = ((BYTE)Result.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
}
S=Result; // 保存结果
Result.Empty(); // 清除结果
for(i=0; i<S.GetLength(); i++) // 对加密结果进行转换
{
j=(BYTE)S.GetAt(i); // 提取字符
// 将字符转换为两个字母保存
str="12"; // 设置str长度为2
str.SetAt(0, 65+j/26);
str.SetAt(1, 65+j%26);
Result += str;
}
return Result;
}
CString CCrypt::Decrypt(CString S, WORD Key) // 解密函数
{
CString Result,str;
int i,j;
Result.Empty(); // 清楚结果
for(i=0; i < S.GetLength()/2; i++) // 将字符串两个字母一组进行处理
{
j = ((BYTE)S.GetAt(2*i)-65)*26;
j += (BYTE)S.GetAt(2*i+1)-65;
str="1"; // 设置str长度为1
str.SetAt(0, j);
Result+=str; // 追加字符,还原字符串
}
S=Result; // 保存中间结果
for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
{
Result.SetAt(i, (BYTE)S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
Key = ((BYTE)S.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
}
return Result;
}
渔夫4797
2003-12-10
打赏
举报
回复
请问yanw0212(),我怎么给分给你?
渔夫4797
2003-12-10
打赏
举报
回复
非常感谢诸位!特别是yanw0212()!
yanw0212
2003-12-05
打赏
举报
回复
1.在对话框的OnInitDialog() 中
BOOL CAdminisLogin::OnInitDialog()
{
CDialog::OnInitDialog();
::SetFocus(m_combobox.m_hWnd);
m_combobox.DeleteString(0);
sql.Empty();
sql = "SELECT LoginName FROM t_UserInfo WHERE UserTypeID=0 AND EnableFlag<>0";
if(!m_pDb.IsOpen())
{
if(m_pDb.Open(strConnection))
{
m_pRs.Close();
m_pRs = CADORecordset(&m_pDb);
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示", 0 | MB_ICONERROR );
::EnableWindow(GetDlgItem(IDOK)->m_hWnd,false);
return false;
}
}
if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
if( !m_pRs.GetFieldValue(0,LoginName) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}// 结束数据库查询
m_combobox.AddString(LoginName);
sql.Empty();
sql = "SELECT LoginName,LoginPWD ,UserTypeID FROM t_UserInfo WHERE EnableFlag<>0 AND UserTypeID<>0";
if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
if( !m_pRs.GetFieldValue(0,LoginName) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
if( !m_pRs.GetFieldValue(1,LoginPWD) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
if( !m_pRs.GetFieldValue(2,UserTypeID) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
m_combobox.AddString(LoginName);
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}// 结束数据库查询
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
2 。当用户添入了登陆名和密码后,点击登陆按钮
void CAdminisLogin::OnOK()
{
UpdateData(true);
static int count = 1;
if( m_LoginName.IsEmpty() )
{
::MessageBox(NULL,"登录名不能为空,请重新输入!","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
return;
}
bool havedata = false;
sql.Empty();
sql = "SELECT LoginPWD,UserID FROM t_UserInfo WHERE EnableFlag<>0 AND LoginName='";
sql += m_LoginName;
sql += "'";
if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
havedata = true;
if( !m_pRs.GetFieldValue(0,m_dbpassword) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}
if( !m_pRs.GetFieldValue(1,m_dbuserid) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}// 结束数据库查询
if(!havedata)
{
if (count >= 3)
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
PostQuitMessage(WM_QUIT);
}
else
{
::MessageBox(NULL,"登录名无效,不能登录","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
}
count ++;
return;
}
else
{
m_password.MakeUpper();
m_dbpassword.MakeUpper();
if((m_password == m_dbpassword) )
{
AdminisName.Empty();
AdminisName = m_LoginName;
AdminisID = 0;
AdminisID = m_dbuserid;
CString LogID;
LogID.Empty();
LogID.Format("%d",m_dbuserid) ;
sql.Empty();
sql = "INSERT INTO t_UserLog(UserID,LoginName,SystemFunction,HappenTime,UserAction,Description ) VALUES( ";
sql += LogID ;
sql += ",'";
sql += m_LoginName;
sql += "' ,'BasicManager', GETDATE(),'Login', '用户登录' )";
if ( !m_pDb.IsOpen() )
{
if ( !m_pDb.Open() )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示", 0 | MB_ICONERROR );
}
}
m_pDb.Execute(sql);
CDialog::OnOK();
}
else
{
if (count >= 3)
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
PostQuitMessage(WM_QUIT);
}
else
{
::MessageBox(NULL,"登录密码错误,不能登录","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
}
count ++;
return;
}
}
m_pRs.Close();
m_pDb.Close();
}
arvid_gs
2003-12-02
打赏
举报
回复
?
lifengli
2003-12-02
打赏
举报
回复
用数据查找的功能
bohut
2003-12-02
打赏
举报
回复
做一个对话框,放置你的几个editbox,至于你的密码可以存放在文件中也可以放在数据库中。
好看的登陆界面LOGIN
可以做一些网站用到的登陆界面,后台。也可以作为后台的界面。HTML静态的页面,直接转换成所需的页面。
仿QQ概念版登陆界面,酷狗魔方,C# winForm .Net 2.0 源码
仿QQ概念版登陆界面,酷狗魔方,C# winForm .Net 2.0 界面特效 源码。 可以把Winform设计成像WPF一样。 仿QQ概念版登陆界面:云和叶子是动态的。启动和关闭有仿照QQ的渐变透明的动态效果。 酷狗魔方:4个角有淡入...
后台登陆界面+后台管理界面(html版)
后台登陆界面 后台管理界面 全html板
漂亮的html登陆界面
浅蓝色漂亮的html登陆界面 PSD与HTML
HTML5+CSS3 精美登陆界面源码
3个很精美的登陆界面,全都是用HTML5+CSS3开发的,所以可能不适合低版本IE浏览器。大家可以下来看看,做的超级漂亮的。
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章