欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP+Ajax 网站SEO查询工具 提供代码_php实例

程序员文章站 2022-05-29 15:34:08
...
使用说明:
1.服务器必须至少支持allow_url_fopen,curl,fsockopen中的一种,具体请咨询服务器管理员。
2.请尊重别人的劳动成果!你可以任意修改并使用此程序,但不允许修改后公开发布!传播此程序亦应保持此压缩包完整性!
3.如果在使用中遇到任何问题,请访问http://www.php.cn/提出以便得到解决。
ajax.js

代码如下:

// Name: PHP+Ajax 网站SEO查询工具 
// Author: 年华<nianhua.liu@gmail.com> [Q:4908220] 
// Notice: Use It After READ readme.txt 
// (c) 2007 www.master8.net 
var xmlHttp; 
function makeRequest(queryString) { 
    var msXml = new Array(); 
    msXml[0] = "Microsoft.XMLHTTP"; 
    msXml[1] = "MSXML2.XMLHTTP.5.0"; 
    msXml[2] = "MSXML2.XMLHTTP.4.0"; 
    msXml[3] = "MSXML2.XMLHTTP.3.0"; 
    msXml[4] = "MSXML2.XMLHTTP"; 
    if (window.xmlHttpRequest) { 
        xmlHttp = new XMLHttpRequest(); 
    } else { 
        for (var i = 0; i < msXml.length; i++) { 
            try { 
                xmlHttp = new ActiveXObject(msXml[i]); 
                break; 
            } catch (e) { 
                xmlHttp = new xmlHttpRequest(); 
            } 
        } 
    } 
    xmlHttp.onreadystatechange = getRequest; 
    xmlHttp.open('post', 'seo.php', true); 
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlHttp.send(queryString); 
} 
function getRequest() { 
    if(xmlHttp.readyState==4) {  
        if(xmlHttp.status==200) { 
            $('seo_result').innerHTML =  xmlHttp.responseText; 
        } 
    }     
}


seo.php

代码如下:

<?php 
# Name: PHP+Ajax 网站SEO查询工具 
# Author: 年华<nianhua.liu@gmail.com> [Q:4908220] 
# Notice: Use It After READ readme.txt 
# (c) 2007 www.master8.net 
define('IN_SEO', TRUE); 
error_reporting(E_ERROR); 
set_time_limit(0); 
isset($_SERVER['HTTP_REFERER']) or exit('Invalid Request'); 
preg_match("/".$_SERVER['HTTP_HOST']."/i", $_SERVER['HTTP_REFERER']) or exit('Access Denied'); 
header("Content-Type:text/html;charset=gb2312"); 
include './robot.php'; 
require './function.php'; 
@extract($_POST); 
isset($job) && isset($domain) or exit('Invalid Request'); 
$domain = strtolower($domain); 
is_domain($domain) or exit('Invalid Domain'); 
$jobs=array('google','baidu','yahoo','msn','sogou','iask','so163','zhongsou','vnet'); 
$result = ''; 
if(in_array($job, $jobs)) 
{ 
    $result = get_seo_info($domain, $job); 
} 
elseif($job == 'alexa') 
{ 
    $result = Alexa($domain); 
} 
elseif($job == 'chinarank') 
{ 
    $result = ChinaRank($domain);     
} 
elseif($job == 'pagerank') 
{ 
    $result = '<img src="./images/pagerank'.PageRank($domain).'.gif" align="absmiddle" /> '.$domain; 
    if(substr($domain, 0, 4) == 'www.') 
    { 
        $domain = substr($domain, 4); 
        $result.= '  <img src="./images/pagerank'.PageRank($domain).'.gif" align="absmiddle" /> '.$domain; 
    } 
} 
elseif($job == 'sogourank') 
{ 
    $result = sogouRank($domain).' '.$domain; 
    if(substr($domain, 0, 4) == 'www.') 
    { 
        $domain = str_replace("www.", '', $domain); 
        $result = $result.'  '.sogouRank($domain).' '.$domain; 
    } 
} 
!empty($result) or exit('Invalid Request'); 
echo '<img src="./images/yes.gif" align="absmiddle" /> '.$result; 
?>



