手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:api

诡异的【session丢失】和无语的【<img src="">标签】

以下发生的内容,本人没有遇到过,但既然有相应的例子,我想,或许还是会有人遇到同样的问题吧?
记录一下,如果有类似的问题,也许就是解决方法。解决方法不在原文中,是在回复中的。我也会一并贴上来
原文如下:

http://www.cnblogs.com/kyneblog/archive/2009/06/11/1500999.html
  1. 今天算是长见识了,项目发布到服务器上面了,但是客户在使用的时候发现,只要进入新增页面和修改页面。再进行操作就会自动跳转到登陆页面(我设置了 session保存用户登陆信息),而别的页面就不会出现这个问题。从下午开始找个问题,开始以为不知道只有这两个页面有问题,以为全部都是这样的问题,是IIS的设置问题。我将session的超时时间设置了3个小时,发现还是会跳转到登陆页面。也在web.config文件里面设置了超时时间。但是效果还是一样的。自己测试了一下午,发现只有新增页面和修改页面会出现这样的问题(本机测试没问题/测试服务器上测试也没问题)。经过几次实验,发现确实只有这两个页面会有问题,那就可以断定:不是IIS设置问题,也不是web.config的问题。本地调试也不出现这样的情况,没办法,只能等客户下班之后,没人用了才到正式服务器上去慢慢的调试,最后想个笨办法,将其中一个页面的.cs文件里面的代码一句一句的删掉,可没想到我都将cs文件里面的代码全部删除了,还是会出现这样的情况,我当时就纳闷了。不是事件的问题,难道是HTML页面出了问题???  
  2.   
  3. 既然耐着性子删了cs文件的代码。我就继续删!将aspx页面里面的HTML代码和JS代码也一个一个的删掉,一个一个控件删掉测试,从下午上班一直测试到晚上11点,眼睛都看花了,终于,在我将aspx页面的其中几个控件删除之后发现问题了!页面不跳转了!这下来劲了,肯定是这几个控件的原因,于是乎,我就一个一个控件还原回去,不跳转!继续还原!!当我还原到<img src="" >这个控件的时候测试,发现问题了!只要我一加上<img src="">这个标签!页面就跳转到登陆页面了。问题肯定出在这了!但是我又想不通了,为什么就这个HTML标签一加上就会出问题,这应该不关 session什么事啊,怎么会加上这个标签页面就直接跳转了呢?  
  4.   
  5.  在网上找了下资料,没找到相关的资料,后来试着将img 标签的src=""加上图片,src="imges/001.jpg" 再测试,发现页面不跳转了!!原来问题出现在这里!  
  6.   
  7. "" 为空的情况下,可能导致session丢失!跟经理说了下这个情况,他也很惊奇还没见过一个HTML标签会导致session丢失的情况,因为在本地和测试服务器上测试的时候都没这样的情况,后来猜测了下,可能是IIS的问题,可能是IIS解析的时候解析到src=""这个地方解析不了,导致程序出问题。但这只是个人猜测,正式服务器上我也没权力当时去打补丁,一个大公司的正式服务器,我要打补丁去了,那他们别的网站和系统不全当机了?所以就只要想了个办法,将src=""里面加上图片,幸好这个img标签是隐藏起来的,加了也不影响界面。呵呵。。。  
  8.   
  9. 最让人郁闷的是我测试的时候是用Symantec pcAnywhere这个软件远程连接到的正式服务器上。反应慢得可以,简直比电脑没装显卡驱动还慢...唉,不过累也累了,以后碰到这样的情况就有经验了。  
  10.   
  11. 我不知道网上有没有人碰到过跟我一样的情况;如果碰到了,希望能给你带来点灵感。哇哈哈。。。   

原文并没有解决这个问题,或者说并没有了解到问题出在哪里,虽然是用了一种很恶心的方法解决了它,但并没有发现问题的本质,而本质则由回复发现了,请看第51楼:

