存档

2011年1月 的存档

谷歌发布开源工具,让Apache服务器提速50%

2011年1月25日 没有评论
谷歌新发布开源工具,该工具将使运用Apache HTTP服务器的网站下载速度再次加倍。

三天前,Google正式推出mod-pagespeed 免费模块用于优化Apache HTTP服务器框架下的网站速度。

大多人浏览网页如果超过3秒打不开就会离开,运用该工具可以将网页加载速度提高50%。

据悉,在此次开源之前,Google内部也一直使用该模块。

根据网络服务公司Netcraft 10的报告,使用Google网络服务器提供技术的网络服务器将有12.67%。

去年6月,Google 为开发者提供了一个可以给出相关网站优化建议的工具 Page Speed,但是有了建议后的后续执行工作也是很麻烦的。贴心的 Google 特为懒惰型 SA 提供了傻瓜化解决方案: mod_pagespeed。

mod_pagespeed 是一个适用于 Apache httpd 的模块,它可以自动完成超过15项的优化工作,包括优化缓存,减少客户端服务器之间的通讯,降低负载等等。经测试,使用了 mod_pagespeed 后,页面的载入时间仅为之前的一半,也就是说速度整整提高了一倍,另外它也是开放源代码的。

Google 还宣布已经在和著名的虚拟主机提供商狗爹(Godaddy)合作为850万用户提供了使用 mod_pagespeed 加速过的 http 服务,他们的主席兼 COO Warren Adelman 说道:

一直以来,狗爹(Godaddy)都以为用户提供做好的用户体验为己任。这也就是我们和 Google 合作进行“让网络快起来”这项计划的原因。在使用了 mod_pagespeed 和其他的技术后,我们的工程师惊喜的发现用户的网站载入速度比之前快了好多。我们希望将这些技术提供给我们的客户,相信他们以及他们的网站访问者都会因此 受益的。

此外,Google 也在和 CDN 服务供应商 Cotendo 合作将 mod_pagespeed 的引擎应用到他们的 CDN 服务中去。

官方下载页面:http://code.google.com/speed/page-speed/download.html

SEO经验之如何去做好反向链接

2011年1月25日 没有评论

