PHP记录用户通过搜索引擎进网站的关键词并给出相关结果
本文章给大家介绍PHP记录用户通过搜索引擎进网站的关键词并给出相关结果,有需要了解的同学可进入参考,下面是进入你网站的情况的相关实现代码,更多的,大家自己拓展,代码如下:
$rfr = $_SERVER [ 'HTTP_REFERER' ]; //if(!$rfr) $rfr='http://'.$_SERVER['HTTP_HOST']; if ( $rfr ) { $p = parse_url ( $rfr ); parse_str ( $p [ 'query' ], $pa ); $p [ 'host' ]= strtolower ( $p [ 'host' ]); $arr_sd_key = array ( 'baidu测试数据' => 'word' , 'google测试数据' => 'q' , 'sina测试数据.cn' => 'word' , 'sohu测试数据' => 'word' , 'msn测试数据' => 'q' , 'bing测试数据' => 'q' , '163测试数据' => 'q' , 'yahoo测试数据' => 'p' ); $keyword = '' ; $sengine = $p [ 'host' ]; foreach ( $arr_sd_key as $se => $kwd ) { if ( strpos ( $p [ 'host' ], $se )!==false) { $keyword = $pa [ $kwd ]; $sengine = $se ; break ; } } $sql = "insert into visit_log(domain,key_word,ct)" ; }上面的代码实现不了根据用户来的词给出相关结果,下面我来再进行调上面的函数,代码如下:
<?php function unescape( $str ) { $ret = '' ; $len = strlen ( $str ); for ( $i = 0; $i < $len ; $i ++) { if ( $str [ $i ] == '%' && $str [ $i +1] == 'u' ) { $val = hexdec( substr ( $str , $i +2, 4)); if ( $val < 0x7f) $ret .= chr ( $val ); else if ( $val < 0x800) $ret .= chr (0xc0 | ( $val >> 6)) . chr (0x80 | ( $val & 0x3f)); else $ret .= chr (0xe0 | ( $val >> 12)) . chr (0x80 | (( $val >> 6) & 0x3f)) . chr (0x80 | ( $val & 0x3f)); $i += 5; } else if ( $str [ $i ] == '%' ) { $ret .= urldecode( substr ( $str , $i , 3)); $i += 2; } else $ret .= $str [ $i ]; } return $ret ; } function ls_get_delim( $ref ) { $search_engines = array ( 'google测试数据.hk' => 'q' , 'google测试数据.tw' => 'q' , 'go.google测试数据' => 'q' , 'google测试数据' => 'q' , 'blogsearch.google测试数据' => 'q' , 'cn.bing测试数据' => 'q' , 'one.cn.yahoo测试数据' => 'p' , 'baidu测试数据' => 'wd' , 'soso测试数据' => 'w' , 'youdao测试数据' => 'q' , 'sogou测试数据' => 'query' ); $delim = false; // 判断 if (isset ( $search_engines [ $ref ])) { $delim = $search_engines [ $ref ]; } return $delim ; } function ls_get_refer() { // 判断前一页面的 URL 地址 $queryString = $_GET [ 'referer' ]; $queryString = unescape( $queryString ); if (!isset ( $queryString ) || ( $queryString == '' )) return false; $referer_info = parse_url ( $queryString ); $referer = $referer_info [ 'host' ]; //去除HdhCmsTest if ( substr ( $referer , 0, 4) == 'HdhCmsTest' ) $referer = substr ( $referer , 4); return $referer ; } function ls_getinfo( $what ) { $referer = ls_get_refer(); if (! $referer ) return false; $delimiter = ls_get_delim( $referer ); if ( $delimiter ) { $terms = ls_get_terms( $delimiter ); if ( $what == 'isref' && $terms != '' ) { return true; } if ( $what == 'terms' ) { echo $terms ; } } return false; } function yxiao_seems_utf8( $str ) { $length = strlen ( $str ); for ( $i = 0; $i < $length ; $i ++) { $c = ord( $str [ $i ]); if ( $c < 0x80) $n = 0; # 0bbbbbbb elseif (( $c & 0xE0) == 0xC0) $n = 1; # 110bbbbb elseif (( $c & 0xF0) == 0xE0) $n = 2; # 1110bbbb elseif (( $c & 0xF8) == 0xF0) $n = 3; # 11110bbb elseif (( $c & 0xFC) == 0xF8) $n = 4; # 111110bb elseif (( $c & 0xFE) == 0xFC) $n = 5; # 1111110b else return false; # Does not match any model for ( $j = 0; $j < $n ; $j ++) { # n bytes matching 10bbbbbb follow ? if ((++ $i == $length ) || ((ord( $str [ $i ]) & 0xC0) != 0x80)) return false; } } return true; } function ls_get_terms( $d ) { //取得查询值 $queryString = $_GET [ 'referer' ]; $queryString = unescape( $queryString ); $query_str = parse_url ( $queryString ); parse_str ( $query_str [query], $query_str ); $query = $query_str [ $d ]; $query = urldecode( $query ); $query = str_replace ( "'" , '', $query ); $query = str_replace ( '"' , '' , $query ); $query_array = preg_split( '/[s,+.]+/' , $query ); $query_terms = implode( ' ' , $query_array ); $terms = htmlspecialchars( $query_terms ); //gbk->utf8 if (!yxiao_seems_utf8( $terms )) { $terms = iconv( "GBK" , "UTF-8//IGNORE" , $terms ); } return $terms ; } if (ls_getinfo( 'isref' )) { ?> document.write( '<div id="serp"><p>' ) document.write( '更多搜索结果:<em><a href="/search?q=<?php ls_getinfo(terms); ?>" ' ) document.write( 'title="查看<?php ls_getinfo(terms); ?>的搜索结果" rel="nofollow"><?php ls_getinfo(terms); ?></a></em>' ) document.write( '</p></div>' ); <?php } ?>查看更多关于PHP记录用户通过搜索引擎进网站的关键词并给出的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30104