ECSHOP搬家恢复数据提示ecs_sessions不存在的解决方法

合集下载

ecshop缓存常见问题

ecshop缓存常见问题

Ecshop缓存常见问题
ECSHOP开发中心()
在近期客户反映网站的缓存问题很严重,客户网站的商品数量达到了5000多个,缓存带来的垃圾文件大约要占600M左右甚至更多。

下面我们要了解缓存文件是我们网站根目录下的哪个文件,根目录下temp为存放缓存文件。

下面就说说遇到的问题
客户网站首页提示
1、/temp/caches/f/index_40F756F0.php
in D:\wwwroot\ECShop\includes\cls_template.php on line 200
2、Warning: file_put_contents includes\cls_template.php on line 198
这就是缓存文件造成出现问题有几种
引起此问题的原因:
1.数据库已经满了
2.相应目录(temp)具有可读写的权限。

解决方法:
1.增大服务器空间。

2.清理缓存目录、清空ecs_states表(delete from ecs_states;),目的都是为了增大可用空间。

3.还有些用户经常备份数据库,这样会造成data目录下的文件占用空间。

建议用户备份数据库后将备份文件保存到本地,然后将服务器上的备份文件清除。

4.赋予相应的目录(temp)为可读写的权限。

【ECSHOP开发中心】。

修复Ecshop密码找回功能漏洞详解

修复Ecshop密码找回功能漏洞详解

