【求助】VB6.0制作登录系统

li_yuan_fang( 2016-04-14 05:49:25
觉得以前做的登录系统太不安全了,于是,就去学了点数据库编程
数据库叫做xiaowenwen,数据表叫做User 有两个项,一个是UserName,一个是PassWord

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Strcn As String
Strcn = "Driver={MySQL ODBC 3.51 Diver};Server=这是IP;Database=xiaowenwen;Uid=xiaowenwen;PWD=xiaowenwen;Option=3;stmt=Set Names GB2312"
cn.Open Strcn
cn.CursorLocation = adUseClient
rs.Open "User", cn, adOpenKeyset, adLockOptimistic
可是,我想读取数据表里的UserName和PassWord,这里要怎么写
rs.Close
cn.Close

我有两个Text,Text1.Text是用户名(UserName),Text2.Text是密码(PassWord),我要怎么才能利用数据表来做登录系统,求完整代码
...全文
1353 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_yuan_fang( 2016-04-16
  • 打赏
  • 举报
回复
引用 11 楼 u013249970 的回复:
Strcn = "Driver={MySQL ODBC 3.51 Diver};Server=这是IP;Database=xiaowenwen;Uid=xiaowenwen;PWD=xiaowenwen;Option=3;stmt=Set Names GB2312" 上面这个字符串是连接数据库的语句,你的数据库是什么数据库,是MySQL数据库吗,而且你已经创建了 ODBC 数据源?否则上面这个语句是连接不了数据库的。连接数据库根据数据库不同,连接语句的字符串是不同的。 至于登录界面一般通用的就是检测数据表用户名字段是否存在,然后再检测密码是否正确,一般使用二个判断语句,而且是嵌套的。 下面用Access数据库给你一般比较通用的登录代码,供你参考,数据库名称、数据表名称、字段名称与你的一样,你的数据库不同你仅仅修改数据库连接过程即可。
Dim cn As New ADODB.Connection, RS As New ADODB.Recordset
' 注意添加ADO的数据库连接引用
Private Sub Command1_Click()
’非常标准的系统登录单击过程,这种登录安全性非常好
If Text1.Text = "" Then
    MsgBox "你没有输入用户名!", 16, "请输入!"
    Exit Sub
End If
If Text2.Text = "" Then
    MsgBox "你没有输入用户密码!", 16, "请输入!"
    Exit Sub
End If
Call AAA(cn)
RS.Open "Select * from User Where UserName='" & Text1.Text & "'", cn, 2, 2
If RS.EOF = True Then   '判断用户名对不对
    MsgBox "你的用户名不正确!", 16, "请重新输入!"
    Text1.Text = ""
    Text2.Text = ""
Else
    If RS!PassWord = Text2.Text Then   '判断密码是否正确
        Form2.Show   '登录成功,进入下一个窗体
    Else
        MsgBox "你的用户密码不正确!", 16, "请重新输入!"
        Text2.Text = ""
    End If
End If
RS.Clone
cn.Close
End Sub
'---------------------------------------------------------------------------------------------------------------------
Private Sub AAA(cn)
'Access数据库连接过程,你的数据库不同修改这个字符串就可以了
cn.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\xiaowenwen.mdb"
cn.Open
End Sub
是MySQL,但数据源怎么弄
li_yuan_fang( 2016-04-15
  • 打赏
  • 举报
回复
引用 5 楼 qq_23284487 的回复:
[quote=引用 1 楼 caozhy 的回复:] rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
顺便问一下,注册系统怎么弄
rs.Open "select count(*) as X from `User` where `username`= text1.Text, cn, adOpenKeyset, adLockOptimistic
if rs!X = 0 then
这是注册的语句
End If
这样可以么?[/quote] 注:在注册窗口上,Text1.Text是用户名,Text2.Text是密码,过程是这样的,先判断用户名是否存在,如果不存在就写入数据
li_yuan_fang( 2016-04-15
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
顺便问一下,注册系统怎么弄
rs.Open "select count(*) as X from `User` where `username`= text1.Text, cn, adOpenKeyset, adLockOptimistic
if rs!X = 0 then
这是注册的语句
End If
[b这样可以么?][/b]
li_yuan_fang( 2016-04-15
  • 打赏
  • 举报
回复
引用 3 楼 of123 的回复:
[quote=引用 1 楼 caozhy 的回复:] rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
这是非常不安全的查询方式。 代码的本意是,如果用户输入 'Bob' 和 '1234',代码就得到如下 SQL 语句: SELECT COUNT(*) AS x FROM [User] WHERE username = 'Bob' AND password = '1234' 但是,一个作弊者可以在密码框中输入 ' OR '0' = '0,用户名不必关心,甚至可以不输入,得到的 SQL 语句如下: SELECT COUNT(*) AS x FROM [User] WHERE username = '' AND password = '' OR '0' = '0' 因为 '0' = '0' 永远为真,所以查询一定可以得到记录。也就是说登录成功! 安全的做法,是仅针对用户名查询其密码,然后在代码中对密码进行比对。 [/quote] 那怎么办
ZHRXJR 2016-04-15
  • 打赏
  • 举报
回复
Strcn = "Driver={MySQL ODBC 3.51 Diver};Server=这是IP;Database=xiaowenwen;Uid=xiaowenwen;PWD=xiaowenwen;Option=3;stmt=Set Names GB2312" 上面这个字符串是连接数据库的语句,你的数据库是什么数据库,是MySQL数据库吗,而且你已经创建了 ODBC 数据源?否则上面这个语句是连接不了数据库的。连接数据库根据数据库不同,连接语句的字符串是不同的。 至于登录界面一般通用的就是检测数据表用户名字段是否存在,然后再检测密码是否正确,一般使用二个判断语句,而且是嵌套的。 下面用Access数据库给你一般比较通用的登录代码,供你参考,数据库名称、数据表名称、字段名称与你的一样,你的数据库不同你仅仅修改数据库连接过程即可。
Dim cn As New ADODB.Connection, RS As New ADODB.Recordset
' 注意添加ADO的数据库连接引用
Private Sub Command1_Click()
’非常标准的系统登录单击过程,这种登录安全性非常好
If Text1.Text = "" Then
    MsgBox "你没有输入用户名!", 16, "请输入!"
    Exit Sub
End If
If Text2.Text = "" Then
    MsgBox "你没有输入用户密码!", 16, "请输入!"
    Exit Sub
End If
Call AAA(cn)
RS.Open "Select * from User Where UserName='" & Text1.Text & "'", cn, 2, 2
If RS.EOF = True Then   '判断用户名对不对
    MsgBox "你的用户名不正确!", 16, "请重新输入!"
    Text1.Text = ""
    Text2.Text = ""
Else
    If RS!PassWord = Text2.Text Then   '判断密码是否正确
        Form2.Show   '登录成功,进入下一个窗体
    Else
        MsgBox "你的用户密码不正确!", 16, "请重新输入!"
        Text2.Text = ""
    End If
End If
RS.Clone
cn.Close
End Sub
'---------------------------------------------------------------------------------------------------------------------
Private Sub AAA(cn)
'Access数据库连接过程,你的数据库不同修改这个字符串就可以了
cn.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);dbQ=" & App.Path & "\xiaowenwen.mdb"
cn.Open
End Sub
of123 2016-04-15
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
这是非常不安全的查询方式。 代码的本意是,如果用户输入 'Bob' 和 '1234',代码就得到如下 SQL 语句: SELECT COUNT(*) AS x FROM [User] WHERE username = 'Bob' AND password = '1234' 但是,一个作弊者可以在密码框中输入 ' OR '0' = '0,用户名不必关心,甚至可以不输入,得到的 SQL 语句如下: SELECT COUNT(*) AS x FROM [User] WHERE username = '' AND password = '' OR '0' = '0' 因为 '0' = '0' 永远为真,所以查询一定可以得到记录。也就是说登录成功! 安全的做法,是仅针对用户名查询其密码,然后在代码中对密码进行比对。
li_yuan_fang( 2016-04-15
  • 打赏
  • 举报
回复
引用 9 楼 caozhy 的回复:
你安装mysql的驱动了么
装了,可是好像还是不行 我的MySQL服务器版本是5.73的 有没有什么办法可以让用户一键安装前置么?还有怎么弄注册
vansoft 2016-04-15
  • 打赏
  • 举报
回复
先学一下SQL语法吧。 select, update, insert, delete 四个最基本的。
threenewbee 2016-04-15
  • 打赏
  • 举报
回复
你安装mysql的驱动了么
li_yuan_fang( 2016-04-15
  • 打赏
  • 举报
回复
引用 7 楼 caozhy 的回复:
[quote=引用 4 楼 qq_23284487 的回复:]
[quote=引用 3 楼 of123 的回复:]
[quote=引用 1 楼 caozhy 的回复:]
rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic
if rs!X = 0 then
登陆失败
else
登陆成功
end if


这是非常不安全的查询方式。

代码的本意是,如果用户输入 'Bob' 和 '1234',代码就得到如下 SQL 语句:
SELECT COUNT(*) AS x FROM [User] WHERE username = 'Bob' AND password = '1234'

但是,一个作弊者可以在密码框中输入 ' OR '0' = '0,用户名不必关心,甚至可以不输入,得到的 SQL 语句如下:
SELECT COUNT(*) AS x FROM [User] WHERE username = '' AND password = '' OR '0' = '0'

因为 '0' = '0' 永远为真,所以查询一定可以得到记录。也就是说登录成功!

安全的做法,是仅针对用户名查询其密码,然后在代码中对密码进行比对。
[/quote]
那怎么办[/quote]

用我的代码就可以。作为初学者,你不用考虑sql注入的问题,那是比较高级的话题,[/quote]

注册怎么弄
还有,这个错误怎么解决

threenewbee 2016-04-15
  • 打赏
  • 举报
回复
引用 4 楼 qq_23284487 的回复:
[quote=引用 3 楼 of123 的回复:] [quote=引用 1 楼 caozhy 的回复:] rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
这是非常不安全的查询方式。 代码的本意是,如果用户输入 'Bob' 和 '1234',代码就得到如下 SQL 语句: SELECT COUNT(*) AS x FROM [User] WHERE username = 'Bob' AND password = '1234' 但是,一个作弊者可以在密码框中输入 ' OR '0' = '0,用户名不必关心,甚至可以不输入,得到的 SQL 语句如下: SELECT COUNT(*) AS x FROM [User] WHERE username = '' AND password = '' OR '0' = '0' 因为 '0' = '0' 永远为真,所以查询一定可以得到记录。也就是说登录成功! 安全的做法,是仅针对用户名查询其密码,然后在代码中对密码进行比对。 [/quote] 那怎么办[/quote] 用我的代码就可以。作为初学者,你不用考虑sql注入的问题,那是比较高级的话题,
threenewbee 2016-04-14
  • 打赏
  • 举报
回复
rs.Open "select count(*) as X from `User` where `username`='" & text1.Text & "' and `password`='" & text2.Text & "'", cn, adOpenKeyset, adLockOptimistic if rs!X = 0 then 登陆失败 else 登陆成功 end if
大家好,2009年9月份注册以来,在论坛上学到了许多东西,得得许多会员和版主及管理的帮助和关爱,真的很感谢大家,正是因为,正是因为大家都是无私且乐于助人,分享自己的宝贵的技术和心得,且使我对EXCEL充满着激情,在我的脑海里总是浮现: 1. 我是ExcelHome论坛的会员,我很荣幸 2. 工作空余时间我会情不自禁来到ExcelHome之家,看看家,学习一些别人的的心得与帮助一些新会员 3. 那里有太多太多的宝贝,有意外的收获和惊喜(众里寻“她”千百度;踏破铁鞋无觅处,在EH得来全不费功夫) 4. 遇到问题我会在论坛和百度找,再找不到我就会发贴提问。呵呵,这里一定会得到帮助的 正是因为这些,因为大家的无私,所以我也不能自私,呵呵,分享一下打造“自己2010选项卡”,2010选项卡的修改比2003版的菜单修改复杂了,希望能帮到一些对这方面感兴趣的朋友,由于水平够,里面有许多不足,欢迎大家指正 ,呵呵,我八婆了一大堆,进入主题 对于Excel2007和2010,你注意到的第一件事可能就是它新外观,沿用多年的菜单与工具栏的用户界面已被抛弃了,取而代之的是选项卡和功能区的新界面,现在我们一步步来制作一个自己的选项卡(首先申明,有些代码和方法来自ExcelHome论坛和网络,在这里谢谢这些提供代码的朋友 ,俗话说的好“前人载树,后人乘凉”,并非个人所写) 第一步:在桌面上创建一个名为customUI的文件夹 第二步:步骤2 打开记事本,在其中复制下面的XML代码:文件名为CustomUI.xml,编码为UTF-8 保存到桌面customUI文件夹中

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