PHP模拟POST,验证页面的返回状态

本文地址:http://www.cnblogs.com/vnii/archive/2012/09/25/2701585.html

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

View Code
<?php

    ini_set('max_execution_time', 120);



    include("CheckConfig.php");



    function send_http_status($code) {

        static $_status = array(

        // Informational 1xx

        100 => 'Continue',

        101 => 'Switching Protocols',

        // Success 2xx

        200 => 'OK',

        201 => 'Created',

        202 => 'Accepted',

        203 => 'Non-Authoritative Information',

        204 => 'No Content',

        205 => 'Reset Content',

        206 => 'Partial Content',

        // Redirection 3xx

        300 => 'Multiple Choices',

        301 => 'Moved Permanently',

        302 => 'Moved Temporarily ',  // 1.1

        303 => 'See Other',

        304 => 'Not Modified',

        305 => 'Use Proxy',

        // 306 is deprecated but reserved

        307 => 'Temporary Redirect',

        // Client Error 4xx

        400 => 'Bad Request',

        401 => 'Unauthorized',

        402 => 'Payment Required',

        403 => 'Forbidden',

        404 => 'Not Found',

        405 => 'Method Not Allowed',

        406 => 'Not Acceptable',

        407 => 'Proxy Authentication Required',

        408 => 'Request Timeout',

        409 => 'Conflict',

        410 => 'Gone',

        411 => 'Length Required',

        412 => 'Precondition Failed',

        413 => 'Request Entity Too Large',

        414 => 'Request-URI Too Long',

        415 => 'Unsupported Media Type',

        416 => 'Requested Range Not Satisfiable',

        417 => 'Expectation Failed',

        // Server Error 5xx

        500 => 'Internal Server Error',

        501 => 'Not Implemented',

        502 => 'Bad Gateway',

        503 => 'Service Unavailable',

        504 => 'Gateway Timeout',

        505 => 'HTTP Version Not Supported',

        509 => '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 "&nbsp;&nbsp;".$state ."&nbsp;=>&nbsp;<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.邮件

View Code
    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",点击下载

 

你可能感兴趣的:(post)