用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

PHP记录用户通过搜索引擎进网站的关键词并给出相关结果

时间:2015-01-23  来源:西部数据  作者:西部数据

本文章给大家介绍PHP记录用户通过搜索引擎进网站的关键词并给出相关结果,有需要了解的同学可进入参考,下面是进入你网站的情况的相关实现代码,更多的,大家自己拓展,代码如下:

  1. $rfr = $_SERVER['HTTP_REFERER']; 
  2. //if(!$rfr) $rfr='http://'.$_SERVER['HTTP_HOST']; 
  3.  
  4. if($rfr
  5.  $p=parse_url($rfr); 
  6.  parse_str($p['query'],$pa); 
  7.  $p['host']=strtolower($p['host']); 
  8.  $arr_sd_key=array
  9.      'baidu.com'=>'word'
  10.      'google.com'=>'q'
  11.      'sina.com.cn'=>'word'
  12.      'sohu.com'=>'word'
  13.      'msn.com'=>'q'
  14.      'bing.com'=>'q'
  15.      '163.com'=>'q'
  16.      'yahoo.com'=>'p' 
  17.      ); 
  18.  $keyword=''
  19.  $sengine=$p['host']; 
  20.  foreach($arr_sd_key as $se=>$kwd
  21.  { 
  22.   if(strpos($p['host'],$se)!==false) 
  23.   { 
  24.    $keyword=$pa[$kwd]; 
  25.    $sengine=$se
  26.    break
  27.   } 
  28.  } 
  29.  $sql="insert into visit_log(domain,key_word,ct)"

上面的代码实现不了根据用户来的词给出相关结果,下面我来再进行调上面的函数,代码如下:

  1. <?php 
  2. function unescape($str) { 
  3.  $ret = ''
  4.  $len = strlen($str); 
  5.  for ($i = 0; $i < $len$i++) { 
  6.   if ($str[$i] == '%' && $str[$i +1] == 'u') { 
  7.    $val = hexdec(substr($str$i +2, 4)); 
  8.    if ($val < 0x7f) 
  9.     $ret .= chr($val); 
  10.    else 
  11.     if ($val < 0x800) 
  12.      $ret .= chr(0xc0 | ($val >> 6)) . chr(0x80 | ($val & 0x3f)); 
  13.     else 
  14.      $ret .= chr(0xe0 | ($val >> 12)) . chr(0x80 | (($val >> 6) & 0x3f)) . chr(0x80 | ($val & 0x3f)); 
  15.  
  16.    $i += 5; 
  17.   } else 
  18.    if ($str[$i] == '%') { 
  19.     $ret .= urldecode(substr($str$i, 3)); 
  20.     $i += 2; 
  21.    } else 
  22.     $ret .= $str[$i]; 
  23.  } 
  24.  return $ret
  25. function ls_get_delim($ref) { 
  26.  $search_engines = array ( 
  27.   'google.com.hk' => 'q'
  28.   'google.com.tw' => 'q'
  29.   'go.google.com' => 'q'
  30.   'google.com' => 'q'
  31.   'blogsearch.google.com' => 'q'
  32.   'cn.bing.com' => 'q'
  33.   'one.cn.yahoo.com' => 'p'
  34.   'baidu.com' => 'wd'
  35.   'soso.com' => 'w'
  36.   'youdao.com' => 'q'
  37.   'sogou.com' => 'query' 
  38.  ); 
  39.  $delim = false; 
  40.  // 判断 
  41.  if (isset ($search_engines[$ref])) { 
  42.   $delim = $search_engines[$ref]; 
  43.  } 
  44.  return $delim
  45.  
  46. function ls_get_refer() { 
  47.  // 判断前一页面的 URL 地址 
  48.  $queryString = $_GET['referer']; 
  49.  $queryString = unescape($queryString); 
  50.  if (!isset ($queryString) || ($queryString == '')) 
  51.   return false; 
  52.  $referer_info = parse_url($queryString); 
  53.  $referer = $referer_info['host']; 
  54.  //去除www. 
  55.  if (substr($referer, 0, 4) == 'www.'
  56.   $referer = substr($referer, 4); 
  57.  return $referer
  58.  
  59. function ls_getinfo($what) { 
  60.  $referer = ls_get_refer(); 
  61.  if (!$referer
  62.   return false; 
  63.  $delimiter = ls_get_delim($referer); 
  64.  if ($delimiter) { 
  65.   $terms = ls_get_terms($delimiter); 
  66.   if ($what == 'isref' && $terms != '') { 
  67.    return true; 
  68.   } 
  69.   if ($what == 'terms') { 
  70.    echo $terms
  71.   } 
  72.  } 
  73.  return false; 
  74.  
  75. function yxiao_seems_utf8($str) { 
  76.  $length = strlen($str); 
  77.  for ($i = 0; $i < $length$i++) { 
  78.   $c = ord($str[$i]); 
  79.   if ($c < 0x80) 
  80.    $n = 0; # 0bbbbbbb 
  81.   elseif (($c & 0xE0) == 0xC0) $n = 1; # 110bbbbb 
  82.   elseif (($c & 0xF0) == 0xE0) $n = 2; # 1110bbbb 
  83.   elseif (($c & 0xF8) == 0xF0) $n = 3; # 11110bbb 
  84.   elseif (($c & 0xFC) == 0xF8) $n = 4; # 111110bb 
  85.   elseif (($c & 0xFE) == 0xFC) $n = 5; # 1111110b 
  86.   else 
  87.    return false; # Does not match any model 
  88.   for ($j = 0; $j < $n$j++) { # n bytes matching 10bbbbbb follow ? 
  89.    if ((++ $i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) 
  90.     return false; 
  91.   } 
  92.  } 
  93.  return true; 
  94.  
  95. function ls_get_terms($d) { 
  96.  //取得查询值 
  97.  $queryString = $_GET['referer']; 
  98.  $queryString = unescape($queryString); 
  99.  $query_str = parse_url($queryString); 
  100.  parse_str($query_str[query], $query_str); 
  101.  $query = $query_str[$d]; 
  102.  $query = urldecode($query); 
  103.  
  104.  $query = str_replace("'", '', $query); 
  105.  $query = str_replace('"'''$query); 
  106.  $query_array = preg_split('/[s,+.]+/'$query); 
  107.  $query_terms = implode(' '$query_array); 
  108.  $terms = htmlspecialchars($query_terms); 
  109.  //gbk->utf8 
  110.  if (!yxiao_seems_utf8($terms)) { 
  111.   $terms = iconv("GBK""UTF-8//IGNORE"$terms); 
  112.  } 
  113.  
  114.  return $terms
  115. if (ls_getinfo('isref')) { 
  116. ?> 
  117. document.write('<div id="serp"><p>'
  118. document.write('更多搜索结果:<em><a href="/search?q=<?php ls_getinfo(terms); ?>" '
  119. document.write('title="查看<?php ls_getinfo(terms); ?>的搜索结果" rel="nofollow"><?php ls_getinfo(terms); ?></a></em>'
  120. document.write('</p></div>'); 
  121. <?php } ?> 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门