function.php

代码如下:

<?php 
# Name: PHP+Ajax 网站SEO查询工具 
# Author: 年华<nianhua.liu@gmail.com> [Q:4908220] 
# Notice: Use It After READ readme.txt 
# (c) 2007 www.master8.net 
defined('IN_SEO') or exit('Access Denied'); 
function get_seo_info($domain, $bot) 
{ 
    global $ROBOT; 
    if(!array_key_exists($bot, $ROBOT)) return 'Invalid Robot'; 
    $content = ''; 
    $site_info = ''; 
    $link_info = ''; 
    $content = get_content($ROBOT[$bot]['site_url'].$domain); 
    if(empty($content)) return 'Unkown Error...'; 
    if(preg_match($ROBOT[$bot]['site_pattern'], $content, $matches)) $site_info = $matches[1]; 
    $content = get_content($ROBOT[$bot]['link_url'].$domain); 
    if(preg_match($ROBOT[$bot]['link_pattern'], $content, $matches)) $link_info = $matches[1]; 
    return $ROBOT[$bot]['name'].' 收录: <a href="'.$ROBOT[$bot]['site_url'].$domain.'" target="_blank">'.$site_info.'</a>  反向链接: <a href="'.$ROBOT[$bot]['link_url'].$domain.'" target="_blank">'.$link_info.'</a>'; 
} 
function sogouRank($domain) 
{ 
    $rank = ''; 
    $pr = 0; 
    $content = get_content('http://www.sogou.com/web?query='.$domain); 
    if(preg_match("/<\/span>([0-9]{1,})<\/dd>/", $content, $matches)) 
    { 
        $pr = intval($matches[1]); 
        $width = ceil(65*$pr/100); 
        $rank = '<img src="./images/sg_left.gif" width="2" height="11" /><img src="./images/sg_left_img.gif" width="'.$width.'" height="11" /><img src="./images/sg_right_img.gif" width="'.(65-$width).'" height="11" /><img src="./images/sg_right.gif" width="2" height="11" />'; 
    } 
    $rank = '<a href="http://www.sogou.com/web?query=link%3A'.$domain.'" target="_blank" title="搜狗Rank:'.$pr.'">'.$rank.'</a> '.$pr; 
    return $rank; 
} 
function ChinaRank($domain) 
{ 
    $rank = ''; 
    $content = get_content('http://www.chinarank.org.cn/detail/Info.do?url='.$domain); 
    if(preg_match("/<strong>排名<\/strong>(.*)<\/tr>/", $content, $matches)) 
    { 
        $p = trim(str_replace('</td>', '', $matches[1])); 
        $p = explode("<td>", $p); 
        if(isset($p[1])) $rank.= ' 今日:'.$p[1]; 
        if(isset($p[2])) $rank.= ' 本周:'.$p[2]; 
        if(isset($p[3])) $rank.= ' 三月:'.$p[3]; 
    } 
    $rank = '<a href="http://www.chinarank.org.cn/detail/Info.do?url='.$domain.'" target="_blank">'.$rank.'</a>'; 
    return $rank; 
} 
function Alexa($domain) 
{ 
    $alexa = ''; 
    $content = get_content('http://www.alexa.com/data/details/traffic_details?url='.$domain); 
    if(preg_match("/3 mos. Change([\s\S]*?)<\/table>/", $content, $matches)) 
    { 
        $change = strpos($matches[1], 'down_arrow.gif') ? '下降' : '上升'; 
        $p = strip_tags($matches[1], '<td>'); 
        $p = trim(str_replace(array(" ", "\n", "</td>"), array('', '', ''), $p)); 
        $p = explode("<td>", $p); 
        if(isset($p[1])) $alexa.= ' 今日:'.$p[1]; 
        if(isset($p[2])) $alexa.= ' 本周:'.$p[2]; 
        if(isset($p[3])) $alexa.= ' 本月:'.$p[3]; 
        if(isset($p[4])) $alexa.= ' '.$change.':'.$p[4]; 
    } 
    if(preg_match("/Review for $domain:<\/span> (.*)<br>/", $content, $matches)) 
    { 
        $alexa = $alexa.' 等级:'.$matches[1]; 
    } 
    $alexa = '<a href="http://www.alexa.com/data/details/traffic_details?url='.$domain.'" target="_blank">'.$alexa.'</a>'; 
    return $alexa; 
} 
function is_domain($domain) 
{ 
    if(preg_match("/^([0-9a-z\-]{1,}\.)?[0-9a-z\-]{2,}\.([0-9a-z\-]{2,}\.)?[a-z]{2,}$/i", $domain)) 
    { 
        return true; 
    } 
    else 
    { 
        return false; 
    } 
} 
function get_content($url) 
{ 
    if(!strpos($url, '://')) return 'Invalid URI'; 
    $content = ''; 
    if(ini_get('allow_url_fopen')) 
    { 
        $content = file_get_contents($url); 
    }  
    elseif(function_exists('curl_init'))  
    { 
        $handle = curl_init(); 
        curl_setopt($handle, CURLOPT_URL, $url); 
        curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5); 
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 0); 
        $content = curl_exec($handle); 
        curl_close($handle); 
    } 
    elseif(function_exists('fsockopen')) 
    { 
        $urlinfo = parse_url($url); 
        $host = $urlinfo['host']; 
        $str = explode($host, $url); 
        $uri = $str[1]; 
        unset($urlinfo, $str); 
        $content = ''; 
        $fp = fsockopen($host, 80, $errno, $errstr, 30); 
        if(!$fp) 
        { 
            $content = 'Can Not Open Socket...'; 
        } 
        else 
        { 
            $out = "GET $uri   HTTP/1.1\r\n"; 
            $out.= "Host: $host \r\n"; 
            $out.= "Accept: */*\r\n"; 
            $out.= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; 
            $out.= "Connection: Close\r\n\r\n"; 
            fputs($fp, $out); 
            while (!feof($fp)) 
            { 
                $content .= fgets($fp, 4069); 
            } 
            fclose($fp); 
        } 
    } 
    if(empty($content)) $content = 'Can Not Open Url, Please Check You Server ... <br/>For More Information, Please Visit www.master8.net'; 
    return $content; 
} 
function PageRank($domain) 
{ 
    $result = get_content('http://www.google.com/search?client=navclient-auto&ch=6'. GCH(strord('info:' . $domain)) . '&ie=UTF-8&oe=UTF-8&features=Rank&q=info:' . urlencode($domain)); 
    if (preg_match('/\d+:\d+:(\d+)/', $result, $matches)) 
    { 
        return intval($matches[1]); 
    }  
    else 
    { 
        return 0; 
    } 
} 
function strord($string) 
{ 
    $strlen = strlen($string); 
    for($i = 0; $i < $strlen; $i++)  
    { 
        $result[$i] = ord($string{$i}); 
    } 
    return $result; 
} 
function GCH($url, $length=null) 
{ 
    $length = sizeof($url); 
    $a = $b = 0x9E3779B9; 
    $c = 0xE6359A60; 
    $k = 0; 
    $len = $length; 
    while($len >= 12) 
    { 
        $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k + 3] << 24)); 
        $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k + 7] << 24)); 
        $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] << 24)); 
        $mix = mix($a, $b, $c); 
        $a = $mix[0]; 
        $b = $mix[1]; 
        $c = $mix[2]; 
        $k += 12; 
        $len -= 12; 
    } 
    $c += $length; 
    switch($len) { 
        case 11: $c += ($url[$k + 10] << 24); 
        case 10: $c += ($url[$k + 9] << 16); 
        case 9 : $c += ($url[$k + 8] << 8); 
        case 8 : $b += ($url[$k + 7] << 24); 
        case 7 : $b += ($url[$k + 6] << 16); 
        case 6 : $b += ($url[$k + 5] << 8); 
        case 5 : $b += ($url[$k + 4]); 
        case 4 : $a += ($url[$k + 3] << 24); 
        case 3 : $a += ($url[$k + 2] << 16); 
        case 2 : $a += ($url[$k + 1] << 8); 
        case 1 : $a += ($url[$k + 0]); 
    } 
    $mix = mix($a, $b, $c); 
    return $mix[2]; 
} 
function mix($a, $b, $c) 
{ 
    $a -= $b; 
    $a -= $c; 
    $a ^= (zeroFill($c, 13)); 
    $b -= $c; 
    $b -= $a; 
    $b ^= ($a << 8); 
    $c -= $a; 
    $c -= $b; 
    $c ^= (zeroFill($b, 13)); 
    $a -= $b; 
    $a -= $c; 
    $a ^= (zeroFill($c, 12)); 
    $b -= $c; 
    $b -= $a; 
    $b ^= ($a << 16); 
    $c -= $a; 
    $c -= $b; 
    $c ^= (zeroFill($b, 5)); 
    $a -= $b; 
    $a -= $c; 
    $a ^= (zeroFill($c, 3)); 
    $b -= $c; 
    $b -= $a; 
    $b ^= ($a << 10); 
    $c -= $a; 
    $c -= $b; 
    $c ^= (zeroFill($b, 15)); 
    return array($a, $b, $c); 
} 
function zeroFill($a, $b) 
{ 
    $z = hexdec(80000000); 
    if($z & $a)  
    { 
        $a = ($a >> 1); 
        $a &= (~ $z); 
        $a |= 0x40000000; 
        $a = ($a >> ($b - 1)); 
    } 
    else 
    { 
        $a = ($a>>$b); 
    } 
    return $a; 
} 
?>