XML/HTML代码
  1. 我给楼主分析下  
  2.   
  3. 先说几点结论:  
  4. 1、并不是所有浏览器都会出现这种情况(IE上会出现)。  
  5. 2、要满足特定的条件才会出现这种情况(比如index/default跳转到login.aspx)。  
  6.   
  7. 再说根源:  
  8.   
  9. 根源:在于在IE下当image 标签的src为空时或图片不存在,会请求图片所在目录或根目录。而刚好index/default又跳转到login,而请求login时会清空session.  
  10.   
  11.   
  12. (上述index/default login 为假想,仅供说明用,据实际情况改变也改变)  

75楼说:

XML/HTML代码
  1. 帮你测试过,当<img src="" />时,加载或回调该页面的时候会直接调用该页面所属的目录下的Default.aspx页面  
  2.   
  3. 当目录下没有Default.aspx页面的时候可能会直接导致Session的丢失  

78楼认为:

XML/HTML代码
  1. 我曾经遇到因为<img src="">的情况下,服务器会加载两次页面,后来在网上查到信息关于img 标签中的src为空时,服务器会重新加载页面,这个img标签有时很古怪  

87楼也有同样问题:

XML/HTML代码
  1. 昨天也在為phpbb後臺增加功能時也遇到了類似的問題  
  2. 當src或href屬性為空時,IE和其他瀏覽器表現不一致  
  3. http://soido.org/blog/649  

这里还有一篇针对本文内容的测试:
http://www.cnblogs.com/yjmyzz/archive/2009/06/11/1501654.html
可以看看哦

Tags: session, img

PHP自动识别字符集并完成转码

在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。
虽然大多数转换都是在gbk和utf-8之间转,但如果不知道转换对象的编码怎么办呢?yhustc.com上就有这么一个函数safeEncoding,可以简单的识别UTF8和GBK的编码(国内,基本上也就这两种最常用吧。big5?咱们不考虑,哈哈)

原文地址为:http://www.yhustc.com/Blog/156.html
内容如下:

YBlog能接收引用通告,但是因为YBlog自己使用的是utf-8编码,如果对方的博客系统使用gb2312的编码的话,POST过来就会出现 乱码(除非对方POST前先转换编码)。在不能保证对方是否一定使用utf-8编码的情况下,自己做一个编码的检查和转换是很有必要的。写了个函数来完成 这个工作,原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英 文不管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。

如果是文件形式的编码检查,还可以直接check utf-8的BOM信息,关于这方面的东西,大家可以看看TP工具箱的编码转换功能,我在那个AppCodingSwitch类中写了比较详细的注释。

话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。文件的检查与转码,看这里 [膘叔注:这个链接已经不存在了]

