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面向对象分析设计的61条军规小结
Jul 17 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php实现word转html的方法
Jan 22 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 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实现链结人气统计
2006/10/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
深入理解Node module模块
2018/03/26 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
python+django加载静态网页模板解析
2017/12/12 Python
python爬取微信公众号文章
2018/08/31 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
大学生学习生活的自我评价
2013/11/01 职场文书
冬季施工防火方案
2014/05/17 职场文书
幼儿教师求职信
2014/05/24 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
python入门之算法学习
2021/04/22 Python
JavaScript实现简单计时器
2021/06/22 Javascript
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers