Archive for the 'Web开发' Category

Page 2 of 2

通过设置p3p头来实现跨域设置cookie[转]

转自:http://huaidan.org/archives/1526.html
今天在w3网站上看到了一篇介绍p3p的文章(http://www.w3.org/TR/p3p/),利用这个可以实现跨域访问cookie,我也试验一下。

其实很简单:试验用了2个域名readlog.cn和diaor.com

首先在readlog.cn下放置一个文件setcookie.php 内容:
PHP代码

header(’p3p: CP=”CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND

PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV”’);//p3p
setcookie(“Testcookie”,”test”,time()+3600,”/”,”.readlog.cn”);//设置cookie

再放置一个readcookie.php 内容:

然后在diaor.com下放置setcookie.php ,内容:
JavaScript代码

1. <script src=”http://www.readlog.cn/setcookie.php”></script>

然后访问http://www.diaor.com/setcookie.php 抓取数据包可以发现,在readlog.cn域下生成了一个cookie ,名称是Testcookie,值是test

下面访问http://www.readlog.cn/readcookie.php 来验证一下,可以发现,cookie确实设置成功了。

有兴趣可以去掉header(’p3p: CP=”CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IN

D PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV”’);这句,试一下就会发现cookie能设置,但是在readlog.cn读不到这个cookie。

PHP Fatal Error重定向跳转

在前端生产环境下,我们需要error_reporting(0)来禁止对用户输出任何错误信息;与此同时,如果能在不可预见地发生Fatal errors和Parse errors的时候跳转到其他页面,而不出现空白,那就能在一定程度上保证用户体验。
我们发现,PHP的error_handlers不能用来处理Fatal errors和Parse errors,于是就有了下面这个方法。
在php.ini文件中可以找到:

; String to output before an error message.
;error_prepend_string = "html code"
; String to output after an error message.
;error_append_string = "html code"

那么我们可以把error_prepend_string或者error_append_string前面的分号去掉,把它的值设置为”<script>window.location.href=’another_page.php’;</script>”,在出错的时候使用javascript的redirect到另一个页面。
但是这种做法似乎不太优雅…正在寻找通过服务器302临时重定向的方法。

PHP SPL File Browser

俗话说不想偷懒的程序员不是好程序员。
所以为了向“好程序员”靠拢,我们要自觉地在工作中偷懒…当然不是要你偷工减料,而是要用程序员应该有的方式来“偷懒”,提高工作效率。
我所在的公司使用的PHP demo环境,出于安全方面的考虑,设置了禁止访问网站目录(列出目录文件列表),造成了我没有办法通过浏览器直接访问目录,查看到目录下的文件列表。上传了个php探针到demo服务器上,发现PHP的系列文件操作函数都被禁用了。这样我也没有办法写一段php脚本通过opendir、chdir、scandir等函数来遍历目录下的文件,输出文件列表到浏览器。
好在经过测试,发现并没有禁用PHP的SPL(SPL是Standard PHP Library的缩写)。这样我们就可以通过SPL中的DirectoryIterator来遍历目录了。
于是就有了下面这个小工具,我想可以把它叫做PHP SPL File Browser或者PHP SPL Directory Browser。它强大得放在任意子目录下都可以浏览整站目录。代码写得很乱,就不献丑了,有需要的童鞋可以发Email给我。

受doctype影响的内嵌img标签的td高度

在工作中遇到一个问题,在html5页面下,使用table布局,td包含img标签,如果td内还含有空白字符,那么td的高度就会出错,导致页面出现空白/间隙,设置了img的vertical-align:top问题依然存在。google了一下,发现stack exchange上有人早就在一年多以前发现doctype在XHTML 1.0 strict下存在该问题并有了解决方案:把空白字符去掉或者设置line-height:1px,img{display:block;}也可以。
原因是在块级元素中单个字符(包括空格)都要占用一个单行,所以块级元素至少要暂用一行的高度,把行高设置成1px就了。
http://stackoverflow.com/questions/1450274/why-td-height-not-equal-to-img-height-inside-of-it-when-doctype-is-xhtml-1

The size of block-level element (td, div, etc) if not specified will only be as big as needed, according to the space taken by its content. If specified, it will try to expand accordingly, except if the content is bigger, in which case it will expand as necessary.
In your example, the cell contains a single character (the non-breaking space), which take the size of single line. Hence, the block element must be at least 1 line-height high; it can’t assume any smaller size. This is why your height declaration was ignored.

jQuery图片对比插件jPictureCompare

发布一个自己写的基于jQuery的图片比较插件:jPictureCompare。高手们就当看看笑话吧……是模仿网易新闻频道报道的《日本地震前后对比图像》做的(http://news.163.com/special/ribendizhen_duibi/)鼠标移动图片上滑动观看。

调用依然很简单,只需一行,可能我对需求考虑得还不够周到…

$(function(){
        //参数:图片的尺寸
	$('.jPictureCompare').jPictureCompare({'width': 940,'height': 529,});
})

demo在此

下载地址