国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET 狀態的傳遞和保存_.Net教程

2024-07-10 12:53:13
字體:
來源:轉載
供稿:網友

推薦:asp圖片防盜鏈的代碼
asp圖片防盜鏈的代碼 getimage.asp strBuffer = Request.ServerVariables(HTTP_REFERER) strBuffer = mid(strBuffer, InStr(strBuffer,.) + 1) strBuffer = left(strBuffer, InStr(strBuffer, /) - 1) FilePath = /HIDDENIMAGES/ If strBuffer = intels.net then FileP

  1,HTTP協議是無狀態的。服務器不會記住上次給瀏覽器的處理結果,如果需要上次處理結果(上次狀態)就需要瀏覽器把處理結果值(上次狀態)再次給服務器。

  2,URL傳值:通過URL參數或者通過Form表單進行頁面件的傳值 (不能做到很自由的存取和讀取,而且不安全)

  3,Cookie :①Cookie可以用來進行更加自由的數據的存取和讀取。

  ②Cookie是和站點相關的,自己域名寫的只有自己的域名才可以讀取。

  ③客戶端向服務器發送請求的時候 處理發送Form表單信息以外還會把和站點有關的所有的Cookie發送給服務器,是強制的。

  ④服務器返回的數據處理HTML數據以外,還會返回修改的Cookie,瀏覽器拿到修改后的Cookie更新到本地的Cookie

  ⑤服務器端使用Cookie案例,記住用戶名功能:

  A,設置頁面值: Response.SetCookie(new HttpCookie("UserName",username))

  B,讀取頁面值: username=Request.Cookies["UserName"].Value

  ⑥瀏覽器關閉以后Cookie的聲明周期到期,也就是Cookie的默認生命周期是瀏覽器的生命周期。可以通過設置Expires屬性設置Cookie的過期時間:Cookie.Expires=DateTime.Now.AddDays(-1)

  ⑦Cookie在客戶端是以鍵值對存在的

  4,Cookie缺點:①客戶端額可以手動清楚Cookie 所以Cookie里面存放的信息是可有可無的信息

  ②瀏覽器對 Cookie 的大小有限制,因此只有不超過 4096 字節才能保證被接受

  ③機密信息不能放到Cookie里面

  ④Cookie不能跨瀏覽器

  5,Cookie的寫和讀: A,新建CookieTest.html頁面并添加 兩個按鈕分別用于Cookie的讀和寫

  <!DOCTYPE html>

  <html xm lns="http://www.w3.org/1999/xhtml">

  <head>

  <me ta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  </head>

  <body>

  <form>

  <in put type="submit" name="Read" value="讀取Cookie" /> 

  <in put type="submit" name="Write" value="寫入Cookie" />

  <br />

  讀取出來的Cookie: $Model.CookieValue

  </form>

  </body>

  </html>

  B,建立對應的CookieTest.ashx頁面 實現Cookie的新建寫入本地以及讀取Cookie的值

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  namespace HttpNoStatus

  {

  /// <summary>

  /// HttpCookie 的摘要說明

  /// </summary>

  public class CookieTest : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/html";

  //if else 判斷是點擊的那個按鈕

  if (!string.IsNullOrEmpty(context.Request["Read"]))

  {

  if (context.Request.Cookies["Age"] != null)

  {

  HttpCookie cookie = context.Request.Cookies["Age"];

  string strValue = cookie.Value;

  var data = new { CookieValue = strValue };

  //加載模板頁面并傳遞 Cookie Value的值

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", data);

  context.Response.Write(strHtml);

  }

  else

  {

  context.Response.Write("cookie 不存在");

  }

  }

  else if (!string.IsNullOrEmpty(context.Request["Write"]))

  {

  //寫入新的Cookie

  HttpCookie acookie = new HttpCookie("Age");

  acookie.Value = "25";

  acookie.Expires = DateTime.MaxValue;

  context.Response.Cookies.Add(acookie);

  //Cookie不存在 直接加載模板頁面

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", null);

  context.Response.Write(strHtml);

  }

  else

  {

  //第一次加載頁面

  string strHtml = Common_Nvelocity.RenderHTML("CookieTest.html", null);

  context.Response.Write(strHtml);

  }

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }

  }

  6,Cookie最主要的一個功能是保存用戶的登陸名,這樣用戶在下次登陸的時候系統就可以自動填寫登陸名稱

  A,新建LoginCookie.html頁面,頁面中添加我們經常見到的 用戶名,用戶密碼,登陸

  登陸頁面第一次加載的時候,設置默認的登陸名為空,登陸成功以及再次登陸的時候系統就自動補充登陸用戶名

  <!DOCTYPE html>

  <html xm lns="http://www.w3.org/1999/xhtml">

  <head>

  <me ta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  </head>

  <body>

  <form action="LoginCookie.ashx" method="post">

  <table>

  <tr>

  <td>登陸名</td>

  <td>

  <in put type="text" name="UserName" value="$Model.LoginUser" /></td>

  </tr>

  <tr>

  <td>密碼</td>

  <td>

  <in put type="password" name="Password" /></td>

  </tr>

  <tr>

  <td>

  <in put type="submit" name="Login" value="登陸" /></td>

  <td></td>

  </tr>

  </table>

  </form>

  </body>

  </html>

  B, 新建對應的LoginCookie.ashx頁面,實現把用戶名讀取出來并寫入Cookie "ckLoginUser"

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  namespace HttpNoStatus

  {

  /// <summary>

  /// LoginCookie 的摘要說明

  /// </summary>

  public class LoginCookie : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/html";

  //加載頁面直接顯示 頁面

  if (context.Request.Form["Login"] == null)

  {

  string strHtml = "";

  var data = new { LoginUser = "" }; //登陸賬號默認為空

  //判斷Cookie是否存在,如果存在 把Cookie的值傳遞到HTML頁面,如果不存在就是默認的空

  if (context.Request.Cookies["ckLoginUser"] != null)

  {

  data = new { LoginUser = context.Request.Cookies["ckLoginUser"].Value.ToString() };

  }

  strHtml = Common_Nvelocity.RenderHTML("LoginCookie.html", data);

  context.Response.Write(strHtml);

  }

  else

  {

  //用戶登陸,保存用戶名到Cookie

  HttpCookie LoginUser = new HttpCookie("ckLoginUser");

  LoginUser.Value = context.Request.Form["UserName"];

  LoginUser.Expires = DateTime.Now.AddDays(30);

  context.Response.Cookies.Add(LoginUser);

  //加載頁面直接顯示 頁面

  string strHtml = Common_Nvelocity.RenderHTML("LoginCookie.html", new { LoginUser = context.Request.Form["UserName"] });

  context.Response.Write(strHtml);

  }

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }

  }

  7,以上方法把登陸賬號以Cookie的形式存放在客戶端,這樣每一次的請求就可以帶出用戶登陸名稱了

  有一種情況: 用戶登陸成功以后就可以訪問網站的其他所有頁面,其他頁面就需要先判斷用戶是否登陸成功。

  如果登陸成功為True放到Cookie中,這樣的客戶端就可以進行篡改把False改為True從而可以非法訪問為授權頁面了,這樣放到Cookie就不安全了。

  如果登陸成功放到服務器端,那么網站的多個頁面就可以直接讀取到這個值,而且是安全的不會被客戶端篡改的了。

分享:asp (author:killer)禁止站外提交表單的代碼
使用asp盡量減少服務器端的工作量,這樣就應該多使用javascript,把所有提交字段使用javascript或vbscript檢測后提交給服務器,這樣服務器就不必再作檢測,而在提交時可能會有人修改script從本地提交,這樣存在安全提交的問題,所以應該要求從服務器斷路徑提交,其他地

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈利县| 布拖县| 阳原县| 淳化县| 昌宁县| 兴安县| 元朗区| 襄垣县| 巩留县| 聂拉木县| 寻甸| 大埔县| 赣榆县| 台北市| 辰溪县| 新密市| 利辛县| 怀化市| 隆子县| 阜南县| 阿坝县| 晋江市| 遵义市| 锡林浩特市| 萨迦县| 湘潭县| 马龙县| 曲松县| 武穴市| 岳普湖县| 甘泉县| 宜阳县| 石泉县| 木兰县| 电白县| 瓮安县| 鄯善县| 从化市| 晋中市| 志丹县| 延吉市|