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


Posted in PHP onOctober 28, 2013

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"=> "fdsafdsafd@fdasfds.com",    // 发件人邮箱地址
        "FromMailPassword"=> "*********", // 发件人邮箱密码
        "FromMailName"=> "检测",            //发件人称呼
        "To"=>array(
            array(
                "ToMail"=>"defdafdsafdsafdf@qq.com",        //收件人邮箱地址
                "ToMailName"=> "bqq",            //收件人称呼
            ),
            array(
                "ToMail"=>"abfdsafdsafdsafc@gmail.com",        //收件人邮箱地址
                "ToMailName"=> "agmail",            //收件人称呼
            )
        ),
        "Subject"=> "",                //邮件标题
        "Body"=> "",            //邮件内容
        "AltBody"=> "附加信息"                //附加信息,可以省略        
    );
?>

邮件主要使用"phpmailer",点击下载
PHP 相关文章推荐
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
php操作mysqli(示例代码)
Oct 28 #PHP
php session_start()出错原因分析及解决方法
Oct 28 #PHP
php 强制下载文件实现代码
Oct 28 #PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 #PHP
php获取数组长度的方法(有实例)
Oct 27 #PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 #PHP
简单的php文件上传(实例)
Oct 27 #PHP
You might like
php Ubb代码编辑器函数代码
2012/07/05 PHP
php curl模拟post请求小实例
2013/11/13 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
微信支付开发发货通知实例
2016/07/12 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
PDO::errorCode讲解
2019/01/28 PHP
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
python操作excel让工作自动化
2019/08/09 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
基于python实现查询ip地址来源
2020/06/02 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
2014年高三毕业生自我评价
2014/01/11 职场文书
员工考核评语大全
2014/04/26 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
远程教育学习心得体会
2016/01/23 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android