robot.php

代码如下:

<?php 
# Name: PHP+Ajax 网站SEO查询工具 
# Author: 年华<nianhua.liu@gmail.com> [Q:4908220] 
# Notice: Use It After READ readme.txt 
# (c) 2007 www.master8.net 
defined('IN_SEO') or exit('Access Denied'); 
$ROBOT['google']['name'] = 'Google'; 
$ROBOT['google']['site_url'] = 'http://www.google.com/search?hl=zh-CN&q=site%3A'; 
$ROBOT['google']['site_pattern'] = "/上约有 <b>(.*)<\/b> 项符合/"; 
$ROBOT['google']['link_url'] = 'http://www.google.com/search?hl=zh-CN&q=link%3A'; 
$ROBOT['google']['link_pattern'] = "/约有 <b>(.*)<\/b> 项链接到/"; 
$ROBOT['baidu']['name'] = '百度'; 
$ROBOT['baidu']['site_url'] = 'http://www.baidu.com/s?wd=site%3A'; 
$ROBOT['baidu']['site_pattern'] = "/找到相关网页约(.*)篇/"; 
$ROBOT['baidu']['link_url'] = 'http://www.baidu.com/s?wd=domain%3A'; 
$ROBOT['baidu']['link_pattern'] = "/找到相关网页约(.*)篇/"; 
$ROBOT['yahoo']['name'] = 'Yahoo'; 
$ROBOT['yahoo']['site_url'] = 'http://search.cn.yahoo.com/search?p=site%3A'; 
$ROBOT['yahoo']['site_pattern'] = "/共返回约 <strong>(.*)<\/strong> 项/"; 
$ROBOT['yahoo']['link_url'] = 'http://search.cn.yahoo.com/search?p=linkdomain%3A'; 
$ROBOT['yahoo']['link_pattern'] = "/共返回约 <strong>(.*)<\/strong> 项/"; 
$ROBOT['sogou']['name'] = '搜狗'; 
$ROBOT['sogou']['site_url'] = 'http://www.sogou.com/web?query=site%3A'; 
$ROBOT['sogou']['site_pattern'] = "/找到 (.*) 个网页/"; 
$ROBOT['sogou']['link_url'] = 'http://www.sogou.com/web?query=link%3A'; 
$ROBOT['sogou']['link_pattern'] = "/找到 (.*) 个网页/"; 
$ROBOT['iask']['name'] = '新浪'; 
$ROBOT['iask']['site_url'] = 'http://www.iask.com/w?k=site%3A'; 
$ROBOT['iask']['site_pattern'] = "/找到 <span class=\"ar\">(.*)<\/span> 篇网页/"; 
$ROBOT['iask']['link_url'] = 'http://www.iask.com/w?k=domain%3A'; 
$ROBOT['iask']['link_pattern'] = "/找到 <span class=\"ar\">(.*)<\/span> 篇网页/"; 
$ROBOT['msn']['name'] = 'MSN'; 
$ROBOT['msn']['site_url'] = 'http://search.msn.com/results.aspx?q=site%3A'; 
$ROBOT['msn']['site_pattern'] = "/<h5>Page 1 of (.*)results<\/h5>/"; 
$ROBOT['msn']['link_url'] = 'http://search.msn.com/results.aspx?q=link%3A'; 
$ROBOT['msn']['link_pattern'] = "/<h5>Page 1 of (.*)results<\/h5>/"; 
$ROBOT['so163']['name'] = '网易'; 
$ROBOT['so163']['site_url'] = 'http://cha.so.163.com/so.php?q=site%3A'; 
$ROBOT['so163']['site_pattern'] = "/共<\/span><SPAN class=black5> (.*) <\/span>/"; 
$ROBOT['so163']['link_url'] = 'http://cha.so.163.com/so.php?q=link%3A'; 
$ROBOT['so163']['link_pattern'] = "/共<\/span><SPAN class=black5> (.*) <\/span>/"; 
$ROBOT['zhongsou']['name'] = '中搜'; 
$ROBOT['zhongsou']['site_url'] = 'http://p.zhongsou.com/p?w=site%3A'; 
$ROBOT['zhongsou']['site_pattern'] = "/找到(.*)条结果/"; 
$ROBOT['zhongsou']['link_url'] = 'http://p.zhongsou.com/p?w=link%3A'; 
$ROBOT['zhongsou']['link_pattern'] = "/找到(.*)条结果/"; 
$ROBOT['vnet']['name'] = '电信114'; 
$ROBOT['vnet']['site_url'] = 'http://search.114.vnet.cn/search_web.html?kw=site%3A'; 
$ROBOT['vnet']['site_pattern'] = "/共搜到约(.*)个网页/"; 
$ROBOT['vnet']['link_url'] = 'http://search.114.vnet.cn/search_web.html?kw=link%3A'; 
$ROBOT['vnet']['link_pattern'] = "/共搜到约(.*)个网页/"; 
?>



