本类共有 867 篇文章,今日更新 0

不用Cookies实现的session

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 17:39:40 | 浏览: 人次 ]


  首先,不能有多个sessionID,那样URL会变得很长。关掉浏览器,或丢了sessionID参数,session也就没用了,除非每次都在URL后面留着sessionID参数。暂时不考虑这个问题,把存活期屏蔽。 

第二,由于每个访问只有一个sessionID,可能存在多个session共用一个sessionID,因此数据结构有所变化。 

第三,要在页面建立时重构所有要使用到session的url,我不知道用asp如何操作url的重构,所以只能用一个函数来重构url以实现这样的功能。 

<!--#include file = "conn.asp"--> 
<SCRIPT LANGUAGE=jscript RUNAT=Server>  
/********************************************************** 
* Author: David 
* blog:  [url]http://blog.iyi.cn/david[/url] 
* Email: [email]davidnick@126.com[/email] 
* QQ:  76522970 
***********************************************************/ 
update(); 
var sessionTimeOut = 10; //how many seconds will a default session keep alive 
/********************************************************** 
* function setSession(sessionName, sessionValue) 
* sessionName: the name of your session 
* sessionValue: the value of your session 
***********************************************************/ 
function setSession(sessionName, sessionValue){ 
var rndNum = Math.round(Math.random()*100000000); 
var sessionID = new String(Request.queryString("MYSESSION")); 
var createTime = new Date().getTime(); 
var conn = new Conn(); 
conn.getConn(); 
if(sessionID == "undefined" || sessionID == ""){ 
  var queryString = new String(Request.serverVariables("QUERY_STRING")); 
  var URI = Request.serverVariables("URL"); 
  sessionID = new String(rndNum); 
  if(queryString == "undefined" || queryString == ""){ 
   queryString = "MYSESSION=" + sessionID; 
  }else{ 
   queryString += "&MYSESSION=" + sessionID; 
  } 
  var sql = "insert into [session] (sessionID,sessionName,sessionValue,sessionExpires,createTime) values (’" + rndNum + "’,’" + sessionName + "’,’" + sessionValue + "’,0," + createTime + ")"; 
  conn.execute(sql); 
  conn.close(); 
  Response.Status="301 Moved Permanently"; 
  Response.AddHeader("Location",URI + "?" + queryString); 
  Response.end(); 
}else{ 
  var sql = "select * from [session] where sessionID = ’" + sessionID + "’ and sessionName = ’" + sessionName + "’"; 
  var rs = Server.CreateObject("adodb.recordset"); 
  rs.open(sql,conn.conn,1,3); 
  if(rs.recordcount){ 
   rs("sessionValue") = sessionValue; 
   rs("createTime") = createTime; 
  }else{ 
   rs.addNew; 
   rs("sessionID") = sessionID; 
   rs("sessionName") = sessionName; 
   rs("sessionValue") = sessionValue; 
   rs("sessionExpires") = 0; 
   rs("createTime") = createTime; 
  } 
  rs.update; 
  rs.close(); 
  conn.close(); 


/********************************************************** 
* function getSession(sessionName) 
* sessionName: the name of your session 
***********************************************************/ 
function getSession(sessionName){ 
var sessionID = new String(Request.queryString("MYSESSION")); 
if(sessionID != "undefined" && sessionID != ""){ 
  var conn = new Conn(); 
  conn.getConn(); 
  var sql = "select * from [session] where sessionID = ’" + sessionID + "’ and sessionName = ’" + sessionName + "’"; 
  var rs = Server.CreateObject("adodb.recordset"); 
  rs.open(sql,conn.conn,1,1); 
  if(rs.recordcount){ 
   return rs("sessionValue"); 
  }else{ 
   Response.cookies("MYSESSION" + sessionName) = ""; 
   Response.cookies("MYSESSION" + sessionName).Expires = (new Date()).toLocaleString(); 
   return ’’; 
  } 
  rs.close(); 
  conn.close(); 
}else{ 
  return ’’; 


/********************************************************** 
* function cleanUp() 
* use this function to clear up the overdue session data 
***********************************************************/ 
function cleanUp(){ 
var nowTime = new Date().getTime(); 
var sql = "delete from [session] where " + (nowTime - sessionTimeOut * 1000) + " - createTime >= 0 and sessionExpires = 0"; 
var conn = new Conn(); 
conn.getConn(); 
conn.execute(sql); 
conn.close(); 

/********************************************************** 
* function update() 
* use this function to update the session state 
***********************************************************/ 
function update(){ 
var sessionID = new String(Request.queryString("MYSESSION")); 
if(sessionID == "undefined" || sessionID == ""){ 
  return; 
}else{ 
  var createTime = new Date().getTime(); 
  var conn = new Conn(); 
  conn.getConn(); 
  var sql = "update [session] set createTime = " + createTime + " where sessionID = ’" + sessionID + "’"; 
  conn.execute(sql); 
  conn.close(); 


/********************************************************** 
* function parseUrl(url) 
* use this function to create the url if the session has been set 
* if you want to use session in the next page, you must use this function 
* url the url you want to use session 
***********************************************************/ 
function parseUrl(url){ 
var sessionID = new String(Request.queryString("MYSESSION")); 
if(sessionID != "undefined" && sessionID != ""){ 
  var re = new RegExp("\\?","g"); 
  var p = re.exec(url); 
  if(re.lastIndex){ 
   url += "&MYSESSION=" + sessionID; 
  }else{ 
   url += "?MYSESSION=" + sessionID; 
  } 

return(url); 

setSession(’session 0’,’this will Expires after the browser closed’,0); 
cleanUp(); 
Response.write("<a href=\""&nb

[1] [2] 下一页

广告位