标签含 php 的文章.

PHP获取来自搜索引擎入站的关键词

2011年09月14日
获取来自搜索引擎用户的搜索关键词,相信很多网站都有这样的需求。既可以根据不同的用户来路显示不同的信息, 还能根据用户搜索关键词提供一些相近的站内信息。

而本站现在实现的则是对来自百度、Google的用户显示广告。网站广告其实是很不友好的东西,尤其是博客。最早在博客上放Google Adsense的广告主要是觉得好玩。适当的广告图片,其实真的还是很有美感的。大四弄过一个老乡的论坛,像猫猫师兄说得那样,网站有广告,看起来才有味道,像是一个完整的网站。

通过PHP获取来自搜索引擎入站的关键词,其实很简单,主要依靠$_SERVER[HTTP_REFERER]这个变量,从他我们可以得到来路的URL地址。当然$_SERVER还可以提供其他很丰富的信息,有兴趣可以查相应手册。下面看看相关的代码:


$url=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';//获取入站url。

$search_1="google.com";
$search_2="baidu.com";

$google=preg_match("/b{$search_1}b/",$url);//搜索URL中是否含有google.com字段。
$baidu=preg_match("/b{$search_2}b/",$url);
if($google){
echo "欢迎,来自Google的朋友...";
}



这样对来路的分析,我们可以对来自百度、Google的用户展现不同的信息。如果要获取用户搜索关键词,我们还要对URL进行更深层次分析,通过平时观察,百度搜索的时候URL上“kw=关键词”,而Google是“q=关键词”。下面介绍一个函数:


function get_keyword($url,$kw_start)//$kw_start就是上面所说的q=、kw=这样的字段
{
$start=stripos($url,$kw_start);
$url=substr($url,$start+strlen($kw_start));
$start=stripos($url,'&');
if ($start>0)
{
$start=stripos($url,'&');
$keyword=substr($url,0,$start);
}
else
{
$keyword=substr($url,0);
}
return $keyword;
}


通过上面的函数,再进行一下urkdecode,我们就能获取到URL中的搜索关键词,不过这时候还应注意网页编码(UTF8还是GBK编码),并根据需要对关键词进行编码转换,否则容易出现乱码。

MySQL随机查询数据

2011年04月20日


昨晚突发奇想想给那个树洞加一个随机浏览一条信息的功能。然后百度了一下,通俗的方法是:

select * from `table` order by rand() limit 0,1;

想起以前博客的随机文章貌似也是用这个实现的,但是网上说这个查询效率太低,确切是效率极低。好吧,那哥就再找一个效率高一点的吧~

百度、谷歌了一大把,发现搜出来的内容都是一篇文章,还都他妈的都原创,艹啊 才知道转载文章能有这么恶心人。不过还是试了篇被转载千万次的文章的方法,效果很差,300多条记录,每次得到的都是ID50以下的,典型的有缺陷嘛。

效率低的不能用,有缺陷的不能用。于是借助PHP的rand函数,我的解决方法就是这样的:
$id=rand(1,10000)/10000;
$sql="SELECT * FROM `table` WHERE id >= (SELECT floor( $id * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1";


麻雀虽小 但五脏俱全

2010年04月30日
到目前,这个博客系统核心部分应该算是结束了,当然还有一些细节需要完善.核心的程序也就十几K大小.目前各项功能自己还算满意.

同时欢迎各位帮忙测试性能及安全性,有什么问题可以在这里给我留言。