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 相关文章推荐
ZF等常用php框架中存在的问题
Jan 10 PHP
用来给图片加水印的PHP类
Apr 09 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
php适配器模式介绍
Aug 14 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python执行get提交的方法
2015/04/29 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
2014年党员自我剖析材料
2014/10/07 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
Python anaconda安装库命令详解
2021/10/16 Python