(一)Session
跟Cookies一樣用來存儲用戶數據
1、Session、Cookies對比
相同點:每一台電腦訪問服務器,都會是獨立的一套session或者Cookies,key值都一樣,但是內容都是不一樣的。
不同點:●Session的保存位置是保存在服務器內存上,Cookies保存在用戶硬盤上
●Session沒有持久的,在不對頁面進行任何操作的情況下,它的保存周期就是20分鍾;Cookies可以持久也可不持久,取決於用戶
2、Session重點
Session不要濫用,也不要不用,濫用可能會造成服務器內容溢出,不用會造成資源浪費,因為內存中的數據提取及交互是最快的
3、用法
賦值:Session["key"] = 值;
取值:string a = Session["key"];
清除: Session["key"]=null;
注意: 1、不要存大量數據在Session里 2、臨時Session取完無用后記得 = null清空它 //賦值 string s = TextBox1.Text; Session["aa"] = s; //取值 if(Session["aa"]!=null) Label1.Text=Session["aa"].tostring();
(二)cookies
簡單摘要:
在用戶電腦的硬盤上保存的一段文本
http協議包括瀏覽器,允許站點在用戶電腦上以Cookies的形式來臨時保存數據
如果沒有設置保存時間,即會話cookies時:
1、如果你20分鍾內沒有再次刷新頁面,那么此cookies就會自動刪除掉
2、當前訪問連接中斷,如關閉瀏覽器,那么cookies會自動刪除
如果設置保存時間,到時間后,cookies會自動刪除
當然,cookies的保存與否,關鍵在用戶,用戶可以手動清楚cookie。
作用:保持用戶的登陸狀態
用法:
1、獲取賬號:Response.Cookies["user"].Value = TextBox1.Text;
2、給該賬號設置登錄保持的過期時間:Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);
3、清除cookies:Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5); 只要讓數值為負即可,表示已過期幾天
//賦值 string s = TextBox1.Text; Response.Cookies["username"].Value = s; if (CheckBox1.Checked) { Response.Cookies["username"].Expires =DateTime.Now.AddDays(3);//設置Cookie的過期時間 } //取值 if (Request.Cookies["username"] != null) Label1.Text = Request.Cookies["username"].Value; Cookie
Server.Transfer("Default2.aspx);使用此方法,可以在不變動地址欄顯示的地址的情況下跳轉頁面(比如一定要用地址欄傳址但又不想讓用戶看到所傳變量時)
建立登錄Login頁面:
前台代碼:
<form id="form1" runat="server"> 用戶名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 密碼:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> <asp:CheckBox ID="CheckBox1" runat="server" /><label for="CheckBox1">記住登陸狀態7天</label><br /> <asp:Button ID="Button1" runat="server" Text="登陸" /> </form>
后台代碼:
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } void Button1_Click(object sender, EventArgs e) { //取值,數據庫查詢 bool ok = new UsersDA().Select(TextBox1.Text, TextBox2.Text); if (ok) { //若查到數據,即可以登陸成功 Response.Cookies["user"].Value = TextBox1.Text; if (CheckBox1.Checked) { //給cookies設置保存時間 Response.Cookies["user"].Expires = DateTime.Now.AddDays(7); } Response.Redirect("Main.aspx"); }
主界面Main后台代碼:
//判斷,cookies是否為空,不為空,根據cookies傳的值查詢 if (Request.Cookies["user"] != null) { Users u = new UsersDA().Select(Request.Cookies["user"].Value); Labdl.Text = u.NickName; Literal1.Text = ",歡迎你!"; } //為空,跳轉登錄頁面 else { Response.Redirect("Login.aspx"); }
有登陸就有退出登錄:
Main主界面退出登錄前台代碼:
<asp:Button ID="Btntc" runat="server" Text="退出登陸" />
后台代碼(清除cookies):
void Btntc_Click(object sender, EventArgs e) { //1清除cookies Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5); //2刷新頁面/跳到登陸頁面 Response.Redirect("Login.aspx"); }