到目前为止,有很多的SEO者都在为外部链接 而苦恼,到底什么样的外链 才能使自己排名有所提高 呢?其次就是关键的问题是,从那儿寻找觅这些外部链接呢?今天的讲课希望能给大家带来一些有益的启迪。
我的讲课从不讲什么具体的方法,因为那没有用,只有你明白了SEO的方法的原理,这样子你才能举一反三,利用原理创造更多的新方法或 更新旧方法,如果仅仅给你说方法,有些SEO者弄不好做出来的效果适得其反,这里并不是指智商有问题,而是不了解原理你就不能正确使用方法,甚至还要自以为是,自制麻烦。
首先,介绍一下,在题目中所讲的“反链”是指的什么意思,反链不同于友情链接,它是单向链向你站的文字链接或图片带有ALT文字的链接或其它能够让现有搜索技术搜索到的链接,如果你用JS的反链,则有可能是无效的,因为搜索目前不能完全正确识别。
反链到底能起到什么样的效果呢 ?或者说在什么样的情况下反链才能起到效果?
反链对于贵站的排名到关重要,在 GG 的官方帮助里面赫然写着“要想提高排名就需要很多的高质量的链接”类似的语句,不信你可以从GG的网站管理工具里查到。就是说,反链可以直接提升排名,当然,并不是一个网页只要有了反链就可以等着排名上升,只有在内链合理、内容丰富的情况下才能使反链发挥它的超常作用!如果你被链接的页面没有反链中的关键字文字,或者密度不够,都不能正常发挥反链的功能。
既然反链功能如此惊人,那么在页面内链或内容搞好的情况下怎么才能寻找或者自制一些“高质量”的反链呢?有些SEO者就开始头痛了,因为他们尝试过让别人给他加反链,可惜人家不给加,要不就是愿意给加的站质量不高或者内容不相关,甚至有些站专门出售外链来牟利,难道就没有不需要花钱就能搞定的“高质量”反链?难道SEO的进程到了反链这一步就要停滞么?答案是完全否定的!
下面我们一步一步深析反链的高质量的秘密。
我们知道,反链基本分为两种,一种是首页反链,这样的反链我们很难搞到,尤其对于新站,除非你和别人换链。一种是用别人网站的内页反链,我们重点介绍这一种。
不要以为内页反链的质量不如首页反链高,为什么这样 说?反链的质量高低与反链页面的原创度关系最大,比如PR,我们知道,某些大站的PR很高,可能有人会说PR的高低与链接数量有直接关系,其实 不然,PR的高低与数量有关系,但与原创更有关系!就像刚才阿邦站为什么PR为7,几乎与 网易PR相同,难道是链接 数量与网易的链接数量一样多?并不是!而是阿邦的原创优势造就了它的PR,从这一角度来看,我们就 彻底明白了GG搜索的排名来源:原创!
只要我们知道了GG排名来源是原创之后,就可以从原创下手来制造我们的高质量反链了。
我们可以从一些交互性的网站版块,比如博客,论坛等来制作原创文章,用这样的原创文章做反链来实现高质量的链接目的,而这样的操作不需要你花任何费用,完全可以由自己控制,不再看别人 的脸色了!
现在方法有了,原理也明白了,但如何做才能实现?下面是制作原创反链的注意事项,只有把这些事项完全领会才能实现它的真正价值:
一、反链网站的PR。我建议你的反链网站首页必须在 PR3 或以上,为什么要求是 PR3 ?是因为只有PR3以上才能做到快速更新,你不希望你的反链原创不快速收录吧。再就是,PR3 以上可以实现通过原创传递PR值,这倒对排名不是关键。
二、反链网站的域名。域名必须是二级域名,不能是主站的目录,只有这样的域名才能起到与首页反链一样的排名效果。
三、反链网站的传递环境。注意观察该站的新内容是不是能够在首页展示,这是小细节,也是成功的催化剂。
四、反链网站的相关性。说到这里,有些朋友就苦恼了,比如我做食品关键字排名,我从那儿获得关于食品的关键字反链网站呢?这里我告诉大家,地方站是可以相关所有关键字的,在地方站做就相当于是做到了相关性。
五、原创文章的 相关性。你写的原创与你的关键字有关系吗?如果没有,你不如立即停止出去休息玩耍,免得浪费青春。你的文章必须有关键字,并且是标题有,内容也要有,要用我之前的课“原创文章是怎么炼成的”的方式写。
六、原创文章的链接。这是一个关键的步骤,你的文章必须有链向你的页面的文字链接,最好是加在文章的中间偏下部位,不要加在前200字,整篇文章在500字以上。
七、原创文章的优美度。这是无形的细节,不要指望用一篇烂文章加上足够的关键字就能过关,这样的把戏两年前就被GG禁止了,并且,我曾经就这个问题给 GG 写过信,之后,GG就加大对此的惩罚力度。
当然,并不是我起了作用,而是表明GG很重视用户体验反馈。请记住,这是作弊。
八、原创文章营销性。一个合格的 SEO 不是只知道SEO,还要对你所SEO的关键字营销环境有所敏感的了解,如果一个对营销不懂的人是不可能有的放矢地弄出合格的网页内容和令人信心十足的反链,因此,要加强对SEO关键字的了解,不要以为这个不起眼,这是一个细节,成功与否你自己看着办。
九,原创文章的广泛性。你的反链是不是具有广泛性,如果你把原创反链发在了相近服务器的不同网站,效果是很差的,要追求链接的广泛性,这个就不多说了。
这里的广泛性是指地域。
广泛性不仅针对原创反链,还针对首页反链,如果你的首页反链不具有广泛性,效果也很差。如果你一个链接在网通一个在移动,相信效果比五个在网通的要好,这也是细节。
十,丰富原创链向的页面。要做到经常更新,GG不希望给你排名后,你不管这个页面了,那么你的反链持久性必大打折扣,甚至有可排名 呆上几天后就掉得无影无踪了,这 并不是只指针对原创反链。

分类: SEO与网络营销 标签: ,

php获取客户端IP地址的方法

2011年1月25日 没有评论

php获取客户端IP地址的方法

方法11 //php获取ip的算法
2 $iipp=$_SERVER["REMOTE_ADDR"];
3 echo $iipp;
方法2
01 //php获取ip的算法
02 $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
03 $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
04 echo $user_IP;
05
06 function get_real_ip(){
07 $ip=false;
08 if(!empty($_SERVER["HTTP_CLIENT_IP"])){
09 $ip = $_SERVER["HTTP_CLIENT_IP"];
10 }
11 if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
12 $ips = explode (“, “, $_SERVER['HTTP_X_FORWARDED_FOR']);
13 if ($ip) {
14 array_unshift($ips, $ip); $ip = FALSE;
15 }
16 for ($i = 0; $i < count($ips); $i++) {
17 if (!eregi (“^(10│172.16│192.168).”, $ips[$i])) {
18 $ip = $ips[$i];
19 break;
20 }
21 }
22 }
23 return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
24 }
25 echo get_real_ip();

