php 收录查询baidu快照与收录页面

 更新时间:2016年11月25日 16:30  点击:1663
下面二个函数是用来获取网站收录查询的源码了,这是用来查询baidu快照与收录页面哦。

function baidu()
{
 global $murl,$furl;
 $url = "http://www.baidu.com/s?wd=site:$furl";
 $page = file_get_contents($url);
 $PageNum = "0";
 $PageNum = str_replace(",","",cut($page,"找到相关网页约", "篇" ));
 if ($PageNum == "") $PageNum = str_replace(",","", cut($page,"找到相关网页", "篇"));
 if ($PageNum == "") $PageNum = "0";
 echo "<a href='".$url."' target='_blank'>$PageNum</a>";
}

function baidukz()
{
 global $murl,$furl;
 $url = "http://www.baidu.com/s?wd=$furl";
 $page = file_get_contents($url);
 $kzdate = "0";
 $kzdate = cut($page,"<font color=#008000>$furl", "</font>" );
 if($kzdate!=""){
  /// 37K 2008-9-13
  $kzarray = explode ('K', $kzdate);
  $kzdate = trim($kzarray[1]);
  if(trim($kzarray[1])!=""){
   echo "<a href='".$url."' target='_blank'>$kzdate</a>";
  }
 
 }
 else{
  echo escape("无");
 }
}

本内容是用一查询google 收录查询与pr 查询 的php源码下载哦,下载后稍加修改就可以使用了哦。

function google()
{
 //在同时间过于频繁地扫描Google搜索结果,GG会屏蔽该IP.因此冰河在此暂时去掉了此功能
 //诸位网友如果想开放此功能可以,可将下面这一行加上注释即可,谢谢!
 echo "0"; return "";
 global $murl,$furl;
 $url = "http://www.google.cn/search?hl=zh-CN&q=site:$furl";
 $page = file_get_contents($url);
 //echo $page;
 $PageNum = "0";
 $PageNum = str_replace(",","",cut($page,"<p>&nbsp;约有 <b>", "</b> 项符合"));
 if ($PageNum == "") $PageNum = "0";
 echo "<a href='".$url."' target='_blank'>$PageNum</a>";
}

function pr()
{
 global $murl,$furl;
 echo GetPR("http://$furl") ;
}

function cut($string,$start,$end)
{
 $message = explode($start,$string);
 $message = explode($end,$message[1]);
 return $message[0];
}

//功能与javascript中的escape一样
function escape($str) {
  preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$r);
  $ar = $r[0];
  foreach($ar as $k=>$v) {
    if(ord($v[0]) < 128)
      $ar[$k] = rawurlencode($v);
    else
      $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
  }
  return join("",$ar);
}

function unescape($str) {
  $str = rawurldecode($str);
  preg_match_all("/(?:%u.{4})|.+/",$str,$r);
  $ar = $r[0];
  foreach($ar as $k=>$v) {
    if(substr($v,0,2) == "%u" && strlen($v) == 6)
      $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
  }
  return join("",$ar);
}


//下面的函数用于查pr
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;
}

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 GoogleCH($url, $length=null, $init=GOOGLE_MAGIC)
{
 if(is_null($length))
 {
  $length = sizeof($url);
 }
 $a = $b = 0x9E3779B9;
 $c = $init;
 $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 strord($string) {
 for($i=0;$i<strlen($string);$i++) {
 $result[$i] = ord($string{$i});
 }
 return $result;
}

function ReadPR($link)
{
 $fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30);
 if (!$fp)
 {
  echo "$errstr ($errno)n";
  exit(1);
 }
 else
 {
  $out = "GET $link HTTP/1.0rn";
  $out .= "Host: toolbarqueries.google.comrn";
  $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114.9-big; Linux 2.6)rn";
  $out .= "Connection: Closernrn";
  fwrite($fp, $out);
  do{
  $line = fgets($fp, 128);
  }while ($line !== "rn");
  $data = fread($fp,8192);
  fclose ($fp);
  return $data;
 }
}

function GetPR($url)
{
 $url ='info:'.$url;
 $ch = GoogleCH(strord($url));
 $data = ReadPR("/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url");
 $rankarray = explode (':', $data);
 if(trim($rankarray[2])!=""){
  return $rankarray[2];
 }
 else
  return "0";
}