修复Ecshop密码找回功能漏洞详解秦皇岛商之翼旗下ECSHOP开发中心()Ecshop提供了密码找回功能,但是整个密码找回流程中存在一些设计上的安全隐患, Ecshop程序使用了MD5不可逆加密算法,但是计算密文的生成元素都有可以很轻易地被黑客拿到/* if (md5($adminid . $password) <> $code) 1. $adminid: 黑客显式指定2. $password: 暴力枚举*/2. 对重复失败次数没有做限制1. 漏洞触发条件HTTP Package Repeater2 漏洞影响范围1. ecshop2.7.22. ecshop 2.7.33. 漏洞代码分析admin/get_password.php/* 验证新密码,更新管理员密码*/elseif (!empty($_POST['action']) && $_POST['action'] == 'reset_pwd'){$new_password = isset($_POST['password']) ? trim($_POST['password']) : ''; $adminid = isset($_POST['adminid']) ? intval($_POST['adminid']) : 0; $code = isset($_POST['code']) ? trim($_POST['code']) : '';if (empty($new_password) || empty($code) || $adminid == 0){ecs_header("Location: privilege.php?act=login\n");exit;}/* 以用户的原密码,与code的值匹配*/$sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'";$password = $db->getOne($sql);/*这里是漏洞的关键1. $adminid:黑客想要爆破攻击重置密码的对象2. $password:黑客通过密码暴力枚举3. $code:黑客可以在本地使用相同的算法进行计算得到*/if (md5($adminid . $password) <> $code){//此链接不合法$link[0]['text'] = $_LANG['back'];$link[0]['href'] = 'privilege.php?act=login';sys_msg($_LANG['code_param_error'], 0, $link);}4. 防御方法这个漏洞属于密码学的抗穷举设计缺陷,要对这个漏洞进行修复,同时要能保证对原有的业务进行平滑兼容,我们可以从以下几个方面去思考1. 增加密钥空间,提供攻击者的攻击成本:容易实现2. 改变加密算法,间接地提高了密钥空间:需要对原有旧的密码进行全量地升级,改造成本大admin/get_password.php/* 以用户的原密码,与code的值匹配*/$sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'";$password = $db->getOne($sql);if (md5($adminid . $password) <> $code){//此链接不合法$link[0]['text'] = $_LANG['back'];$link[0]['href'] = 'privilege.php?act=login';sys_msg($_LANG['code_param_error'], 0, $link);}//更新管理员的密码/*这里是pathc code的关键代码中增加了随机数的盐,这极大地增加了黑客爆破的密钥空间,提供了攻击成本*/$ec_salt=rand(1,9999);$sql = "UPDATE " .$ecs->table('admin_user'). "SET password ='".md5(md5($new_password).$ec_salt)."',`ec_salt`='$ec_salt' "."WHERE user_id = '$adminid'";【ECSHOP开发中心】。

iframe session 丢失解决的方法

iframe session 丢失解决的方法

iframe session 丢失解决的方法iframe中的session丢失是一个常见的问题,尤其在跨域使用iframe时。

下面是一些解决该问题的方法:1. 使用cookieless="true":在中,将sessionState元素的cookieless属性设置为"true"。

这样,将不会使用cookie来存储session ID,而是将session ID存储在URL中。

2. 使用代替Session:当在iframe中访问session时,可以使用代替Session来获取session对象。

例如,将代码`Session["Username"]`改为`["Username"]`。

3. 配置CORS:如果iframe和主页面来自不同的域,需要配置CORS(跨源资源共享)来允许跨域请求。

在中,可以通过设置响应头来实现CORS。

例如,添加以下代码到:```xml<httpProtocol><customHeaders><add name="Access-Control-Allow-Origin" value="" /><add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" /><add name="Access-Control-Allow-Headers" value="Content-Type" /></customHeaders></httpProtocol>```4. 禁用浏览器安全机制:某些浏览器安全机制可能会阻止跨域请求,导致iframe中的session丢失。

解决weblogic_session丢失

解决weblogic_session丢失

经过实验,果然是因为session id的原因,特写在blog中备份
பைடு நூலகம்
解决办法如下:两个web使用不同的sessionid来标识,如第一个web使用jsessionid1,第二个web使用 jsessionid2就可以了。 直接在每个web程序下配置weblogic.xml
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>JSESSIONID1</param-value>
</session-param>
</session-descriptor>
即将第一个web app的session id标识改为jsessionid1,同理将第二个改为jsessionid2 ,这样你再来做你 的就不会有问题了。
最近遇到一个很郁闷的问题:
我在同一个weblogic下创建了两个domain,部署了两个系统A和B。其中系统A有一个按钮可打开系统B,并自动登录。通过A系统打开B系统后session里面写了一下方法:
这主要是sessionid在影响,你登录第一个web时默认使用jsessionid来记录session id的,放在cookie里 或者url后面,登录第二个时还是默认使用的jsessionid来做的,这样第二个会覆盖第一个jsessionid,所 以表现为session丢失了。

Asp.net网站Session丢失,会话过期,Cookie过期的原因及解决方案

Asp.net网站Session丢失,会话过期,Cookie过期的原因及解决方案

网站Session 丢失,会话过期,Cookie 过期的原因及解决方案 2010/7/12 网站 Session 丢失,会话过期,Cookie 过期 的原因及解决方案有朋友问: 我开发的 站点在本地运行时 很正常,可是发布到了生产环境之后,不能正常运行,经常出错,检查原因时发现是因为 Session 和Cookie 经常无缘无故丢失。

从表面上看这是个比较奇怪的问题,难道生产环境和本地环境有什么不同吗?答案是: 确实有点不一样。

中的 cookie 和 session 都是要加密的,而加密时要用到MachineKey , 如果你的 的web.config 中没有加上 MachineKey ,当然你发布到生产环境之后就会遇到上面的问题,加上 MachineKey 配置项就不会出错了。

MachineKey 的配置如下:<system.web> <machineKeyvalidationKey="A40C4D37C52C1ACCC5C7B9224274DDB3E5C4D1618B4509C7"decryptionKey="6053A3FE59AC5E83163D09D6E36CFC8FFEBE81E67EE55122" validation="SHA1" /></system.web>12 3 在 这样的Web 应用中,Session 是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以Session 过期时间设置是很有必要的。

在 中如何设置Session 的过期时间呢,很简单,修改web.config 配4 5 6 7 置。

具体修改方法如下,在web.config 中进行如下配置 <system.web><sessionState mode="InProc" timeout="30"/></system.web>在这里指的是Session 过期时间为30分钟。

Session失效的原因汇总及解决丢失办法

Session失效的原因汇总及解决丢失办法

Session失效的原因汇总及解决丢失办法昨天去GTSC⾯试,有⾯试官问我关于Session丢失之后怎么查的问题,说⽼实话,开发到现在很少碰到这样的情况,唯⼀想到的就是Session超时,还有就是做Session读写⽇志,发觉⾯试官听了之后不是很满意,汗!不管怎么说,是个学习的好机会,今天抽空查了⼀下⽹上关于这些问题的处理⽅法,总结⼀下,希望对⼤家有所帮助。

顺便提⼀下asp中Session的⼯作原理:asp的Session是具有进程依赖性的。

ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。

所以当inetinfo.exe进程崩溃时,这些信息也就丢失。

另外,重起或者关闭IIS服务都会造成信息的丢失。

Session的实现的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进⾏状态控制,由于Session本⾝就是⽤来做状态维护的,因此⽤HttpModule做Session是再合适不过了。

原因1:bin⽬录中的⽂件被改写,有⼀种机制,为了保证dll重新编译之后,系统正常运⾏,它会重新启动⼀次⽹站进程,这时就会导致Session丢失,所以如果有access数据库位于bin⽬录,或者有其他⽂件被系统改写,就会导致Session丢失原因2:⽂件夹选项中,如果没有打开“在单独的进程中打开⽂件夹窗⼝”,⼀旦新建⼀个窗⼝,系统可能认为是新的Session会话,⽽⽆法访问原来的Session,所以需要打开该选项,否则会导致Session丢失参考配置:原因3:似乎⼤部分的Session丢失是客户端引起的,所以要从客户端下⼿,看看cookie有没有打开原因4:Session的时间设置是不是有问题,会不会因为超时造成丢失原因5:IE中的cookie数量限制(每个域20个cookie)可能导致session丢失原因6:使⽤web garden模式,且使⽤了InProc mode作为保存session的⽅式解决丢失的经验1. 判断是不是原因1造成的,可以在每次刷新页⾯的时候,跟踪bin中某个⽂件的修改时间2. 做Session读写⽇志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页⾯、当前函数、函数中的第⼏次Session操作,这样找丢失的原因会⽅便很多3. 如果允许的话,建议使⽤state server或sql server保存session,这样不容易丢失4. 在global.asa中加⼊代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。

session失效的几种方法

session失效的几种方法

session失效的几种方法随着互联网的快速发展,越来越多的应用程序开始采用session来保存用户的状态信息。

然而,session失效是一个常见的问题,它可能会导致用户的信息丢失,给用户带来不好的体验。

本文将介绍session失效的几种方法,并提出一些解决方案。

一、session超时session的超时是指session在一定时间内没有活动就会自动失效。

这个时间可以通过服务器配置文件中的session.timeout参数进行设置。

一旦超过了这个时间,session就会自动失效。

这种情况通常是由于用户长时间不进行操作导致的,比如长时间没有点击或者提交表单等。

解决方法:1. 增加session的超时时间:可以通过修改服务器配置文件来增加session的超时时间,使得用户可以有更长时间来进行操作。

2. 提示用户:当用户的session即将失效时,可以通过弹窗或者提醒条等方式来提醒用户及时操作,从而避免session的失效。

二、服务器重启服务器在进行内存清理、系统维护、升级等操作时会导致session的失效。

这种情况通常是由服务器端的操作导致的,当服务器重启后,session会被清空,用户的状态信息也会丢失。

解决方法:1. 集裙部署:可以采用集裙部署的方式来避免单点故障,当一个服务器重启时,其他服务器可以继续提供服务,从而避免影响用户。

2. 定时备份:可以采用定时备份session的方式,将用户的状态信息保存到数据库中或者文件中,当服务器重启后可以将备份的session 信息还原,从而避免用户的信息丢失。

三、浏览器限制浏览器的限制也会导致session的失效,比如用户关闭浏览器、清除cookie、切换浏览器等操作都会导致session的失效。

这种情况通常是由于用户端的操作导致的,当用户进行了以上操作后,session就会失效。

解决方法:1. 使用cookie:可以将session的标识符保存到cookie中,当用户关闭浏览器后再次打开时,可以通过cookie来重新获取session,从而避免session的失效。

PHP与AJAX之间解决跨域上传文件与session丢失问题

PHP与AJAX之间解决跨域上传文件与session丢失问题

PHP与AJAX之间解决跨域上传文件与session丢失问题1.跨域问题1.1 方法一:使用jsonp(非官方)跨域数据交互协议,但是,这里存在一个局限性,就是不能上传文件(这里不详细说明,下面主要讲解方法二)1.2 方法二:直接使用json数据格式。

1.2.1 简单的允许所有域名对跨域到本站(不安全,不建议),只需在php文件中设置一下header:header('Access-Control-Allow-Origin: *');// *是表示允许所有域名进行跨域1.2.2 只允许指定域名进行跨域,那么,程序就相对复杂一点了,但是比较安全和灵活:$domainAccess = array(//设置语序跨域的域名'','','');$HTTP_REFERER = explode('/', $_SERVER["HTTP_REFERER"]);//获取发起请求的源站url,并分割成数组,$HTTP_REFERER[0]=>’http(s)’,$HTTP_REFERER[1]=>’’,$HTTP_REFERER[2]=>域名(如),$HTTP_REFERER[3…]=>uriif(in_array($HTTP_REFERER[2], $domainAccess)){//匹配域名$serverHost = $HTTP_REFERER[0].'//'.$HTTP_REFERER[2];header("Access-Control-Allow-Origin: ".$serverHost);}2.session丢失问题2.1 首先实现session共享要实现session共享,有很多方法,可以使用关系型数据库共享(会增大数据库负载压力);可以使用redis、memcache等非关系型数据库共享(负载能力强,推荐),这些共享操作相对简单,只要在php.ini中找到session部分和php程序中配置好redis链接,php.ini配置如下(redis为例):session.save_handler = redis//类型session.save_path="tcp://:123456?auth=adcbd"//存储或共享路径session.cookie_domain =""//域名(下的所有子域名)2.2 ajax程序中添加如下代码(红色部分):var msg = new FormData($( "#form_chat_image" )[0]);//获取含有文件的form表单数据,form表单必须声明为:enctype="multipart/form-data"$.ajax({type: "post",url: CHAT_SITE_URL+'/index.php?act=web_chat&op=send_pic',xhrFields: {withCredentials: true},crossDomain: true,data: msg,async: true,cache: false,dataType:'json',contentType: false,processData: false,success: function(data) {//成功},error: function(xhr) {//失败}});2.3 php中添加header如下(红色部分):if(in_array($HTTP_REFERER[2], $domainAccess)){//匹配域名$serverHost = $HTTP_REFERER[0].'//'.$HTTP_REFERER[2];header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Origin: ".$serverHost);}到这里,ajax跨域上传文件的并防止session丢失的问题就解决啦!。

解决php项目中session失效的方法

解决php项目中session失效的方法

解决php项目中session失效的方法今天下班坐班车,快到站的时候,上家公司的leader发了个qq 给我,意思是救火,下车后回来在电脑上详细问了下,leader的描述如下[cpp]view plain copyprint.jpg"tracking-ad" data-mod="popu_167">1.这个地址你帮我看下为啥上传完试卷发布任务设置答题卡的时候 session就没了因为这个项目一开始后台都是我一人开发的,因此很快就找到了问题所在。

流程为:用户通过js组件上传试卷,在上传试卷的方法中通过session存储刚刚上传的试卷详细信息,如名称、后缀、存入资源表的ID等,上传成功后,再点击页面上的其他选项,如学校、年级、难易度等,最后点击提交,在提交处理的方法里,一开始便判断刚刚上传的session值是否存在,不存在便跳到试卷首页。

我在此方法中打印了$_SESSION,没有值,奇怪了,以前还是好好的。

于是我问了下,啥时候开始的,leader说下午快下班时,老师打电话说上传试卷设置答题卡不成功,老跳转。

接着又问了下,动服务器环境了么,leader 说没有。

既然出现了问题,那就解决问题呗。

正好这段时间在看《PHP核心技术与最佳实践》一书,里面就对session和cookie有详细的描述,同时也加深了我对二者的理解。

于是我先打开php的配置文件,找到session相关的配置项,发现session.save_path为/data2/session,我记得以前都是设置为/data1/session的,怎么变了。

于是我退出来去看看此路径,一开始我以为是该目录权限不够,后来一看,压根就没有该目录,难怪每个session不会跨页面。

于是新建文件,设置权限,再上传,一切又恢复正常了。

写到这,我也想再唠叨下session相关的技术点。

session是存储在服务器端的,默认是以文件方式存储的(session.save_handler = files)。

思迅常见问题收集

思迅常见问题收集

思迅常见问题收集1. 专卖V8打开时提示错误:系统未安装ADO!请MDAC_TYP.EXE安装弄个批处理运行下面这些。

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll" /sregsvr32 "C:\Program Files\Common Files\System\ado\msadomd.dll" /sregsvr32 "C:\Program Files\Common Files\System\ado\msador15.dll" /sregsvr32 "C:\Program Files\Common Files\System\ado\msadox.dll" /sregsvr32 "C:\Program Files\Common Files\System\ado\msadrh15.dll" /sregsvr32 "C:\Program Files\Common Files\System\ado\msjro.dll" /s复制上面的语句到 TXT文本把扩展名 .TXT 改成 .bat 双击重新登录软件即可2.连接不上数据库思迅软件之不能连接数据库(转)个人认为不能连接到数据库应从以下几个方面着手1.在SQL数据库中不存在思迅软件的数据库(这个很容易排除,就不啰嗦了)2.思迅软件数据库置疑等引起的解决方法可以参考/?s=%E7%BD%AE%E7%96%913.SQL server其本身的安装或设置有问题,现结合网上查到的资料及个人总结的几个原因及解决方法描述如下,一."SQL Server 不存在或访问被拒绝"这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.一般说来,有以下几种可能性:1,SQL Server名称或IP地址拼写有误(修改数据库连接方法开始--运行--输入 regedit HKEY_LOCAL_MACHINE\SOFTWARE\siss\ 下找到 ServerName 修改连接的服务器地址)2,服务器端网络配置有误3,客户端网络配置有误首先,检查网络物理连接 ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址>不成功,说明物理连接有故障,这时候要检查硬件设备,如网卡,HUB(友情提示:HUB接电脑做跳线线序一头是A类,一头是B类),交换机,路由器等;还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,因此在检查连接故障的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口.如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败则说明名字解析有故障,这时候要检查 DNS 服务是否正常。

phpsession目录找不到的错误Errorsession

phpsession目录找不到的错误Errorsession

phpsession目录找不到的错误Errorsession问题来源今天安装一个应用,发现提示Error session_start(): open(/var/lib/php/session error,估计是找不到写不了啥啥啥。

于是我就去该路径下去看看,果然没有这个路径,就直接在php 路径下创建了session目录,问题得以解决。

SESSION 的数据保存在哪里呢?当然是在服务器端,但不是保存在内存中,而是保存在文件或数据库中。

默认情况下,php.ini 中设置的SESSION 保存方式是files (session.save_handler = files),即使用读写文件的方式保存SESSION 数据,而SESSION 文件保存的目录由session.save_path 指定,文件名以sess_ 为前缀,后跟SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。

文件中的数据即是序列化之后的 SESSION 数据了。

如果访问量大,可能产生的 SESSION 文件会比较多,这时可以设置分级目录进行 SESSION 文件的保存,效率会提高很多,设置方法为:session.save_path="N;/save_path",N 为分级的级数,save_path 为开始目录。

当写入SESSION 数据的时候,PHP 会获取到客户端的SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。

读取 SESSION 数据是也是类似的操作流程,对读出来的数据需要进行解序列化,生成相应的 SESSION 变量。

Refs•session_save_path•Error session_start(): open(/var/lib/php/session error•runtime config•cacti PHP 少见错误PHP Warning: session_start():open(/var/lib/php/session/ •php session 总结。

Session丢失问题解决方法一

Session丢失问题解决方法一

Session丢失问题解决⽅法⼀Session丢失已经是⼀种习以为常的问题了,在⾃⼰也了解⼀些如何解决的问题,但是也⼀直没有机会去⽤,现在由于新的项⽬要在B/S下开发,所以不得不让我考虑Session的问题。

解决session丢失的问题有两种⽅法:1)将session保存在⼀台sate server中。

2)将session保存在sql server中。

我们使⽤的数据库是oracle,不想再装⼀个数据库,所以⽤了第⼀种⽅法。

⾸先根据⽹上查的资料对webconfig⽂件中session部分进⾏修改。

如下:<sessionStatemode="StateServer"cookieless="false"timeout="240"stateConnectionString="tcpip=10.164.222.122:42424"stateNetworkTimeout="14400"/><machineKeyvalidationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"decryptionKey="5FC88DFC24EA123C"validation="SHA1"/>然后再在10.164.222.122 这台电脑上的 state server 服务启动这样基本上就⾏了。

体验⼀下。

我⽤了⼀个测试程序,在3个⼩时以后session仍然可⽤,更绝的是我的电脑都重起了,在其它电脑上打开的⽹页()中session仍然可⽤。

⼀番体验以后,感觉还真不错。

.NET Framework 常规参考<sessionState> 元素为当前应⽤程序配置会话状态设置。

Session过期问题及其解决办法

Session过期问题及其解决办法

1.目录删除及重命名操作 :如果你发现session突然无理由的丢失,而当你认真的检查代码并且排除其它常规可能丢失的可能性时,你可能会像我一样,几乎要接近崩溃~!后来发现问题出在我用代码创建一个临时目录然后删除临时目录的删除操作上。

现在和大家分享下:希望对碰到类似钉子的朋友有用。

说白了session丢失实质就是:应用程序重起!应用程序什么时候自动重起呢?请参考:Anand在发表的文章也就是说 会监视应用程序目录,一但有被监视的动作发生(比如:修改了config、重命名目录等)应用程序就会自动重起当然这时你的session一定丢失了。

如果避免不了这种操作(如:重命名目录);这里我们可以用cookie存信息或存到数据库去;注意:除了以上列出的英文条件外。

目录的删除操作一定丢失session。

的内部机制对待目录有点像个守财奴,它死守着目录,你创建它不会管(往里加),一但创建他就会监视该目录,若你要删除或重命名它的(动它的目录),它就发生重起了。

2.Frame中关于Session丢失在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。

因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState mode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false"timeout="40"/>把cookieless="false"改成"true"就可以了。

模态窗口中打开新窗口的session丢失

模态窗口中打开新窗口的session丢失

模态窗口中打开新窗口的session丢失前几天给客户培训,系统出现一个以前没注意到的问题,找了好久没找到解决方法,今天灵机一动,找到了问题所在,网上找到一篇网友的文章,和我情况完全相同,而且还有网友解决方法,在此谢谢这位网友,给了我不少启示。

文章如下:一直被这个问题郁闷:在窗口A中使用showModalDialog()打开了一个新的模态窗口B。

然后在B窗口中进行一些业务操作,最后还需要根据业务操作打印一些表单,结果此时在B中调用open()方法就会出现session丢失的现象,提示用户重新登陆。

两天来一直没头苍蝇一样不停的试验各种方法。

如果在这个窗口中采用打开非模态对话框的打开方法showModelessDialog()就没有任何问题,但是直接使用open()方法就是不能达到想要的效果。

在网上不停的google,到各大bbs寻找解答,提供的都是最简单的应用。

好不容易找到一篇文章,其中提到session对象的有效范围,却也没有具体提到我遇到的问题:IE中:有效的窗品包括1.Session对象只在建立Session对象的窗口中有效。

2.在建立Session对象的窗口中新开链接的窗口无效的窗口包括1.直接启动IE浏览器的窗口2.不是在建立Session对象的窗口中新开链接的窗口考虑只在建立session对象的窗口中有效,于是就在子窗口中重新使用session.setAttribute()方法,以为如此就可以成功,结果还是不行,郁闷。

早上起来突然来了灵感,既然子窗口中造成了session丢失,在父窗口中是无论如何还存在着session的变量的,我可以不必在子窗口中重新设置session变量,而可以直接调用父窗口的javascript函数open()方法可能会到目的吧。

不管如何先试试,结果果然如此。

很多时候问题就是这样的,想要偷懒,于是不自己钻研,到处寻求解答,最后还是得靠自己来搞定。

Session失效的处理办法

Session失效的处理办法

Session失效的处理办法Session失效的处理办法最近最一个电子商务网站,发现了好多问题,不过还好都顺利解决了,关于session的问题记录如下,以便日后查阅,同时也希望能给网友们带来帮助,本文内容并非完全出自本人,是本人对网络上的一些处理方法的整理。

检查是否超时,默认是20分钟,设置的方法是Session.TimeOut=30;或者您可以设置到更高,这个数值的单位是分钟,大家视情况而定。

检查代码有无Session.Abandon()之类的。

一旦调用Abandon 方法,当前会话不再有效,同时会启动新的会话。

中使用了ACCESS数据库,而且数据库是放在bin目录中的。

解决方法是不要放会更新的文件在BIN目录中。

从同一个页面传到另一个页面才能延续同一个session,也就是说session不可跨域,同时客户端一关闭浏览器或一关闭浏览页Session也消失了,再次访问时又会创建新的Session 但还会在服务器上存活等待超时,只是调用不到了. 另外比如在第一个页面置了SESSION,然后REDIRECT去第二个页面。

解决方法是在REDIRECT 中设置endResponse为FALSE。

Iframe丢Session的原因:session是客户端和服务器端共同认证的,客户端存储标识,通过附加在页面的头发送给服务器端,服务器进行识别,如果符合条件就可以获得相应的session操作权。

但如果页面是来自框架的,而框架的父页和框架不是一个站点的话,客户端默认是禁止向页面附加头信息的,这样服务器端就无法识别客户端框架里面的页面,自然不能操作Session。

解决办法: Response.AddHeader("P3P", "CP=CAO PSA OUR")' 或者在Window服务中将 State Service 启动。

有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。

casajax登录方式跨域时session丢失问题解决

casajax登录方式跨域时session丢失问题解决

casajax登录方式跨域时session丢失问题解决
理 CSDN博客第三期云计算最佳博主评选
cas ajax登录方式跨域时session丢失问题解决
分类: CAS 2012-08-18 10:09 1251人阅读评论(2) 收藏举报sessionajax浏览器iframeie服务器
问题:在ie浏览器下,域名A通过iframe的方式把登录信息post 到域名为B的cas服务器上,经过debug发现A获取loginTicket时的sessionId和post过去时的sessionid不一致。

只有ie浏览器有这个问题,火狐谷歌浏览器正常。

原因:查资料知道IE6/IE7 支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,火狐和谷歌目前还不支持P3P安全特性,所以它们不存在此问题了。

解决方法:在第一次获取loginTicket时在response中设置p3p 声明,如下:
[java] view plaincopy
1.response.setHeader("P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ECSHOP搬家恢复数据提示ecs_sessions不存在的解决方法ECSHOP开发中心()
ECSHOP网店程序在搬迁空间或恢复备份或更换域名后,经常会出现以下错误提示:
MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => Insert INTO `test`.`ecs_sessions` (sesskey, expiry, ip, data) VALUES (’8a3107988bf98cc9a5079fdfbe766120′, ’1278128679′, ’127.0.0.1′, ‘a:0:{}’) ) [2] => Array ( [error] => Table ‘test.ecs_sessions’doesn’t exist ) [3] => Array ( [errno] => 1146 ) ) ,
这是因为你当初通过ECSHOP后台备份时,少了两个表,一个是ecs_sessions ,一个是ecs_sessions_data。

既然是少了两张表,那么我们想法给他重新建立就OK了呗。

下面讲下方法:
分别将下面两段SQL语句复制粘贴到“ECSHOP后台》数据库管理》SQL查询”的输入框里提交即可。

CREATE TABLE IF NOT EXISTS `ecs_sessions` (
`sesskey` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`expiry` int(10) unsigned NOT NULL DEFAULT '0',
`userid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`adminid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`ip` char(15) NOT NULL DEFAULT '',
`user_name` varchar(60) NOT NULL,
`user_rank` tinyint(3) NOT NULL,
`discount` decimal(3,2) NOT NULL,
`email` varchar(60) NOT NULL,
`data` char(255) NOT NULL DEFAULT '',
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ecs_sessions_data` (
`sesskey` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `expiry` int(10) unsigned NOT NULL DEFAULT '0',
`data` longtext NOT NULL,
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
注意:
1)此例使用的是默认表前缀ecs_ ,如果你的表前缀不是ecs_ 请自行修改后再提交
2)此例使用的是UTF8字符集如果你使用的是GBK字符集也请自行修改后,再提交。

【ECSHOP开发中心】。

相关文档
最新文档