php实现首页链接查询 友情链接检查的代码

复制代码 代码如下:

  <?php

  /*

  * 网站首页超链接反查 友情链接查询 外链查询

  * web技术爱好者 lost63.com原创 QQ:35501547

  * 转载请注明出处

  */

  if($_GET['action']=="check"){

  $domain=$_POST['domain'];

  //域名表单项为空,则获取地址栏参数

  if($domain==""){

  $domain=$_GET['domain'];

  }

  //网址

  $url="http://".$domain;

  //读取网页,返回网页源文件内容

  function read_url($str){

  $file=fopen($str,"r") or die($str.'->远程网址读取失败! <a href="?next='.($_GET['next']+1).'&action=check&domain='.$_GET['domain'].'">点击继续查询</a><br>');

  while(!feof($file)){

  $result.=fgets($file,9999);

  }

  fclose($file);

  return $result;

  }

  //打开session

  session_start();

  //如果$_SESSION['matches']没有赋值就设置它;

  if(!isset($_SESSION['matches'])){

  $result=read_url($url);

  preg_match_all('/<a(.*?)href="(http:\/\/.*?)"(.*?)>(.*?)<\/a>/i',$result,$matches);

  $num=count($matches[2]);

  for($i=0;$i<$num;$i++){

  if(strpos($matches[2][$i],$domain)>0){

  unset($matches[2][$i]);

  }

  }

  $_SESSION['matches']=$matches[2];

  }

  //直接从session中取出包含网址数组;

  $matches[2]=$_SESSION['matches'];

  $n=count($matches[2]);

  $next=0;

  $next+=$_GET['next'];

  $result=read_url($matches[2][$next]);

  if(strpos($result,$domain)>0){

  $value=$matches[2][$next].' <font color=green>true</font><br>';

  }else{

  $value=$matches[2][$next].' <font color=red>false</font><br>';

  }

  $values=$_COOKIE['check_result'].$value;

  setcookie("check_result",$values,time()+3600);

  echo $values;

  if($next==$n){

  echo "扫描结束!";

  }else{

  echo '<meta http-equiv="refresh" content="1;URL=?next='.($next+1).'&action=check&domain='.$domain.'" />';

  }

  }else{

  //删除cookies

  setcookie("check_result","",time()-3600);

  echo '<form name="form1" method="post" action="?action=check">

  <input type="text" name="domain">

  <input type="submit" name="Submit" value="提交">

  <font color="red">*</font>输入域名 如:glzy8.com

  </form>';

  }

  ?>