下面来看看我提供的一款php goolge pr查询程序代码哦,好了费话不说多了来看看吧。

//下面的函数用于查pr
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;
}

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 GoogleCH($url, $length=null, $init=GOOGLE_MAGIC)
{
 if(is_null($length))
 {
  $length = sizeof($url);
 }
 $a = $b = 0x9E3779B9;
 $c = $init;
 $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 strord($string) {
 for($i=0;$i<strlen($string);$i++) {
 $result[$i] = ord($string{$i});
 }
 return $result;
}

function ReadPR($link)
{
 $fp = fsockopen ("www.google.com", 80, $errno, $errstr, 30);
 if (!$fp)
 {
  echo "$errstr ($errno)n";
  exit(1);
 }
 else
 {
  $out = "GET $link HTTP/1.0rn";
  $out .= "Host: toolbarqueries.google.comrn";
  $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114.9-big; Linux 2.6)rn";
  $out .= "Connection: Closernrn";
  fwrite($fp, $out);
  do{
  $line = fgets($fp, 128);
  }while ($line !== "rn");
  $data = fread($fp,8192);
  fclose ($fp);
  return $data;
 }
}

function GetPR($url)
{
 $url ='info:'.$url;
 $ch = GoogleCH(strord($url));
 $data = ReadPR("/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url");
 $rankarray = explode (':', $data);
 if(trim($rankarray[2])!=""){
  return $rankarray[2];
 }
 else
  return "0";
}

友情连接是站长们常用的东西哦,如果一个网连接太多,要一个个检查多麻烦了,为了方便我们提供了php 友情链接,批量查询程序,只要输入友情连接就可以进行查询哦。

<?php
$max_allow_links = 100; // 最大许可检查的链接数目

// 此函数转载于www.lian123.com,特别鸣谢
function my_file_get_contents($url, $timeout=30) {
 if ( function_exists('curl_init') ) {
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $url);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $file_contents = curl_exec($ch);
  curl_close($ch);
 } else if ( ini_get('allow_url_fopen') == 1 || strtolower(ini_get('allow_url_fopen')) == 'on' ) {
  $file_contents = @file_get_contents($url);
 } else {
  $file_contents = '';
 }
 return $file_contents;
}

// 开始检查
if( isset($_GET['mod']) && $_GET['mod'] == 'check_now' && isset($_GET['id']) && isset($_GET['my_url']) && isset($_GET['url']) && isset($_GET['auto_check']) ){
 $js_id = 'parent.document.getElementById("s_' . $_GET['id'] . '").innerHTML';
 if( strstr($_GET['url'],$_GET['my_url']) ) {
   echo '<script>' . $js_id . ' = "内部链接";</script>';

 } else if( !stristr($_GET['url'],'http://') ) {
   echo '<script>' . $js_id . ' = "错误链接";</script>';
 } else {
  $s = my_file_get_contents($_GET['url']);

  if( trim($s) == '' ){
   echo '<script>' . $js_id . ' = "抓取内容失败";</script>';
  } else  if( stristr($s,$_GET['my_url']) ){
   echo '<script>' . $js_id . ' = "<font color=green>包含链接,检查通过</font>";</script>';
  } else {
   echo '<script>' . $js_id . ' = "<font color=red>没有找到链接,请核查</font>";</script>';
  }
 }

 if($_GET['auto_check']==1){
  echo '<script>parent.checkLink(' . ($_GET['id']+1) . ');</script>';
 }

 exit('<br />done!');
 
}
?>
<!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>
  <title>《做网站》友情链接自动检查程序</title>
  <meta name="generator" content="editplus" />
  <meta name="author" content="www.zuowangzhang.com.cn" />
 
  <meta name="description" content="我们很BS这样的人,当时双方都交换了首页链接,但对方却随意取消和您交换的友情链接(即对方去掉您网站的链接,而您却还保留了它的链接)有了本程序,您可以快速、自动的检查您的友情链接网址,查看对方的网站是否去掉了您的链接。" />
 <style>
body,td{font-size:9pt;font-family:arial;}
a:link,a:visited{color:blue;}
a:hover{color:red;}

A.black:link,A.black:visited{color:black;text-decoration: none;}

