php 中的$_SERVER['HTTP_REFERER']跳转的问题

新世纪IT民工 发布于 2012/10/19 14:36
阅读 1K+
收藏 0
PHP

有关于搜索引擎google的跳转,利用js可以实现,但是不清除php代码是如何实现的。。

想法是这样的,就是在google搜索的结果,但是点击搜索结果,会跳转到不是目标网址,比如:

在google搜索网站的结果中有个网站www.xxx.com,现在就是点击www.xxx.com 会自动跳转到www.bbb.com,但是要是单独输入www.xxx.com这个域名不会跳转到www.bbb.com。。只有从google搜索结果中点击的才会跳转到www.bbb.com,请问这个是如何操作的。。拜谢了。。

以下是问题补充:

@新世纪IT民工:表达不是很清楚,让大家猜测不好意思了。意思大概是 "在google搜索网站的结果中有个网站www.xxx.com,现在就是点击www.xxx.com 会自动跳转到www.bbb.com,但是要是单独输入www.xxx.com这个域名不会跳转到www.bbb.com。。只有从google搜索结果中点击的才会跳转到www.bbb.com"..相信这个应该会更好理解。。 (2012/10/19 15:43)
加载中
0
放牛娃1988
放牛娃1988

就是在google搜索的结果,但是点击搜索结果,会跳转到不是目标网址


这个”但是“怎么来的转折?“会跳到不是目标网址”,这句话怎么理解?楼主还是注意下语法吧。

由于表述的不是很清楚,我大概猜测下楼主的意思。google的原理是这样的,你鼠标移上去,看到的连接是真实的原址连接,但是你点击的时候,它用js捕捉了active这个事件,对链接进行了转换,你点击的其实是google的跳转连接。这个功能只能通过前端实现。但楼主如果问,google不允许你保存这个跳转连接来跳转,而只允许在google的搜索结果中点击的话,确实是后端的功能。那就是判断访问来源。当然,这个问题如果是出于安全考虑的话,其实是没有意义的,因为这个访问来源是可以任意伪造的。

如果用PHP实现的话,可以这么写:

$referHost = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$validDomain = 'google.com';
$valid = strstr($referHost, $validDomain) == $validDomain;
当然,如果你希望结果更加严格一点(比如,考虑这样的情况google.com.www.google.com,虽然很怪异,但是是合法的),那么,最后一行改为:


($pos = strrpos($referHost, $validDomain)) !== false && $pos == strlen($referHost) - strlen($validDomain);
楼主最好还是把问题说的更清楚些。


consatan
consatan
wwwgoogle.com 这个网址也会被匹配哦
放牛娃1988
放牛娃1988
回复 @乐乐高 : 看了你的补充说明,那我的回答白回答了。但是我可以告诉你,你的需求必须前端处理,后端处理不了。
新世纪IT民工
新世纪IT民工
我现在补充了,问题的大概意思是补充说明的那样。。能否给个联系方式呢,悉心请教一下!
0
钱总
钱总

这个有点悬除非google 搜索出来的结果是这样的www.xxx.com?from=google,你可以在index.php以GET方式进行判断 是否从goole搜索过来的,貌似google不会给搜索结果加上个参数

新世纪IT民工
新世纪IT民工
我知道用$_SERVER['HTTP_REFERER']这个去获取上一个url,用函数strpos,然后判断google和q= 这两个要是同时存在就跳转。。php不是很熟悉,js已经实现,不知道php那边要怎么写
返回顶部
顶部