將用戶名,密碼,用戶類型存在數(shù)據(jù)庫中,登陸時比較輸入的值是否與數(shù)據(jù)庫相同即可。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供平?jīng)鼍W(wǎng)站建設(shè)、平?jīng)鲎鼍W(wǎng)站、平?jīng)鼍W(wǎng)站設(shè)計、平?jīng)鼍W(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、平?jīng)銎髽I(yè)網(wǎng)站模板建站服務(wù),10余年平?jīng)鲎鼍W(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
基礎(chǔ)類庫:
Imports Microsoft.VisualBasic
'執(zhí)行Access語句的封裝類。
Public Class AccessExecClass
Private conn As Data.OleDb.OleDbConnection
Private cmd As Data.OleDb.OleDbCommand
'創(chuàng)建類對象,并連接到數(shù)據(jù)庫。
Sub New()
If openAccess Then
Else
msgbox("open Access Fail.")
End If
End Sub
'創(chuàng)建類對象,并連接到數(shù)據(jù)庫。 '輸入帶目錄名稱的數(shù)據(jù)庫文件名稱:dbFileName,例如:“\DB數(shù)據(jù)庫\企業(yè)數(shù)據(jù)庫.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("\數(shù)據(jù)庫.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
'關(guān)閉數(shù)據(jù)庫。
Sub CloseAccess()
cmd = Nothing
conn.Close()
End Sub
'執(zhí)行一條Access語句,執(zhí)行成功就返回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
'返回讀取到的數(shù)據(jù),注意是用地址傳遞方式返回
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
'沒有輸入時,不能進(jìn)行登陸
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 = "不能輸入非法字符,將強(qiáng)制清空"
TextBox2.Text = ""
Else
Dim pw As New MD5EnCode(13, 19) ' '2次加密
sql = "select 權(quán)限組號,ID , 密碼 from 編輯人數(shù)據(jù) where 編輯姓名='" + TextBox1.Text + "'"
Dim aa As Data.OleDb.OleDbDataReader '= cmd.ExecuteReader
aDB.ExecAccessString(sql, aa)
If aa.Read() Then
'密碼正確()
'sql = aa(2)'需要特別注意:只能單向解密,不能直接轉(zhuǎn)換
mypw = pw.simDeCode(pw.simDeCode(aa(2)))
If TextBox2.Text = mypw Then
Session("LOGIN_Name") = TextBox1.Text '設(shè)置登錄后的用戶名稱
Session("Login_Group") = aa(0) 'cmd.ExecuteScalar '設(shè)置登錄后的權(quán)限級別
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
您可以調(diào)用Me.Hide()方法隱藏Login窗體。
另外,如果您使用新建工程后的那個默認(rèn)窗體作為Login窗體,那么您只能隱藏這個窗體或修改程序的啟動對象。因為VB.net默認(rèn)將創(chuàng)建工程時的那個默認(rèn)窗體作為程序的主窗體,應(yīng)用程序的主消息循環(huán)就建立在這個窗體上,如果您關(guān)閉這個窗體,那么所有的消息泵都會停止,應(yīng)用程序就會退出。
我比較推薦您將Main窗體設(shè)為應(yīng)用程序的主窗體,這樣可以減小資源的占用,當(dāng)Login完成后就可以釋放Login窗體了。
另外,vb.net中的me變量相當(dāng)于C語言中的this指針,它指向當(dāng)前類。
推薦一個網(wǎng)站,這個網(wǎng)站有很多的教程,而且基本都是附部分代碼,可能有一些對您有用的信息。
一般登陸網(wǎng)站時候首先要打開一個網(wǎng)頁對吧?
那首先要 GET 一個網(wǎng)址。GetResponse后,得到的流就是這個頁面的源碼。
源碼里肯定會包含這個驗證碼的提問段(可能是個圖片的網(wǎng)址,也可能是個 5+5=? 之類的字符串之類的),可以分析一下這段代碼出現(xiàn)的位置,讓程序自動尋找。找到這個圖片的網(wǎng)址,把這個圖片 GET 下來,然后,就是orc識別或你人工識別咯。。。
代碼如下:
/// summary
/// 連接到窗體:通過密碼保護(hù)信息找回密碼!
/// /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
/// 當(dāng)該窗體加載時從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:\面向?qū)ο?-C#練習(xí)\通訊錄\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時執(zhí)行從數(shù)據(jù)庫讀取密碼的事件
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("數(shù)據(jù)庫操作出錯!");
}
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; // 標(biāo)識是否為合法用戶
string message = ""; // 如果登錄失敗,顯示的消息提示
// 如果驗證通過,就顯示相應(yīng)的用戶窗體,并將當(dāng)前窗體設(shè)為不可見
if (ValidateInput())
{
// 調(diào)用用戶驗證方法
isValidUser = ValidateUser(cmbUserName.Text, txtpwd.Text, ref message);
// 如果是合法用戶,顯示相應(yīng)的窗體
if (isValidUser)
{
if (check == true)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"E:\面向?qū)ο?-C#練習(xí)\通訊錄\address list\address list\user.xml");//(@"E:\面向?qū)ο?-C#練習(xí)\通訊錄\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:\面向?qū)ο?-C#練習(xí)\通訊錄\address list\address list\user.xml");
//doc.Load (@"E:\面向?qū)ο?-C#練習(xí)\通訊錄\address list\address list\user.xml");
}
}
// 如果登錄失敗,顯示相應(yīng)的消息
else
{
MessageBox.Show(message, "記住密碼失??!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
}
/// summary
/// 驗證當(dāng)前combox中內(nèi)容是否已經(jīng)存在于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文件內(nèi)容如下:?xml version="1.0" encoding="utf-8"?
person
user
網(wǎng)頁題目:vb.net登錄驗證 net 登錄驗證
文章起源:http://muchs.cn/article40/hgspeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站設(shè)計公司、網(wǎng)站排名、外貿(mào)建站、品牌網(wǎng)站建設(shè)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)