php 模拟post_验证页面的返回状态(实例讲解)

  1.主要文件,访问该页面,该页面根据“验证页面”的返回结果设置本文件的返回状态 header('HTTP/1.1 '.$code.' '.$_status[$code])

  

复制代码 代码如下:

  <?php

  ini_set('max_execution_time', 120);

  include("CheckConfig.php");

  function send_http_status($code) {

  static $_status = array(

  // Informational 1xx

  => 'Continue',

  => 'Switching Protocols',

  // Success 2xx

  => 'OK',

  => 'Created',

  => 'Accepted',

  => 'Non-Authoritative Information',

  => 'No Content',

  => 'Reset Content',

  => 'Partial Content',

  // Redirection 3xx

  => 'Multiple Choices',

  => 'Moved Permanently',

  => 'Moved Temporarily ',  // 1.1

  => 'See Other',

  => 'Not Modified',

  => 'Use Proxy',

  // 306 is deprecated but reserved

  => 'Temporary Redirect',

  // Client Error 4xx

  => 'Bad Request',

  => 'Unauthorized',

  => 'Payment Required',

  => 'Forbidden',

  => 'Not Found',

  => 'Method Not Allowed',

  => 'Not Acceptable',

  => 'Proxy Authentication Required',

  => 'Request Timeout',

  => 'Conflict',

  => 'Gone',

  => 'Length Required',

  => 'Precondition Failed',

  => 'Request Entity Too Large',

  => 'Request-URI Too Long',

  => 'Unsupported Media Type',

  => 'Requested Range Not Satisfiable',

  => 'Expectation Failed',

  // Server Error 5xx

  => 'Internal Server Error',

  => 'Not Implemented',

  => 'Bad Gateway',

  => 'Service Unavailable',

  => 'Gateway Timeout',

  => 'HTTP Version Not Supported',

  => 'Bandwidth Limit Exceeded'

  );

  if(array_key_exists($code,$_status)) {

  header('HTTP/1.1 '.$code.' '.$_status[$code]);

  }

  }

  function GetStatusCode($url)

  {

  $curl = curl_init();

  curl_setopt($curl, CURLOPT_URL, $url); //设置URL

  curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header

  curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了

  $data = curl_exec($curl); //开始执行啦~

  $HttpCode =curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~

  curl_close($curl); //用完记得关掉他

  return $HttpCode;

  }

  function ResetUrl($url)

  {

  if(strpos($url,"?")>0)

  $url.="&rnd";

  else

  $url.="?rnd";

  $url.=rand();

  return $url;

  }

  function ShowStateInfo($UrlArr,$MailPara)

  {

  $count=count($UrlArr);

  if(isset($_REQUEST["start"]))

  {

  $start=$_REQUEST["start"]*1;

  }

  else

  {

  $start=1;

  }

  if(isset($_REQUEST["end"]))

  {

  $end=$_REQUEST["end"]*1;

  }

  else

  {

  $end=$start;

  }

  $start=$start-1;

  $end=$end-1;

  if($start<0)

  {

  $start=0;

  }

  if($start>=0 && $start<$count)

  {

  if($end>=$count)

  {

  $end=$count-1;

  }

  if($end<$start)

  {

  $end=$start;

  }

  $sTime=date("Y/m/d H:m:s");

  echo "开始时间".$sTime."<br/>";

  echo "检测结果<br />";

  for($i=$start;$i<=$end;$i++)

  {

  $url=ResetUrl($UrlArr[$i]);

  $state=GetStatusCode($url);

  echo "  ".$state ." => <a href='http://".$url."' target='_blank'>".$url."<a>";

  if($state!="200")

  {

  echo " <span style='color:red;font-weight:bold'>本条访问出错!</span><br/>";

  send_http_status($state);

  //发邮件

  require("Mail.php");

  $MailPara["Subject"]="网站监控结果";

  $MailPara["Body"]="错误信息:状态-><span style='color:red;font-weight:bold'>".$state."</span><br/>地址:".$url;

  SendResultMail($MailPara);

  break;

  }

  echo "<br/>";

  }

  $eTime=date("Y/m/d H:m:s");

  echo "结束时间".$eTime."<br/>";

  }

  }

  ShowStateInfo($UrlArr,$MailPara);

  ?>

  2.邮件

  

复制代码 代码如下:

  function SendResultMail($MailPara)

  {

  require("phpmailer/class.phpmailer.php");

  $mail = new PHPMailer();

  $mail->CharSet = $MailPara["CharSet"];

  $mail->IsSMTP();

  $mail->Host = $MailPara["Host"];

  $mail->Port = $MailPara["Port"];

  $mail->SMTPAuth = true;

  $mail->Username = $MailPara["FromMail"];

  $mail->Password = $MailPara["FromMailPassword"];

  $mail->From = $MailPara["FromMail"];

  $mail->FromName = $MailPara["FromMailName"];

  foreach($MailPara["To"] as $toMail)

  {

  $mail->AddAddress($toMail["ToMail"], $toMail["ToMailName"]);

  }

  $mail->Subject = $MailPara["Subject"];

  $mail->Body = $MailPara["Body"];

  $mail->AltBody = $MailPara["AltBody"];

  if(!$mail->Send())

  {

  echo "邮件发送失败. <p>";

  echo "错误原因: " . $mail->ErrorInfo ."<br/>";

  exit;

  }

  echo "邮件发送成功<br/>";

  }

  3.配置文件

  

复制代码 代码如下:

  <?php

  $UrlArr=array(

  "localhost/test/281892.shtml",

  "localhost/test/all-229-1-221.shtml",

  "localhost/testclass/all-254-1-1.shtml",

  "localhost/test/cheng/bd/1988478.html",

  "localhost/test/asd/2066495.html"

  );

  //邮箱发送相关信息

  $MailPara=array(

  "CharSet"=> "GB2312",

  "Host"=> "smtp.exmail.qq.com",            // 邮箱服务地址

  "Port"=>25,

  "FromMail"=> "[email protected]",    // 发件人邮箱地址

  "FromMailPassword"=> "*********", // 发件人邮箱密码

  "FromMailName"=> "检测",            //发件人称呼

  "To"=>array(

  array(

  "ToMail"=>"[email protected]",        //收件人邮箱地址

  "ToMailName"=> "bqq",            //收件人称呼

  ),

  array(

  "ToMail"=>"[email protected]",        //收件人邮箱地址

  "ToMailName"=> "agmail",            //收件人称呼

  )

  ),

  "Subject"=> "",                //邮件标题

  "Body"=> "",            //邮件内容

  "AltBody"=> "附加信息"                //附加信息,可以省略

  );

  ?>

  邮件主要使用"phpmailer",点击下载