index.html

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>PHP+Ajax 网站SEO查询工具 Powered By Master8.NET</title> 
<meta name="author" content="站长吧 Master8.NET" />  
<meta name="description" content="PHP+Ajax 网站SEO查询工具" />  
<meta name="keywords" content="PHP,Ajax,网站SEO,查询,工具" /> 
<style> 
body {  
margin-top:10px; 
background-color:#FFFFFF;  
font-family: Verdana, Arial, Helvetica, sans-serif;  
font-size: 12px;  
color: #000000;  
} 
img { 
border:none; 
} 
a:link,a:visited,a:active {  
color:#333333;  
text-decoration:none;  
}  
a:hover {  
color:#FF0000;  
text-decoration:underline; 
} 
.p { 
margin:auto; 
padding:5px; 
width:610px; 
} 
.line { 
border-bottom:#E4E4E4 1px solid; 
} 
</style> 
<script type="text/javascript" src="./ajax.js"></script> 
<script type="text/javascript"> 
function doseo() { 
if(!$('domain').value.match(/^([a-z0-9\-]{1,}\.)?[a-z0-9\-]{2,}\.([a-z0-9\-]{1,}\.)?[a-z0-9]{2,}$/i)){ 
    alert('哈罗~~~首先,请输入正确的域名 :P '); 
    $('domain').value = ''; 
    $('domain').focus(); 
    return; 
    } 
    $('seo_result').innerHTML = ' <img src="./images/loading.gif" width="94" height="15" align="absmiddle" alt="正在加载,请稍候...
如果长时间未响应,请尝试重新查询"/> Loading...'; 
    $('seo_result').style.display = ''; 
    var jobs = new Array(); 
    jobs[0] = "alexa"; 
    jobs[1] = "pagerank"; 
    jobs[2] = "google"; 
    jobs[3] = "baidu"; 
    jobs[4] = "chinarank"; 
    jobs[5] = "sogourank"; 
    jobs[6] = "yahoo"; 
    jobs[7] = "msn"; 
    jobs[8] = "sogou"; 
    jobs[9] = "iask"; 
    jobs[10] = "so163"; 
    jobs[11] = "zhongsou"; 
    jobs[12] = "vnet"; 
    for (var i = 0; i < jobs.length; i++) { 
        if($(jobs[i]+'_check').checked == false) continue; 
        makeRequest('job='+jobs[i]+'&domain='+$('domain').value); break; 
    } 
} 
function $(ID) { 
    return document.getElementById(ID); 
} 
</script> 
</head> 
<body> 
<p class="p line"> 
    <input type="input" size="18" name="domain" id="domain" value="www.master8.net" style="height:12px;"  onmouseover="this.select()" ondblclick="this.value='';" title="请输入您的网站域名