php代码
  1. //识别汉字编码,因为YBlog用的是utf-8,如果引用通告发过来的是gb2312的编码的话,需要可以识别并完成编码转换  
  2. function safeEncoding($string,$outEncoding = 'UTF-8')  
  3. {  
  4.     $encoding = "UTF-8";  
  5.     for($i=0;$i<strlen($string);$i++)  
  6.     {  
  7.         if(ord($string{$i})<128)  
  8.             continue;  
  9.  
  10.         if((ord($string{$i})&224)==224)  
  11.         {  
  12.             //第一个字节判断通过  
  13.             $char = $string{++$i};  
  14.             if((ord($char)&128)==128)  
  15.             {  
  16.                 //第二个字节判断通过  
  17.                 $char = $string{++$i};  
  18.                 if((ord($char)&128)==128)  
  19.                 {  
  20.                     $encoding = "UTF-8";  
  21.                     break;  
  22.                 }  
  23.             }  
  24.         }  
  25.         if((ord($string{$i})&192)==192)  
  26.         {  
  27.             //第一个字节判断通过  
  28.             $char = $string{++$i};  
  29.             if((ord($char)&128)==128)  
  30.             {  
  31.                 //第二个字节判断通过  
  32.                 $encoding = "GB2312";  
  33.                 break;  
  34.             }  
  35.         }  
  36.     }  
  37.       
  38.     if(strtoupper($encoding) == strtoupper($outEncoding))  
  39.         return $string;  
  40.     else 
  41.         return iconv($encoding,$outEncoding,$string);  

 

 

Tags: 编码, 转换

ThinkPHP发布1.5Lite版

一大早流年就在群里说发布了Lite版本,但是我还没有欣赏一下具体的代码,好象这个版本的想法是用Yhustc那里冒出来的,因为他的Yblog就自行对ThinkPHP 1.5进行了简化只保留了常用的功能,比如:数据库只支持MYSQL(也是,这个博客程序只用MYSQL,其他的一些驱动就可有可无了)。于是流年在这个想法的基础上,花了几天时间进行了Lite的构造。(估计几天的休息时间就这么没有了吧)

官方原文:http://www.thinkphp.cn/Blog/25

发布该版本的原因是很多应用开发要求较高的性能并且不需要很多特殊的功能

Lite版本提供网站开发最需要的功能,优化性能,更适合大型项目!

[ 功能列表 ]

编译缓存
自动生成
异常处理
URL模式
语言包支持
模板主题支持
空模块和空操作
前置和后置操作
智能数据表识别
自动加载
标签库
类库导入
Vendor支持
ADSL方法
跨库操作
字段映射
URL组装
URL伪静态
原生SQL操作
多数据库连接和切换
分布式数据库支持
支持MySql和PDO
惯例配置
项目配置
动态配置
模块配置
静态缓存
动态缓存
模板引擎和扩展支持
日志处理
SQL日志
调试模式
运行时间显示
页面Trace
类库扩展
自动验证
自动完成
CURD基本
AR模式基本
连贯操作

[ 注意事项 ]
去掉了ORG类库包(自己可以增加扩展)
保留文件缓存驱动
保留内置模板引擎和PHP模板引擎驱动
查询条件只支持字符串
CURD接口和数据库接口已经更改(和标准版不兼容)
视图模型和关联操作已经去掉
模型的数据操作保留了 add save delete find query execute 增加了select方法 并做了参数的调整
去掉了自动获取数据表字段信息 改由模型自己定义或者不定义
保留运行信息和页面Trace显示
去掉了URL路由功能(该部分功能可以用空模块和空操作取代)

[ 下载Lite版本 ]

Lite版本适合对TP有一定了解的开发人员,并且有PHP开发经验和足够的扩展能力。

Tags: thinkphp, lite

MySQL 5.0系列新的社区稳定版5.0.75发布!

MySQL 5.0从5.0.27以后,单数版本为社区版。双数版本号为企业版。如果您还不想从5.0升级到5.1的话,可以继续使用5.0的这个版本。主要还是以安全更新和bug fix居多。
官方change-log网址:http://dev.mysql.com/doc/refman/5.0/en/releasenotes-cs-5-0-75.html
简要说明:

Functionality added or changed:

  • Security Enhancement: To enable stricter control over the location from which user-defined functions can be loaded, the plugin_dir system variable has been backported from MySQL 5.1. If the value is non-empty, user-defined function object files can be loaded only from the directory named by this variable. If the value is empty, the behavior that is used prior to the inclusion of plugin_dir applies: The UDF object files must be located in a directory that is searched by your system's dynamic linker. (Bug#37428)

  • Previously, index hints did not work for FULLTEXT searches. Now they work as follows:

    For natural language mode searches, index hints are silently ignored. For example, IGNORE INDEX(i) is ignored with no warning and the index is still used.

    For boolean mode searches, index hints are honored. (Bug#38842)

 

Tags: mysql, database, community

好东西,不得不贴,继续上传两个文件

今天看到一个好东西,是jquery的API,这次的API不是象以前那样用XML的,也不是那种根据官方的数据简单的汉化而来的,这次。。。。阿健同学编译成了CHM文件(虽然以前的也是CHM文件),并且有索引和搜索功能哦。只是由于编译方式的问题吧?不支持中文搜索,不过也总比以前那种纯粹的一个页面来的爽。OH YEAH。。。

剩下一个嘛,就是传统的CSS手册了,这个手册估计只要是WEB开发人员就会人手一份,苏沈小雨同学实在是太让人尊敬了,估计国内开发人员提到CSS手册,都会说,哦,就是那个苏沈小雨的呀。。。

不多说,放上链接。黑黑
注意:jqueryApi文件打开后会生成一个chw的文件,如果你看不顺眼可以每次删掉

附件: jqueryapi_chm.chm (210.1 K, 下载次数:6297)

附件: cascading style sheet 2.0 中文手册.chm (258.56 K, 下载次数:3673)

Tags: chm, css, style, jquery, api

Records:1012