Dec 17, 2007
关键词:Allow url fopen,php
最近发现blog突然出了点小问题,调试后发现是服务器提供商基于安全理由把Allow url fopen选项给关了,而我自己写的有一些代码中就用了相应的功能,所以导致了问题的出现,具体错误特征如下:
URL file-access is disabled in the server configuration
打开Allow url fopen的作用主要是在php程序中可以用http或者ftp方式来调用其他文件。如下面的代码:
<?php include("http://example.com/includes/example_include.php"); ?>
而关闭该选项后,使用上面的代码就会出错,必须换成下面的代码方可。
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/example_include.php"); ?>
这里,系统变量 $_SERVER['DOCUMENT_ROOT']返回的是远程系统根目录。
其实现在很多服务商都把allow url fopen功能给关了,主要原因是防止黑客的注入式进攻,所以强烈建议用第二种方法来写代码。另外,如果还是想用url方式来写代码的话,可以考虑用curl。
Apr 18, 2007
关键词:搜索 机器人 Web Spider php
主页在载入速度对浏览者来说是一个比较关键的因素。一般来说,浏览者的容忍极限为5s左右,如果读取时间大于5s,浏览者往往会选择放弃。因此,我采用了现在的Live Archive方式,用 http://blog.znsunimage.com/archives.html 来代替我现在的主页,同时对该页面内的内容进行精简,将内容控制在80k以内,以提高那些新访问者的速度。
但是,相应的问题也来了。Live Archive的结构不利于搜索机器人(Web Spider)爬行,且它调用了不少的javascript内容,搜索机器人(Web Spider)无法跟踪;其次,正常主页上的诸多好友链接也被“精简”,影响了交互。虽然部分问题可以用设定robots.txt的方式来弥补,但是还是有些欠缺。
因此做了如下的处理:
- 让用户可以自己设定浏览方式。
用户可以通过点击左侧“我的网站”中的Live Archive/Normal Mode 来切换浏览主页的方式,同时结果保存在浏览器Cookies中,下次用同一台电脑访问时候,系统会自动根据用户喜好选择不同的浏览方式。比方说我自己就采用正常浏览方式,因为大量的内容已经被缓存在我的浏览器中,对我来说速度已经不是瓶颈问题。
- 将搜索机器人(Web Spider)直接引导到正常的主页,使得他们能够收集更详细全面的信息,包括我的诸多好友链接。主要参考了该网页,精简为下面的一段代码:
$UA=$_SERVER['HTTP_USER_AGENT'];
if eregi("Googlebot|Yahoo|VoilaBot|Ask Jeeves|SpeedySpider|MSNbot|Yahoobot|Baiduspider|Sohubot|Lycos|Robozilla|Inktomi Slurp|larbin|spider|crawlGoogle AdSense|EchO!|Magpie|InternetSeer|Magpie|Alexa|The World Wide Web Worm|Voyager|robot|Speedy Spider|Motor|AskJeeves|GigaBot|The Python Robot|MSIECrawler|GetBot|SurveyBot|Fish search|Netcraft",$UA) //大小写没有影响
{$file = "/home/znsunima/public_html/wordpress/index2.html";
ob_start('ob_gzhandler');
echo implode(", file($file));
ob_end_flush();}
else
header("Location: http://blog.znsunimage.com/archives.html"); //见注¹
上面代码的原理是利用HTTP_USER_AGENT参数来判断是否为搜索机器人²,如果是,返回压缩过的正常主页;反之,返回Live Archive版本的主页。如果你用的是firefox,可以通过在地址栏输入“about:config”,新增general.useragent.override 字段后设定User_Agent来测试。
注¹. 其实其中的archives.html其实我也用php压缩过了,因为我的服务器不支持html格式的直接压缩
注². 网上的机器人很多,我只列了访问过我网站的和其他一些常见的Spider。
Mar 14, 2007
因为有些东西不兼容M$的恶霸IE7,所以用到下面的函数.
判断浏览器类型:
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
判断浏览器语言:
<?php echo $_SERVER["HTTP_ACCEPT_LANGUAGE"]; ?>
写成程序的化如下:
<?php
if(stripos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))
echo "IE 7.0";
else {if(stripos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))
echo "IE6.0";
else echo "firefox or others";
}
?>
这是根据上面的代码做出来的一个小程序:
www.znsunimage.com/Download/test.php