HTTP和HTTPS跨域共享session解决办法 05 September 2011 10:16 Monday by 小屋 浏览(663)

HTTP、HTTPS协议下session共享解决cookie失效 的办法:(也许不是最好的,但是实用)

原理就是把session id设置到本地的cookie,

$currentSessionID = session_id();
session_id($currentSessionID );

简单事例代码:

(HTTP)

session_start(); 
$currentSessionID = session_id(); 
$_SESSION['testvariable'] = 'Session worked'; 
$secureServerDomain = 'www.sjolzy.cn'; 
$securePagePath = '/safePages/securePage.php' 
echo '<a href="https://' . $secureServerDomain . $securePagePath . '?session="' . $currentSessionID . '">点击这里跳转到HTTPS 协议下</a>';

阅读全文>>

thinkphp关于session的使用总结 24 August 2010 9:27 Tuesday by小屋 浏览(4739)

ThinkPHP官方的说明文档

  1. start 启 动session
  2. pause 暂 停session
  3. clear 清除session
  4. destroy 销毁session
  5. get 获取session
  6. getLocal 获取私有session
  7. set 设置session
  8. setLocal 设置私有session
  9. name 获取或者设置session_name
  10. is_set 是否设置session
  11. is_setLocal 是否设置私有session
  12. id 获取或者设置session_id
  13. path 获取或者设置session_save_path
  14. setExpire 设置session过期时 间
  15. setCookieDomain 设置 有效域名
  16. setCallback 设置Session 对象反序列化时候的回调函数

最常用的操作方法示例:

代码:

// 获 取Session变量

  1. // 检测 Session变量是否存在
  2. Session::is_set('name');
  3.  
  4. // 给Session变 量赋值
  5.  
  6. Session::set('name','value');
  7.  

阅读全文>>

PHP 实现多服务器共享 SESSION 数据 12 January 2010 21:33 Tuesday by小屋 浏览(1037)

 

PHP 实现多服务器共享 SESSION 数据

肖理达 (KrazyNio AT hotmail.com), 2005.09.13, 转载请注明出处



一、问题起源

稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个模块中都是可以登录使用的。各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可。但还存在一个问题,就是用户在这个服务器登录之后,进入另一个服务器的别的模块时,仍然需要重新登录,这就是一次登录,全部通行的问题,映射到技术上,其实就是各个服务器之间如何实现共享 SESSION 数据的问题。

二、PHP SESSION 的工作原理
 

在解决问题之前,先来了解一下 PHP SESSION 的工作原理。在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ID(此 ID 可通过函数 session_id() 获取/设置)。SESSION ID 可以通过两种方式保留在客户端,使得请求不同的页面时,PHP 程序可以获知客户端的 SESSION ID;

阅读全文>>

多Web服务器之间共享Session的解决方案 12 January 2010 21:30 Tuesday by小屋 浏览(1460)

 很多开发中涉及到用户的Session验证很保留的问题,这个问题比较有意思,总结了几种方案,只供参考。


[  问题提出 ]

为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N>=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务器的时候能够继续使用客户的Session?
(以下描述方案只是针对Linux/Unix + Apache + Mysql + PHP的开发架构,当然,也可以扩展到其他平台。)

 

[  问题解决方案 ]

既然我们的问题已经摆在面前了,那么就要从技术角度去解决问题,给我们的客户更好的体验,总结了几个方案。

阅读全文>>

jsp serlet session——request.getSession() 08 December 2009 14:22 Tuesday by小屋 浏览(1800)

在HttpServlet中,HttpSession对象通常在request.getSession(true)方法调用时才创建。 HttpSession的使用是有代价的,需要占用服务器资源,本着能不浪费就不浪费的原则,我希望系统中的session都在掌握之中,在需要创建时由 我们的代码明确创建。但是最近在开发中发现,新的session对象经常在意料之外出现,究竟是谁在创建session呢?

    最常见的地方是错误的使用request.getSession()函数,通常在action中检查是否有某个变量/标记存放在session中。这个场景中可能出现没有session存在的情况,正常的判断应该是这样:

Java代码
  1. private boolean ifFlagExistInSession(HttpServletRequest request) {  
  2.     HttpSession session = request.getSession(false);  
  3.     if (session != null) {  
  4.         if (session.getAttribute("flagName")  != null) {  
  5.             return true;  
  6.         }  
  7.     }  
  8.     return false;  
  9. }  


 

    而下面的写法,则可能会生成一个新的不在我们意图之外的session

阅读全文>>