您的位置:首页 > Web前端 > JavaScript

Session与Cookie会话及页面传值

2013-12-17 11:25 423 查看
1、页面中传值(Get与Post、Session、Cookie、QueryString、Application、Server.Transfer)

A、Get与Post

   异同:

   一:Get为默认请求(用的网页默认编码)可能产生乱码,而Post(通过<Meta>标签自定义编码)不会产生乱码

   二:Get在传递参数时会显示在地址栏,而Post不会

   三:Get是从服务器上获取数据,post是向服务器以按钮的形式发送数据

   四:Get最大长度为1024KB,而Post则没有

   五:Get没有Post安全

   

   如何使用:

   在HTML中指定Action 与 Method属性

   Action:指定页面的提交地址,可以是绝对地址或是相对地址(推荐)

   Method:指定提交方式,有Get、Post两种,Get为默认

注:在PHP中获取Get、Post提交的数据方法:

    Get数据:$_GET["属性名"];

    Post数据:$_POST["属性名"]

    获取所有请求的值:$_REQUEST["属性名"],该方法不区分Get与Post

    Asp.net中获取Get与Post的值:

    Get形式:Response.Write(Request.QueryString["ID"].toString());

    post形式:Response.Write(Request.Form["TextBox"].ToString());

QueryString:

a、用法:用来获取客户端以Get提交的表单数据(Get为默认提交方式)

   ex:Rrquest.QueryString("UserName") '获取提交表单中的用户名

注:但表单用 Method属性设置为“Post”时,我们就用 Form获取值

    ex:<Form Runat= "Server" Method = "Post"></Form>

        Request.Form("UserName")

    

    Params属性不区分Get与Post的提交方式,避免弄错我们可以用Params

    ex:Request.Params("UserName")

Application:

a、含义:用来记录整个网站的信息以及不同浏览器端共享的变量

   例如:上站人数、在线数、意见调查、投票统计等

   Application默认的生命周期起始于Web服务器开始,终止于Web服务器关机或重启

 

b、应用:计数器(统计网站访问人数)

   ex:<Script language="VB" runat="Server">

      Sub Page_Load(Sender as Object,e as Eventargs)

      Application.Set("Counter",Application("Counter")+1)

      myCounter.Text = "您是第" & Application("Counter") & "位访客"

      End Sub

      </Script>

B、PHP篇:(Session、Cookie)

PHP中的Session会话:

a、Session的特点:

   Session会话保存于服务器,同时在客户端中生成一个相对应的SessionID(具有唯一性、随机性

   当未设置SessionID的生命周期时它保存于客户端的内存中,设置了生命周期后它就保存于客户端的硬盘中)

b、启用Session会话:

   Session_Start();

c、设置属性和值:

   $_SESSION["属性名"] = "值";

d、读取值:

   $_SESSION["属性名"]

e、关闭会话:

   Session_destroy(); //释放内存中的所有Session变量,但不删除Session文件和释放对应的SessionID

   Session_Unset(); //删除用户的Session文件,释放SessionID,变量依然保留

注:关闭Session的原则:

    先Session_unset()后Session_Destroy();

    每次调用Session时,一定要先启用Session会话;

PHP中的Cookie会话:

a、Cookie特点:

   Cookie保存在客户端,当关闭浏览器时会自动销毁

b、启用Cookie会话:

   SetCookie("名称","值",time() + N); //N为生命周期,以秒为单位

c、查找Cookie:

   $_COOKIE["名称"];

d、设置Cookie过期:

   SetCookie("名称","",time() - N); //N为过期时间,要大于设置时的时间

注:Session与Cookie会话的区别:

    a、Session会话保存于服务器,而Cookie保存在客户端

    b、Session对服务器的消耗大,能过保存数组、对象多种数据类型

    c、Session不稳定易丢失

    d、Cookie易被禁用、只能保存日期、数值、字符串等简单的数据类型

    e、Cookie稳定、消耗小

    f、他们都保存于同一文件下(C:\Documents and Settings\Administrator)

C、ASP.Net篇:(Session、Cookie)

Session 会话

a、定义或设置Session:

   Session["名称"] = 值;

   Session.Add("名称","值");

b、设置生命周期:

   Session.TimeOut = 1;(单位,分钟)

   注:系统默认的Session 与 Cookie生命周期为20分钟

c、读取值:

   Response.Write(Session["名称"].ToString());

   Response.Write(Session.SessionID);

d、清空会话:

   //清空

   Sesssion.TimeOut = 0;

   Session.Clear();

   Session.Remove All();

   //取消

   Session.Abandon();

Cookie 会话

a、定义Cookie

   Response.Cookie["名称"].Value = "值";

  

   httpCookie cookie = new HttpCookie("名称","值");

   Response.Cookies.Add(cookie);