双击鼠标清空输入框"/> 
    <input type="radio" name="type" value="alexa" id="alexa_check" />Alexa排名 
    <input type="radio" name="type" value="pagerank" id="pagerank_check" checked />PageRank  
    <input type="radio" name="type" value="google" id="google_check"/>Google收录 
    <input type="radio" name="type" value="baidu" id="baidu_check"/>Baidu收录 
    <img src="./images/doseo.gif" width="52" height="18" align="absmiddle" onclick="doseo();" style="cursor:pointer" alt="网站SEO查询"/> 
    <img src="./images/moreseo.gif" width="52" height="18" align="absmiddle" onclick="$('seo_more').style.display=$('seo_more').style.display=='none'?'':'none';" style="cursor:pointer" alt="更多SEO查询"/> 
</p> 
<p class="p line" style="display:none" id="seo_more"> 
    <input type="radio" name="type" value="chinarank" id="chinarank_check" />ChinaRank排名 
    <input type="radio" name="type" value="sogourank" id="sogourank_check" />搜狗Rank  
    <input type="radio" name="type" value="yahoo" id="yahoo_check"/>Yahoo 
    <input type="radio" name="type" value="msn" id="msn_check"/>MSN 
    <input type="radio" name="type" value="sogou" id="sogou_check"/>搜狗 
    <input type="radio" name="type" value="iask" id="iask_check"/>新浪 
    <input type="radio" name="type" value="so163" id="so163_check"/>网易 
    <input type="radio" name="type" value="zhongsou" id="zhongsou_check"/>中搜 
    <input type="radio" name="type" value="vnet" id="vnet_check"/>电信114 
</p> 
<p class="p line" style="display:none" id="seo_result"> 
</p> 
<p class="p" style="font-size:9px;text-align:right;"> 
    <a href="http://www.master8.net" target="_blank">Powered By Master8.NET</a> </p> 
</body> 
</html>