将用户名,密码,用户类型存在数据库中,登陆时比较输入的值是否与数据库相同即可。
创新互联建站专业为企业提供平凉网站建设、平凉做网站、平凉网站设计、平凉网站制作等企业网站建设、网页设计与制作、平凉企业网站模板建站服务,10余年平凉做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
基础类库:
Imports Microsoft.VisualBasic
'执行Access语句的封装类。
Public Class AccessExecClass
Private conn As Data.OleDb.OleDbConnection
Private cmd As Data.OleDb.OleDbCommand
'创建类对象,并连接到数据库。
Sub New()
If openAccess Then
Else
msgbox("open Access Fail.")
End If
End Sub
'创建类对象,并连接到数据库。 '输入带目录名称的数据库文件名称:dbFileName,例如:“\DB数据库\企业数据库.aspx”
Sub New(ByVal dbFileName As String)
If OpenAccess(dbFileName) Then
Else
MsgBox("open Access Fail.")
End If
End Sub
Function OpenAccess() As Boolean
OpenAccess = False
'检验用户的帐号密码是否正确
Dim provider As String '= ConfigurationManager.ConnectionStrings("ConnectionString").ProviderName
provider = "Provider=Microsoft.Jet.OLEDB.4.0"
Dim database As String
database = "Data Source=" System.Web.HttpContext.Current.Server.MapPath("\数据库.aspx") ";Persist Security Info=true"
conn = New Data.OleDb.OleDbConnection(provider ";" database)
conn.Open()
OpenAccess = True
End Function
Function OpenAccess(ByVal dbFileName As String) As Boolean
OpenAccess = False
'检验用户的帐号密码是否正确
Dim provider As String '= ConfigurationManager.ConnectionStrings("ConnectionString").ProviderName
provider = "Provider=Microsoft.Jet.OLEDB.4.0"
Dim database As String
database = "Data Source=" System.Web.HttpContext.Current.Server.MapPath(dbFileName) ";Persist Security Info=true"
conn = New Data.OleDb.OleDbConnection(provider ";" database)
conn.Open()
OpenAccess = True
End Function
'关闭数据库。
Sub CloseAccess()
cmd = Nothing
conn.Close()
End Sub
'执行一条Access语句,执行成功就返回True。
Function ExecAccessString(ByVal AccessStr As String) As Boolean
cmd = New Data.OleDb.OleDbCommand(AccessStr, conn)
cmd.ExecuteNonQuery()
'Dim aa As Data.OleDb.OleDbDataReader = cmd.ExecuteReader
ExecAccessString = True
End Function
'返回读取到的数据,注意是用地址传递方式返回
Sub ExecAccessString(ByVal AccessStr As String, ByRef AccessReader As Data.OleDb.OleDbDataReader)
cmd = New Data.OleDb.OleDbCommand(AccessStr, conn)
cmd.ExecuteNonQuery()
AccessReader = cmd.ExecuteReader
End Sub
End Class
登陆代码:
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
Dim wl As New WebLog '用户登录记录开始,仅对购买了Log 功能的用户,才开放此功能,否则不会实际记录Log
Dim sql As String
Dim aDB As New AccessExecClass
Dim mypw As String
Label1.Visible = False
Label2.Visible = False
Label3.Visible = False
Label4.Visible = False
'没有输入时,不能进行登陆
If TextBox1.Text = "" Then
Label1.Visible = True
Return
End If
If TextBox2.Text = "" Then
Label2.Visible = True
Return
End If
If TextBox3.Text = "" Then
Label3.Visible = True
Return
End If
If TextBox3.Text = TextBox4.Text Then
Else
Label3.Visible = True
Return
End If
Dim iRnd As Integer = Rnd(10) * 100
TextBox3.Text = ""
TextBox4.Text = iRnd.ToString
'Dim iRnd As Integer = Rnd(10) * 100
'注意:此处需要加入防止注入分析,包含'的肯定是特别语句,讲拒绝.
If TextBox1.Text.IndexOf("'") 0 Or TextBox2.Text.IndexOf("'") 0 Then
TextBox1.Text = "不能输入非法字符,将强制清空"
TextBox2.Text = ""
Else
Dim pw As New MD5EnCode(13, 19) ' '2次加密
sql = "select 权限组号,ID , 密码 from 编辑人数据 where 编辑姓名='" + TextBox1.Text + "'"
Dim aa As Data.OleDb.OleDbDataReader '= cmd.ExecuteReader
aDB.ExecAccessString(sql, aa)
If aa.Read() Then
'密码正确()
'sql = aa(2)'需要特别注意:只能单向解密,不能直接转换
mypw = pw.simDeCode(pw.simDeCode(aa(2)))
If TextBox2.Text = mypw Then
Session("LOGIN_Name") = TextBox1.Text '设置登录后的用户名称
Session("Login_Group") = aa(0) 'cmd.ExecuteScalar '设置登录后的权限级别
Session("Login_ID") = aa(1) 'cmd.ToString
'cmd = Nothing
'conn.Close()
Call wl.NewLog("登录", "管理员成功登录")
Response.Redirect("../WebManages/Default.ASPX")
Else
'密码错误()
sql = sql.Replace("'", "【单引号】")
sql = sql.Replace(",", "【逗号】")
Call wl.NewLog("登录", "管理员失败的登录", TextBox1.Text, sql.Replace("""", "【双引号】"), "")
Label4.Visible = True
End If
Else
'密码错误()
sql = sql.Replace("'", "【单引号】")
sql = sql.Replace(",", "【逗号】")
Call wl.NewLog("登录", "管理员失败的登录", TextBox1.Text, sql.Replace("""", "【双引号】"), "")
Label4.Visible = True
End If
End If
End Sub
您可以调用Me.Hide()方法隐藏Login窗体。
另外,如果您使用新建工程后的那个默认窗体作为Login窗体,那么您只能隐藏这个窗体或修改程序的启动对象。因为VB.net默认将创建工程时的那个默认窗体作为程序的主窗体,应用程序的主消息循环就建立在这个窗体上,如果您关闭这个窗体,那么所有的消息泵都会停止,应用程序就会退出。
我比较推荐您将Main窗体设为应用程序的主窗体,这样可以减小资源的占用,当Login完成后就可以释放Login窗体了。
另外,vb.net中的me变量相当于C语言中的this指针,它指向当前类。
推荐一个网站,这个网站有很多的教程,而且基本都是附部分代码,可能有一些对您有用的信息。
一般登陆网站时候首先要打开一个网页对吧?
那首先要 GET 一个网址。GetResponse后,得到的流就是这个页面的源码。
源码里肯定会包含这个验证码的提问段(可能是个图片的网址,也可能是个 5+5=? 之类的字符串之类的),可以分析一下这段代码出现的位置,让程序自动寻找。找到这个图片的网址,把这个图片 GET 下来,然后,就是orc识别或你人工识别咯。。。
代码如下:
/// summary
/// 连接到窗体:通过密码保护信息找回密码!
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void lbl_mibao_Click(object sender, EventArgs e)
{
Getbackpwd getbackpwd = new Getbackpwd();
getbackpwd.Show();
}
/// summary
/// 当该窗体加载时从xml文件中读取用户信息并加载到combox的Items中
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void Addresslist_Load(object sender, EventArgs e)
{
XmlTextReader reader = new XmlTextReader(@"E:\面向对象--C#练习\通讯录\address list\address list\user.xml");
while (reader.Read())
{
//if (reader.LocalName.Equals("Name") || reader.LocalName.Equals("Number"))
if (reader.LocalName.Equals("username"))
{
this.cmbUserName.Items.Add(reader.ReadString());
}
//if (reader.LocalName.Equals("Number"))
//{
// this.label2.Text += reader.ReadString() + "\n";\
//}
}
reader.Close();
}
/// summary
/// 保存用户名到user.xml
/// /summary
//在listcontol上更改SelectedValue时执行从数据库读取密码的事件
private void cmbUserName_SelectedValueChanged(object sender, EventArgs e)
{
string username = cmbUserName.Text.Trim();
string sql = string.Format("select pwd from Admin where Username='{0}'", username);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
txtpwd.Text = (string)dataReader["pwd"];
checkBoxpwd.Checked = true;
}
}
catch
{
MessageBox.Show("数据库操作出错!");
}
finally
{
DBHelper.connection.Close();
}
}
/// summary
/// 记住密码操作
/// /summary
/// param name="sender"/param
/// param name="e"/param
private void checkBoxpwd_Enter(object sender, EventArgs e)
{
bool check = true;
check = checkinput(cmbUserName.Text.Trim());
if ((string)cmbUserName.Text.Trim() == "")
{
MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
cmbUserName.Focus();
}
else
{
if (txtpwd.Text.Trim() == "")
{
MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtpwd.Focus();
}
else
{
bool isValidUser = false; // 标识是否为合法用户
string message = ""; // 如果登录失败,显示的消息提示
// 如果验证通过,就显示相应的用户窗体,并将当前窗体设为不可见
if (ValidateInput())
{
// 调用用户验证方法
isValidUser = ValidateUser(cmbUserName.Text, txtpwd.Text, ref message);
// 如果是合法用户,显示相应的窗体
if (isValidUser)
{
if (check == true)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"E:\面向对象--C#练习\通讯录\address list\address list\user.xml");//(@"E:\面向对象--C#练习\通讯录\address list\address list\user.xml");
XmlElement node = doc.CreateElement("user");
XmlNode xnode = (XmlNode)doc.CreateElement("username");
xnode.InnerText = cmbUserName.Text.Trim();
node.AppendChild(xnode);
doc.DocumentElement.InsertAfter(node, doc.DocumentElement.LastChild);
doc.Save(@"E:\面向对象--C#练习\通讯录\address list\address list\user.xml");
//doc.Load (@"E:\面向对象--C#练习\通讯录\address list\address list\user.xml");
}
}
// 如果登录失败,显示相应的消息
else
{
MessageBox.Show(message, "记住密码失败!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
}
/// summary
/// 验证当前combox中内容是否已经存在于xml文件中
/// /summary
/// param name="text"/param
/// returns/returns
private bool checkinput(string text)
{
int count;
bool c = true;
for (count = 0; count cmbUserName.Items.Count;count ++ )
{
if (text ==(string )cmbUserName .Items [count])
{
c=false;
}
}
return c;
}
xml文件内容如下:?xml version="1.0" encoding="utf-8"?
person
user