b、设置生命周期

   Cookie.Expires = DateTime.Now.AddDays(1);//设置为一天

   Response.Cookies["名称"].Expires = DateTime.Now.AddHours(1);//设置为一小时

c、读取值

   Response.Write(Request.Cookies["名称"].Value);

   注:设置Cookie 用Response,读取用Request

d、取消会话

   Response.Cookies["名称"].Expires = DateTime.Now.AddYears(-1);

D、VB.NET篇(Session、Cookie,其实他与C#中的比较相同,有些属性是通用的)

Cookie会话:

a、设置Cookie:

   Response.Cookies.Item("Cookie名称").Values("子健名称") = "值"

   ex: '定义一个名称为“myCookie”,子健为“UserName”、“PassWord”子健值分别为“天夜”、“welcome”的Cookie

      Response.Cookies.Item("myCookie").Values("UserName") = "天夜"   

      Response.Cookies.Item("myCookie").Values("PassWord") = "welcome"

b、设置Cookie的生命周期:

   Response.Cookies.Item("myCookie").Expires = DateTime.Now.AddDays(7) '生命周期为今天开始的七天时间

c、读取Cookie的值:

   Response.Write("用户名:" & Request.Cookies("myCookie").Values("UserName"))

   Response.Write("密&bnsp;码:" & Request.Cookies("myCookie").Values("PassWord"))

注:Cookie文件保存于 C:\Documents and Settings\Administrator\Cookies

Session会话:

a、设置Session

   Session("Session名称") = "值"

   Session.Add("名称","值")

b、周期

   Session.TimeOut = 60(单位,分钟)

c、读取

   Response.Write(Session("名称").ToString());

   Response.Write(Session.SessionID);   

d、清空会话:

   //清空

   Sesssion.TimeOut = 0;

   Session.Clear();

   Session.Remove All();

   //取消(手动结束)

   Session.Abandon();

注:防止通过刷新按钮来刷新访客人数

    ex:为了以后重复使用我们将计数器程序保存为<CounterFunction.inc>

      '引用空间

      <%@ Import Namespace ="System" %>

      <%@ Import Namespace ="System.IO" %>

      <Script language="VB" Runat="Server">

       Function Counter(CounterFile as String) as Long

       '从文件读取计数器数值

        Dim objReader as New StreamReader(Server.MapPath(ConterFile))

        Counter = objReader.ReadLine()

        ogjReader.Close()

        '判断是否为新建Session对象,是将变量加1,写入文件

        If Session.IsNewSession = True Then

        Counter += 1

        Dim objWriter as New StreamWriter(Server.MapPath(CounterFile),Fasle)

        obgWriter.WriteLine(Counter)

        objWriter.Close()

        End If

       End Function    

       '此函数将计数器转换为图形计数器

        Function Img(Counter as String) as String

        Dim I as Byte

        For I = 1 to Len(Counter)

        Img = Img & "<img Src=digit" & Mdi(Counter,I,1) & ".gif"

        Next

        End Function   

       End Sub

      </Script>

      调用:

      <!-- #include File="CounterFunction.inc"-->

      <Script Language="VB" Runat="Server">

      Sub Page_Load(Sender as Object,e as Eventargs)

       myCounter.Text = "您是第" & Counter("Counter.text") & "位访客"

      End Sub

      </Script>

2、页面之间的跳转:

Js形式:(常用)

      a、Window.Open("地址"); //打开新窗口,并跳转到指定页面

      b、location.href ="地址";

         location.href("地址"); //在当前页面跳转

      c、<Body Onload = "地址"></Body>  

PHP形式:

     header(location:地址);

     注:在PHP中嵌入Js的方法(PHP输出值,echo和print)

     echo:"<Script language = \"javaScript\" type = \"text/javaScript\">";

     echo:"内容(location.href('xxxx'))";

     echo:"</Script>"   

Asp.net形式:

     a、Response.Redirect("地址"); //速度慢,有两次PostBack,可以跳转到任何地方

     b、Server.transter("地址"); //速度快,只有一次PostBack,只能在同一站点跳转

     c、Server.Execute("地址"); //一般用于页面的引用,将要跳转的页面引用到当前页面

3、页面中对话框的弹出:

JS形式(基本的):

    a、alert(""); //该对话框只有一个【确定】按钮

    b、confirm(""); //该对话框有一个【确定】和一个【取消】按钮

Asp.net形式:

    a、Response.Write("<Script>alert('');<Script/>");

    b、Response.Write("<Script>confirm('');<Script/>");

    c、ClientScript.RegisterClientScriptBlock(GetType(),"","<Script>alert('');<Script/>");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