方法3
01 //php获取ip的算法
02 if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
03 $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
04 }elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) {
05 $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
06 }elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) {
07 $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
08 }elseif (getenv(“HTTP_X_FORWARDED_FOR”)){
09 $ip = getenv(“HTTP_X_FORWARDED_FOR”);
10 }elseif (getenv(“HTTP_CLIENT_IP”)){
11 $ip = getenv(“HTTP_CLIENT_IP”);
12 }elseif (getenv(“REMOTE_ADDR”)){
13 $ip = getenv(“REMOTE_ADDR”);
14 }else{
15 $ip = “Unknown”;
16 }
17 echo “你的IP:”.$ip ;

方法4
01 //php获取ip的算法
02 if(getenv(‘HTTP_CLIENT_IP’)) {
03 $onlineip = getenv(‘HTTP_CLIENT_IP’);
04 } elseif(getenv(‘HTTP_X_FORWARDED_FOR’)) {
05 $onlineip = getenv(‘HTTP_X_FORWARDED_FOR’);
06 } elseif(getenv(‘REMOTE_ADDR’)) {
07 $onlineip = getenv(‘REMOTE_ADDR’);
08 } else {
09 $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
10 }
11 echo $onlineip;

分类: 网站建设经验 标签: ,

如何安全使用Register Globals

2011年1月25日 1 条评论

如何安全使用Register Globals呢?PHP从4.2版开始后配置文件中register_globals的默认值从 on 改为 off 了。下面会解释用这个指令如何写出不安全的代码,但要知道这个指令本身没有不安全的地方,误用才会。当 register_globals 打开以后,各种变量都被注入代码,例如来自 HTML表单的请求变量。再加上 PHP 在使用变量之前是无需进行初始化的,这就使得更容易写出不安全的代码。这是个很艰难的抉择,但PHP 社区还是决定默认关闭此选项。当打开时,人们使用变量时确实不知道变量是哪里来的,只能想当然。但是
register_globals 的关闭改变了这种代码内部变量和客户端发送的变量混杂在一起的糟糕情况。下面举一个错误使用 register_globals 的例子:

Example #9 错误使用 register_globals = on 的例子


<?php
// 当用户合法的时候,赋值 $authorized = true
if (authenticated_user()) {
$authorized = true;
}
// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
include
"/highly/sensitive/data.php";
}
?>

当 register_globals = on 的时候,上面的代码就会有危险了。如果是
off,$authorized 就不能通过如 URL
请求等方式来改变,这样就好多了,尽管初始化变量是一个良好的编程习惯。比如说,如果在上面的代码执行之前加入
$authorized = false 的话,无论 register_globals 是 on 还是
off 都可以,因为用户状态被初始化为未经认证。

另一个例子是关于会话的。当 register_globals = on
的时候,$username 也可以用在下面的代码中,但要意识到
$username 也可能会从其它途径进来,比如说通过 URL 的 GET。

Example #10 使用会话时同时兼容 register_globals on 和 off 的例子


<?php
// 我们不知道 $username 的来源,但很清楚 $_SESSION 是
// 来源于会话数据
if (isset($_SESSION['username'])) {echo} else { 

;

“Hello <b>{$_SESSION[‘username’]}</b>”

echo

“Hello <b>Guest</b><br />”;
echo
“Would you like to login?”

;}
?>

采取相应的预防措施以便在伪造变量输入的时候给予警告是完全有可能的。如果事先确切知道变量是哪里来的,就可以检查所提交的数据是否是从不正当的表单提交而来。不过这不能保证变量未被伪造,这需要攻击者去猜测应该怎样去伪造。如果不在乎请求数据来源的话,可以使用$_REQUEST 数组,它包括了 GET、POST 和 COOKIE的所有数据。详情可参见php手册的来自 PHP 之外的变量

Example #11 探测有害变量


<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {
// MAGIC_COOKIE 来自 cookie
// 这样做是确保是来自 cookie 的数据
} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {
mail("admin@example.com", "Possible breakin attempt", $_SERVER['REMOTE_ADDR']);
echo
"Security violation, admin has been alerted.";
exit;} else {

// 这一次请求中并没有设置 MAGIC_COOKIE 变量 }
?>

当然,单纯地关闭 register_globals
并不代表所有的代码都安全了。对于每一段提交上来的数据,都要对其进行具体的检查。永远要验证用户数据和对变量进行初始化!把
error_reporting() 设为
E_NOTICE 级别可以检查未初始化的变量。