再谈 session 与 cookies

2006年6月15日 | 分类: ASP | 标签:

关于session 与 cookies  都是被嚼乱的话题了,但我想很多人与我一样对session 都曾有过误解,事实上一般情况下 session 的应用需要cookies支持!

所以很多程序运用session,如果客户端不能接受cookies ,就不能正常运行,所以有时有必要先检查下客户端是否能写入cookies,
这里给出几种方法:(都是网上找的,非我原创)

1,用javascript
<script type=”text/javascript”>
var cookieEnabled=(navigator.cookieEnabled)? true : false
//判断cookie是否开启

//如果浏览器不是ie4+或ns6+
if (typeof navigator.cookieEnabled==”undefined” && !cookieEnabled){
document.cookie=”testcookie”
cookieEnabled=(document.cookie==”testcookie”)? true : false
document.cookie=”" //erase dummy value
}

if (cookieEnabled) {
alert(“cookies is open”)
}
//if cookies are enabled on client’s browser
//do whatever

</script>
2,在两页之间,请求一个SessionID在第一页,传递它到下一页。与这一页请求到的SessionID比较。相同说明客户端浏览器接受Cookies;不同则不接受。
比如你可以在第一页中放一个(hidden field),并把SessionID写入它。提交后,从页面数据中取出SessionID.像这样:

<form name=”Form1″ method=”post” action=”sessions2.asp”>
UserName:<input name=”username”><br>
Password:<input name=”userpassword”>
<input type=”hidden” name=”theSessionID” value=”<%=Session.SessionID%>”><br>
<input type=”submit” value=”Submit”>
</form>

在第二页中我们来判断SessionID是否相同。
<%
dim theSessionID
theSessionID = Request.Form(“theSessionID”)
If theSessionID = Session.SessionID Then
“当二者相等时,则cookie功能开启
Response.Write “Cookie已开启”
Else
“若二者相等时,则cookie功能关闭
Response.Write “Cookie没有开启!”
End If
%>
3,首先在一个页面里写入一个cookie,如:
<%
Response.Cookies(“status”)=”onoroff”
%>
在第二页里读出此cookie:
<%
if Request.Cookies(“status”)=”" then
“当cookies(“status”)里没有值时,则cookie功能没有开启
Response.Write “Cookie没有开启!”
else
“当cookies(“status”)里有值时,则cookie功能开启
Response.Write “Cookie已开启”
end if
%>
如果你想不管客户端不管能不能写入cookies 都能正常访问你的网站,那只好传递参数,我的做法双管齐下
如: url = http://yourdomain/xx.asp?r = ,x,y
<%

if isempty(request.cookies(“cfnib”))  or  request.cookies(“cfnib”) = “” then ‘先判断是否存在cookies
        response.cookies(“cfnib”)(“right”) = request.QueryString(“r”)
        response.cookies(“cfnib”).Domain = “219.238.77.180″
        ‘response.cookies(“cfnib”).Path = “/web/cfnib”
        response.cookies(“cfnib”).Expires = Date+365
end if 

session(“right”) = request.Cookies(“cfnib”)(“right”) ‘读取cookies 赋值给session(“right”)

if isnull(session(“right”)) or isempty(session(“right”)) or session(“right”) = “” then ‘如果不能写入cookies ,直接赋值
     session(“right”) = request.QueryString(“r”)
  end if
‘response.write session(“right”)
‘response.end
%>

目前还没有任何评论.
您必须在 登录 后才能发布评论.