.main_tb {width:580px;}
.main_tb .tb_title {background-color: #CCFFFF;}
.main_tb .tr_title {background-color: #A6D9D2;height:40px;}

</style>
<base target=_blank></base>
 </head>

 <body>
<iframe src="about:blank" width=0  height=0 name="hidden_iframe" id="hidden_iframe"></iframe>

<script type="text/javascript">
<!--
my_url = '';
checking_str = "正在检查...";
check_time_out = 25000;
auto_check = 0;


function checkZuoWangZhang() {
 var all_code = window.frames["zuoWangZhang.com.cn"].document.body.innerHTML;
 if(all_code.indexOf('http://') ==-1){
  alert("请直接将您网站的文字和图片链接复制Ctrl+c,粘贴Ctrl+v进来 ");
  return false;
 }
 if(f.my_url.value.indexOf('.') ==-1){
  alert("请输入您的网站首页地址");
  return false;
 }

 if(f.my_url.value.indexOf('http://') ==-1){
  f.my_url.value = 'http://' + f.my_url.value;
 }

 if( f.my_url.value.substr(f.my_url.value.length-1,1) == '/' ) {
  f.my_url.value = f.my_url.value.substr(0,f.my_url.value.length-1);
 }

 f.html_code.value = all_code;
 return true;
}

function checkTimeout(id) {
 if(document.getElementById('s_'+id).innerHTML!=checking_str){
  return false;
 }
 document.getElementById('s_'+id).innerHTML = "可能超时,<a href='#' onclick='return checkLink("+id+");'>重新检查</a>";

 if(auto_check==1){
  checkLink((id+1));
 }
 return true;
}

function checkLink(id) {
 if(document.getElementById('s_'+id)==null){
  auto_check = 0;
  return false;
 }
 if( auto_check==1 && document.getElementById('s_'+id).innerHTML.indexOf('超时')!=-1 ){
  alert("请等自动检查全部结束以后,再进行操作!");
  return false;
 }
 document.getElementById('hidden_iframe').src = 'check_links.php?mod=check_now&url=' + escape(document.getElementById('u_'+id).href) + '&id=' + id + '&my_url='+ escape(my_url) + '&auto_check=' + auto_check + '';

 document.getElementById('s_'+id).innerHTML = checking_str;

 setTimeout("checkTimeout("+id+")",check_time_out);

 return false;
}

function autoCheckLink(id) {
 checkLink(id);
 //setTimeout("checkLink("+(id+1)+")",(check_time_out+1000));
}
//-->
</script>

 

<center>
<h4>友情链接自动检查程序</h4>
我们很BS这样的人,当时双方都交换了首页链接,但对方却随意取消和您交换的友情链接(即对方去掉您网站的链接,而您却还保留了它的链接)
<br />&nbsp;<br />
有了本程序,您可以快速、自动的检查您的友情链接网址,查看对方的网站是否去掉了您的链接。

<br />

<?php

// 显示获取到的链接地址
if( isset($_POST['html_code']) && isset($_POST['my_url']) ){
 
 preg_match_all("/<a[strn]{1,}[^<]{0,}href=["']{0,}(https?://.*)[strn"'>]{1,}/isU",stripslashes($_POST['html_code']),$ary);

 if( isset($ary[1]) && count($ary[1])>0 ){
  echo '<table bordercolordark="#ffffff" align="center" bordercolorlight="#000000" border="1"  cellspacing="0" cellpadding="4" class=main_tb><tr><td colspan=10 class=tb_title> <font size="4" ><b>开始检查</b></font>
  <br />
   检查下列网址是否包含有 <font color=green>' . $_POST['my_url'] . '</font> 的链接
  </td></tr>
  <tr class=tr_title>
   <td>序号</td>
   <td align=left>被检查的网址</td>
   <td >检查结果</td>
   </tr>
  ';
  for($i=0; $i<count($ary[1]); $i++){
   
   $check_str = ($_POST['auto_check']==0) ? '<a href="#" onclick="return checkLink(' . $i . ');">开始检查</a>' : '<font color=gray>等待中...</font>';

   echo '<tr>
   <td>' . ($i+1) . '.</td>
   <td align=left><a href="' . $ary[1][$i] . '" id=u_' . $i . '  target=_blank>' . $ary[1][$i] . '</a></td>
   <td id=s_' . $i . '>' . $check_str . '</td>
   </tr>';

   if($i>$max_allow_links){
    break;
   }
  }
  echo '</table>';
 }
 echo '<script>my_url="' . trim($_POST['my_url']) . '";auto_check=' . (int)$_POST['auto_check'] . ';</script>';

 if( $_POST['auto_check']==1 ){
  echo '<script>autoCheckLink(0);</script>';
 }
 
}

?>
 

<form method="post" action="check_links.php" name="formZuoWangZhang" target=_top>

必须包含地址(自己网站首页):<input type="text" name="my_url" size=50 value="<?php if(isset($_POST['my_url'])){echo $_POST['my_url'];}?>" />
<br />
自动或手工检查:<select name="auto_check"><option value=1>自动</option><option value=0>手工</option></select>
<br />&nbsp;<br />
要检查的网站(下面是可视化输入框,请直接将文字链接和图片链接复制,粘贴 到下面即可):<br />
<iframe id="zuoWangZhang.com.cn" name="zuoWangZhang.com.cn" height="150" width="600" style="padding:0px;"></iframe>
<script>window.frames["zuoWangZhang.com.cn"].document.designMode="On";</script>

 

<br />&nbsp;<br />
<input type="hidden" name="html_code" />

 

<table width=600>
 <tr>
  <td width=100 align=center>&nbsp;</td>
  <td width=400 align=center><input type="submit" onclick="return checkZuoWangZhang();" value="  开始检查  " /></td>
  <td width=100 align=right><a href=# onclick="return setTestLinks(this);">载入测试数据</a>
</td>
 </tr>
</table>
 
<br />&nbsp;<br />

如果您不知道怎么开始,请点击 <a href=# onclick="return setTestLinks(this);">载入测试数据</a>,然后点击 <input type="submit" onclick="return checkZuoWangZhang();" value="开始检查" style="height:19px;" /> 查看演示

<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />

<!-- 欢迎转载,但请保留下面的文字和链接,修改链接会被BS,谢谢合作 -->

本程序由《<A HREF="http://www.ZuoWangZhanG.com.cn/" class=black>做网站</a>》原创,完全开源!<a href="http://www.zuowangzhang.com.cn/download/check_links.zip">下载</a>
<br />&nbsp;<br />欢迎各位转载,但请保留<A HREF="http://www.ZuoWangZhang.com.cn/ZuoWangZhan/RuHeZuoWangZhan/"  class=black>如何做网站</a>的文字,谢谢!

<br />&nbsp;<br />

欢迎您 <a href="http://www.zuowangzhang.com.cn/hbcms/user/add_msg.php?to_user_id=1&to_user_name=网站管理员" target=_blank>给作者提出反馈意见</a>,我会不断的改善它,推出更好用的版本。

</form>
<script type="text/javascript">
f = document.formZuoWangZhang;
</script>


</center>

<?php
if(isset($_POST['html_code'])){
 echo '
 <div id=old_links style="display:none;">
 ' . stripslashes($_POST['html_code']) . '
 </div>
 <script type="text/javascript">

 function setOldLinks() {

  window.frames["zuoWangZhang.com.cn"].document.body.innerHTML = document.getElementById("old_links").innerHTML;
  document.getElementById("old_links").innerHTML = "";
 }
 setTimeout("setOldLinks()",3000);

 </script>';
 
}
 
?>


<p>&nbsp;</p>

 

 

 

 

 


<span id=test_links>

<TABLE align=center  cellpadding='1' cellspacing='0' style="font-size:9pt;">
<TR >
 <TD colspan="6">
我的友情连接:
</td><TD colspan=2>
<div align=right>
</td></tr><tr>
<!-- 文字链接 -->
 <td>
 <A HREF="http://www.hao123.com/">Hao123
 </td>
   <td>
 <A HREF="http://www.265.com/">265
 </td>
   <td>
 <A HREF="http://site.baidu.com/">百度网址
 </td>
   <td>
 <A HREF="http://www.zuoWANGZHANG.com.cn/">建网站</a>
 </td>
   <td>
 <a class="l" href="http://site.yahoo.com.cn/" target="_blank">雅虎网址</a>
 
 </td>
   <td>
 <A HREF="http://www.baidu.com/">baidu
 </td>

   <td>
<a  href="http://daohang.google.cn/" target="_blank">Google导航</a>
 </td>  
  </tr>

<!-- 图片链接 -->
<tr>

 
   <td>
 <A HREF="http://www.lian123.com/"><img src="http://cn.yimg.com/sp/yahoohp060323/logo_yahoo.gif" width=88 height=31 border=0  ></A>
 </td>
   <td>
 <A HREF="http://www.yisou.com/"><img src="http://static.php.net/www.php.net/images/logos/php-power-white.gif" width=88 height=31 border=0 ></A>
 </td>
   <td>
 <A HREF="http://www.google.cn/"><img src="http://www.mysql.com/common/logos/mysql_100x52-64.gif" width=88 height=31 border=0  ></A>
 </td>
 <td>
 
   <td>
 <A HREF="http://www.jipiaojiage.cn/"><img src="http://image2.sina.com.cn/home/images/sina_logo2.gif" width=88 height=31 border=0  ></A>
 </td>
   <td>
 <A HREF="http://www.google.com/"><img src="http://www.google.com/logos/lunarnewyear03.gif" width=88 height=31 border=0 alt="谷歌Google"></A>
 </td>
  <td>
 <a class="l"   href="http://123.sogou.com/" target="_blank">搜狗网址</a>
 </td>
  </tr>
  <tr><td colspan=10>
其他测试链接:
<a href="http://www.163.com/">163内部链接测试</a>
  </td></tr>
</TABLE>

 

</span>


<script type="text/javascript">
<!--

document.write('<sty'+'le>#te'+'st_li'+'nks {disp'+'lay:no'+'ne;}</sty'+'le>');
function setTestLinks(t) {
 window.frames["zuoWangZhang.com.cn"].document.body.innerHTML = document.getElementById('test_links').innerHTML;

 document.getElementById('test_links').innerHTML = '';

 f.my_url.value = 'http://www.163.com/';
 return false;
}

 
 
 
//-->
</script>

 

 


</body>
</html>

我们下面的一段代码是根据IP来判决用户所以城市哦,php 判断IP所在地源码完全公开的呼

function convertIp($ip) {
 $return = '';
 if(preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
  $iparray = explode('.', $ip);
  if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
   $return = '- LAN';
  } elseif ($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
   $return = '- Invalid IP Address';
  } else {
   $ipfile = MOOPHP_ROOT.'/plugins/ipdata/wry.dat';
   if(!@file_exists($ipfile)) {
    $return = convertIpFull($ip, $ipfile);
   }
  }
 }
 return $return;
}

function convertIpFull($ip, $ipdatafile) {

 if(!$fd = @fopen($ipdatafile)) {
  return '- Invalid IP data file';
 }

 $ip = explode('.', $ip);
 $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

 if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return;
 @$ipbegin = implode('', unpack('L', $DataBegin));
 if($ipbegin < 0) $ipbegin += pow(2, 32);
 @$ipend = implode('', unpack('L', $DataEnd));
 if($ipend < 0) $ipend += pow(2, 32);
 $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

 $BeginNum = $ip2num = $ip1num = 0;
 $ipAddr1 = $ipAddr2 = '';
 $EndNum = $ipAllNum;

 while($ip1num > $ipNum || $ip2num < $ipNum) {
  $Middle= intval(($EndNum + $BeginNum) / 2);

  fseek($fd, $ipbegin + 7 * $Middle);
  $ipData1 = fread($fd, 4);
  if(strlen($ipData1) < 4) {
   fclose($fd);
   return '- System Error';
  }
  $ip1num = implode('', unpack('L', $ipData1));
  if($ip1num < 0) $ip1num += pow(2, 32);

  if($ip1num > $ipNum) {
   $EndNum = $Middle;
   continue;
  }

  $DataSeek = fread($fd, 3);
  if(strlen($DataSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
  fseek($fd, $DataSeek);
  $ipData2 = fread($fd, 4);
  if(strlen($ipData2) < 4) {
   fclose($fd);
   return '- System Error';
  }
  $ip2num = implode('', unpack('L', $ipData2));
  if($ip2num < 0) $ip2num += pow(2, 32);

  if($ip2num < $ipNum) {
   if($Middle == $BeginNum) {
    fclose($fd);
    return '- Unknown';
   }
   $BeginNum = $Middle;
  }
 }

 $ipFlag = fread($fd, 1);
 if($ipFlag == chr(1)) {
  $ipSeek = fread($fd, 3);
  if(strlen($ipSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
  fseek($fd, $ipSeek);
  $ipFlag = fread($fd, 1);
 }

 if($ipFlag == chr(2)) {
  $AddrSeek = fread($fd, 3);
  if(strlen($AddrSeek) < 3) {
   fclose($fd);
   return '- System Error';
  }
  $ipFlag = fread($fd, 1);
  if($ipFlag == chr(2)) {
   $AddrSeek2 = fread($fd, 3);
   if(strlen($AddrSeek2) < 3) {
    fclose($fd);
    return '- System Error';
   }
   $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
   fseek($fd, $AddrSeek2);
  } else {
   fseek($fd, -1, SEEK_CUR);
  }

  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr2 .= $char;

  $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
  fseek($fd, $AddrSeek);

  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr1 .= $char;
 } else {
  fseek($fd, -1, SEEK_CUR);
  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr1 .= $char;

  $ipFlag = fread($fd, 1);
  if($ipFlag == chr(2)) {
   $AddrSeek2 = fread($fd, 3);
   if(strlen($AddrSeek2) < 3) {
    fclose($fd);
    return '- System Error';
   }
   $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
   fseek($fd, $AddrSeek2);
  } else {
   fseek($fd, -1, SEEK_CUR);
  }
  while(($char = fread($fd, 1)) != chr(0))
  $ipAddr2 .= $char;
 }
 fclose($fd);

 if(preg_match('/http/i', $ipAddr2)) {
  $ipAddr2 = '';
 }
 $ipaddr = "$ipAddr1 $ipAddr2";
 $ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
 $ipaddr = preg_replace('/^s*/is', '', $ipaddr);
 $ipaddr = preg_replace('/s*$/is', '', $ipaddr);
 if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
  $ipaddr = '- Unknown';
 }

 return '- '.$ipaddr;

}

[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • jQuery实现切换页面过渡动画效果

    直接为大家介绍制作过程,希望大家可以喜欢。HTML结构该页面切换特效的HTML结构使用一个<main>元素来作为页面的包裹元素,div.cd-cover-layer用于制作页面切换时的遮罩层,div.cd-loading-bar是进行ajax加载时的loading进...2015-10-30
  • 解决mybatis-plus 查询耗时慢的问题

    这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
  • 解决vue刷新页面以后丢失store的数据问题

    这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • 解决vuex数据页面刷新后初始化操作

    这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • PHP页面转UTF-8中文编码乱码的解决办法

    对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
  • MySQL中在查询结果集中得到记录行号的方法

    如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。 Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 ROWNUM ; MS SQL...2015-03-15
  • JavaScript 获取滚动条位置并将页面滑动到锚点

    这篇文章主要介绍了JavaScript 获取滚动条位置并将页面滑动到锚点的的相关资料,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下...2021-02-09
  • Node实现搜索框进行模糊查询

    这篇文章主要为大家详细介绍了Node实现搜索框进行模糊查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-28
  • java后台实现js关闭本页面,父页面指定跳转或刷新操作

    这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
  • Element-ui 自带的两种远程搜索(模糊查询)用法讲解

    这篇文章主要介绍了Element-ui 自带的两种远程搜索(模糊查询)用法讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-29
  • Mybatis用注解写in查询的实现

    这篇文章主要介绍了Mybatis用注解写in查询的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-13
  • Select下拉框模糊查询功能实现代码

    这篇文章主要介绍了Select下拉框模糊查询功能实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-29
  • PHP+Mysql+jQuery查询和列表框选择操作实例讲解

    本文讲解如何通过ajax查询mysql数据,并将返回的数据显示在待选列表中,再通过选择最终将选项加入到已选区,可以用在许多后台管理系统中。本文列表框的操作依赖jquery插件。HTML <form id="sel_form" action="post.php" me...2015-10-23
  • Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
  • 微信小程序页面间传值的实现方法示例

    这篇文章主要给大家介绍了关于微信小程序页面间传值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-09
  • vue实现在进行增删改操作后刷新页面

    这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05