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.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
php 魔术方法使用说明
Oct 20 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
php使用百度ping服务代码实例
Jun 19 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
php时区转换转换函数
2014/01/07 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
javascript 写类方式之六
2009/07/05 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
创业计划书的内容步骤和要领
2014/01/04 职场文书
小班上学期评语
2014/05/05 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
单位婚育证明范本
2014/11/21 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
个人欠条范本
2015/07/03 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
《穷人》教学反思
2016/02/19 职场文书
小学思品教学反思
2016/02/20 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang