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

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

(0)

相关推荐

  • php curl模拟post请求小实例

    本机: 复制代码 代码如下: <?php$uri = "http://www.a.com/test.php";//这里换成你服务器的地址// 参数数组$data = array (  'name' => 'tanteng' // 'password' => 'password'); $ch = curl_init ();// print_r($ch);curl_setopt ( $ch, CURLOPT_URL, $uri );curl_setopt ( $ch, C

  • 使用PHP Socket 编程模拟Http post和get请求

    这里给大家分享一段使用PHP Socket 编程模拟Http post和get请求的代码,非常的实用,结尾部分我们再讨论下php模拟http请求的几种方法. 复制代码 代码如下: <?php /**  * 使用PHP Socket 编程模拟Http post和get请求  * @author koma  */ class Http{     private $sp = "\r\n"; //这里必须要写成双引号     private $protocol = 'HTTP/1.1';

  • php中模拟POST传递数据的两种方法分享

    方法1 复制代码 代码如下: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://192.168.1.135/turntable/get_jump.php"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $array); curl_exec($ch); curl_close($ch); 方法2 复制代码 代码如下: $d

  • php模拟post行为代码总结(POST方式不是绝对安全)

    这里提供两种方法供选择:第一:手写代码.第二:利用HttpClient php类库 第一种方法: 复制代码 代码如下: <?PHP $flag = 0; //要post的数据 $argv = array( 'var1'=>'abc', 'var2'=>'你好吗'); //构造要post的字符串 foreach ($argv as $key=>$value) { if ($flag!=0) { $params .= "&"; $flag = 1; } $p

  • php实现模拟post请求用法实例

    本文实例讲述了php实现模拟post请求的方法.分享给大家供大家参考.具体如下: class Request{ public static function post($url, $post_data = '', $timeout = 5){//curl $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_POST, 1); if($post_data != ''){ curl_se

  • php模拟post提交数据的方法

    本文实例讲述了php模拟post提交数据的方法.分享给大家供大家参考.具体如下: php模拟post提交数据,用处很多,可用来网站的采集,登陆等等 这里以我项目中的论坛登录为例加以说明: 复制代码 代码如下: function A_bbslogin($user_login,$password,$host,$port="80"){ //需要提交的post数据 $argv = array( 'cookie' => array('user_login' =>$user_login

  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码 复制代码 代码如下: /********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST.HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header: 头文件 * $post: post方式提交 array形式 * $cookies: 0默认无cookie,1为设置,2为获取 */public function curl_allinf

  • php curl模拟post提交数据示例

    复制代码 代码如下: <?header("Content-type: text/html; charset=utf8");/* * 提交请求* @param $header array 需要配置的域名等header设置 array("Host: devzc.com");* @param $data string 需要提交的数据 'user=xxx&qq=xxx&id=xxx&post=xxx'....* @param $url stri

  • php 模拟POST提交的2种方法详解

    一.通过curl函数 复制代码 代码如下: $post_data = array();$post_data['clientname'] = "test08";$post_data['clientpasswd'] = "test08";$post_data['submit'] = "submit";$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';$o="";foreach ($post_d

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

    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 = ar

  • Laravel统一封装接口返回状态实例讲解

    前后端分离,接口返回封装方便你我他(方便前后端合作开发) 在Laravel中可以在公共继承的Controller.php写方法进行调用返回 app/Http/Controllers/Controller.php 成功返回 /** * $msg 返回提示消息 * $data 返回数据 */ public function success($msg,$data = []) { return response()->json([ 'status' => true, 'code' => 200,

  • 基于Vue过渡状态实例讲解

    前面的话 Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢?包括数字和运算.颜色的显示.SVG 节点的位置.元素的大小和其他的属性等.所有的原始数字都被事先存储起来,可以直接转换到数字.做到这一步,我们就可以结合 Vue 的响应式和组件系统,使用第三方库来实现切换元素的过渡状态 状态动画 通过watcher,能监听到任何数值属性的数值更新 <div id="animated-number-demo"> <input v-

  • selenium高效应对Web页面元素刷新的实例讲解

    当我们在页面上进行selenium.type()或者selenium.click()操作的时候,往往需要需要等待一个元素的出现,对于一般的网页,当我们进入一个新页面的时候,往往会使用selenium.waitForPageToLoad(WAITTIME); 对弹出窗口中的元素,往往写死要等待多少秒,其实可以使用如下更加通用高效的方法,自己写一个waitForElement()的方法: Java代码 protected void waitForElement(String target) { fo

  • gearman中任务的优先级和返回状态实例分析

    本文实例讲述了gearman中任务的优先级和返回状态.分享给大家供大家参考,具体如下: gearman中任务的优先级和返回状态 一.任务的优先级 同步阻塞调用,等待返回结果 doLow:最低优先 doNomal:正常优先级 doHigh:最优先执行 异步派发任务,不等待返回结果,返回任务句柄,通过该句柄可获取任务运行状态信息 doLowBackground doBackground doHighBackground 注意Task和doXXX区别,Task是一组job,派发后会分配到多个worke

  • jquery验证邮箱格式是否正确实例讲解

    我们来看看都有哪些邮箱: 我们如果一个个的邮箱进行判断,显然是不可能的了. -个完整的Internet邮件地址由以下两个部分组成,格式如下:登录名@主机名.域名 中间用-个表示"在"(at)的符号"@"分开,符号的左边是对方的登录名,右边是完整的主机名,它由主机名与域名 组成.其中,域名由几部分组成,每一部分称为一个子域(Subdomain),各子域之间用圆点"."隔开,每个子域都会告诉用户一些有关这台邮件服务器 的信息. 关键验证的正则表达式:

  • BootStrap Table对前台页面表格的支持实例讲解

    1.bootstrap-table是在bootstrap的基础上面做了一些封装,所以在使用bootstrap-table之前要导入的js和css有 1)基本的还是jQuery <script type="text/javascript" src="js/jquery.min.js?v=2.1.4"></script> 2)引入bootstrap <script type="text/javascript" src=&

  • 表单验证插件Validation应用的实例讲解

    jquery.Validation是一款优秀的jquery插件,它能对客户端表单进行验证,并且提供了许多可以定制的属性和方法,良好的扩展性.现在结合实际情况,我把项目中经常要用到的验证整理成一个实例DEMO,本文就是通过讲解这个实例来理解Validation的应用. 本实例涉及到的验证有: 用户名:长度.字符验证,重复性ajax验证(是否已存在). 密码:长度验证,重复输入密码验证. 邮件:邮件地址验证. 固定电话:中国大陆固定电话号码验证. 手机号:中国大陆手机号码验证. 网址:网站URL地址

  • Jquery each方法跳出循环,并获取返回值(实例讲解)

    return false:将停止循环 (就像在普通的循环中使用 'break').return true:跳至下一个循环(就像在普通的循环中使用'continue'). 复制代码 代码如下: function test(){var success = false;$(..).each(function () {   if (..) {       success = true;       return false;   }}); return success ;} jquery是对象链,所以$

  • JavaScript页面加载事件实例讲解

    一.onload 加载事件 onload 是 window 对象的一个事件,也可以省略 window 直接使用. 常用方式: <head><script> windown.onload = function() { // 方法体 } </script><head> 这个事件是等待页面加载完成之后,再执行 <script> 标签的内容.即页面上所有的元素创建完毕,并且引用的外部资源下载完毕(js,css,图片) 注意:该事件相比于在 <bod

随机推荐