存档

‘web’ 分类的存档

discuz后期修改应用域名的重定向问题

2011年11月25日 没有评论

在不设置应用域名情况下都是默认www.example.com,最好在网站初期就把应用域名设置好,在后期修改会造成多入口问题,引起收录混乱,如:
http://www.example.com/forum-aipr-1.html
http://bbs.example.com/forum-aipr-1.html
以上两个链接都指向同一地址,预期应该是http://www.example.com/forum-aipr-1.html 301重定向到http://bbs.example.com/forum-aipr-1.html,类似的情况还有“门户”、“群组”。
解决方法有两种:
1.修改nginx/Apache的rewrite。
2.修改相应php文件。
阅读全文…

分类: web 标签: ,

SimplePie 实用的RSS 解析程序

2011年11月18日 没有评论

SimplePie 是一个 RSS 解析程序,今天试了一下,用它来解析RSS实在是太方便了。 它和 WorPress 内部集成的MagpieRSS很类似。SimplePie 在对 RSS 或 Atom 的数据处理能力上毫不逊色于 MagpieRSS,并且 SimplePie 速度更快,而且功能也更加强大,SimplePie 拥有了比MagpieRSS 更多的实用方法和属性,这可以帮助你快速的构建一个 RSS 阅读器或 RSS 数据处理模块。

使用方法:

SimplePie下载地址:http://simplepie.org/downloads/

把下载下来的ZIP压缩包解压到某个目录下,在需要使用的时候把其中的simplepie.inc文件include进来就行了。

SimplePie 使用上非常简单,它的构造函数有三个参数。

  • feed_url 设置 Feed 的地址,可以输入多个。
  • cache_location 设置缓存的文件夹
  • cache_duration 设置缓存时间,默认为60分钟

阅读全文…

分类: web 标签: ,

wordpress 计划任务机制

2011年11月15日 没有评论

wordpress的计划任务通过页面触发实现,只有页面被访问的时候,才判断当时是否有需要运行的后台任务,虽然后台任务是被用户的访问激活的,但后台任务的执行并不会影响用户的访问速度,因为Wordpress在处理用户请求时,发起一个独立的http请求到wp-cron.php页面后,并不等待wp-cron.php将后台任务执行完毕,也不继续接收由wp-cron.php返回的数据,而是立即处理用户的访问请求,这里有点类似多线程

前台页面触发机制

  1. 执行/wp-settings.php中的钩子sanitize_comment_cookies。
  2. sanitize_comment_cookies调用/wp-includes/cron.php wp_cron。

阅读全文…

分类: web 标签: ,

php正则堆栈溢出(Segmentation fault)

2011年11月11日 没有评论

pcre 8.11版本存在一个栈溢出bug,linux线程栈默认大小是10240 kbytes,在正则匹配子模式大于22K会生成core 。

受影响函数:

  • preg_filter — 之行一个正则表达式搜索和替换
  • preg_grep — 返回匹配模式的数组条目
  • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
  • preg_match_all — 之行一个全局正则表达式匹配
  • preg_match — 执行一个正则表达式匹配
  • preg_quote — 转义正则表达式字符
  • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_replace — 执行一个正则表达式的搜索和替换
  • preg_split — 通过一个正则表达式分隔字符串

阅读全文…

分类: web 标签: ,

说说Discuz和jQuery冲突

2011年11月8日 没有评论

最近看Discuz的common.js,有如下内容:

function $(id) {
   return document.getElementById(id);
}

看到不免心生鄙视,这里也有个$()函数,会造成和引入的Jquery冲突, 就只是为了实现getElementById?功能没有人家强大就别学人家用美元符号嘛,占用符号资源。应该学学百度,人家就用一个字符G,多低调不和别人争美元。
关于$()函数的冲突,jQuery中给出了解决方法,jQuery.noConflict(),把美元让给你(看看人家多大肚),这里建议Discuz还是放弃$吧,你改个D也不错嘛。
阅读全文…

分类: web 标签: ,

控制Google +1加载顺序

2011年11月8日 没有评论

种种原因,在天朝用Google+会经常影响到页面加载,下面JS可以让页面显示完再加载plusone。

分类: web 标签: ,

feedsky只输出一条信息

2011年10月19日 没有评论

feedsky添加完后出现只有一条信息或一篇文章,原因是所有节点的guid参数都一样,可能出现在自己写rss过程中。
<item>的子节点<guid>
<GUID>是一个可选的<item>子节点。
为全球唯一的GUID代表标识符。 这是一个字符串,它唯一标识item。 如果存在,当item发布之后,聚合器可以选择使用该字符串判断该item是否是新的。
<guid> http://some.server.com/weblogItem3207 </的GUID>
guid没有特定的语法规则,聚合器必须将他们看作一个字符串。生成具有唯一性的字符串guid取决于种子的源头。
如果guid节点有isPermaLink属性,并且值为真,读取器就会认为它是item的permalink。permalink是一个可在web浏览器中打开的url链接,它指向<item>节点所描述的全部item。
<guid isPermaLink=”true”>http://inessential.com/2002/09/01.php#a2</guid>
isPermaLink是可选属性,默认值为真。如果值为假,guid将不会被认为是一个url或指向任何对象的url。

分类: web 标签:

ping服务误区

2011年10月17日 没有评论

误区一:Pingomatic的重复

WordPress后台自带了http://rpc.pingomatic.com/地址,然而不少网上的推荐地址列表可能会造成重复。
比如推荐地址列表是这样:

http://rpc.pingomatic.com/
http://blogsearch.google.com/ping/RPC2
http://ping.feedburner.com/
http://api.my.yahoo.com/RPC2

阅读全文…

分类: web 标签:

破解防盗链,js设置空白referer图片

2011年9月26日 4 条评论

大部分防盗链都是判断referer,可以通过在客户端本地改变图片调用破解之。

//破防盗链js
function ImgRebuild() {
	$("#post img").each(function(i){
		url = this.src;
		width = this.width;
		height = this.height;
		var imgid = Math.random(),
		frameid = 'frameimg' + imgid;
		window['img'+imgid] = '<img id="img" src=\''+url+'?kilobug\' /><script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; }<'+'/script>';
		img_r = '<iframe id="'+frameid+'" src="javascript:parent[\'img'+imgid+'\'];" frameBorder="0" height="' +height+ '" scrolling="no" width="100%"></iframe>';
		$(this).replaceWith(img_r);
	});
	return '';
}
ImgRebuild();

Demo:
http://www.tiham.com/page/anti-anti-hotlinking.html
兼容性:已测试IE6、IE7、IE8、chrome 7、FF3.6、Opera10.63

防御方法:
1、不允许referer为空(不建议,因在某些开启隐私模式的浏览器中,或https页面引用下,referer是空的);
2、地址变更(lighttpd的是根据有效时间,nginx的根据是md5);
3、登录校验(如必须登录网站帐号后才能访问);

分类: web 标签:

字符编码小结(转)

2010年6月18日 1 条评论

一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let’s go!

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节”。
再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机”。

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。
他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00×10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为”控制码”。

他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
阅读全文…

分类: web 标签: