• 技术文章 >php教程 >php手册

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

    2016-06-13 09:31:31原创370
    1.主要文件,访问该页面,该页面根据“验证页面”的返回结果设置本文件的返回状态 header('HTTP/1.1 '.$code.' '.$_status[$code])

    复制代码 代码如下:


    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."
    ";
    echo "检测结果
    ";
    for($i=$start;$i<=$end;$i++)
    {
    $url=ResetUrl($UrlArr[$i]);
    $state=GetStatusCode($url);
    echo " ".$state ." => ".$url."";
    if($state!="200")
    {
    echo " 本条访问出错!
    ";
    send_http_status($state);

    //发邮件
    require("Mail.php");
    $MailPara["Subject"]="网站监控结果";
    $MailPara["Body"]="错误信息:状态->".$state."
    地址:".$url;
    SendResultMail($MailPara);

    break;
    }
    echo "
    ";
    }
    $eTime=date("Y/m/d H:m:s");

    echo "结束时间".$eTime."
    ";
    }

    }
    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 "邮件发送失败.

    ";
    echo "错误原因: " . $mail->ErrorInfo ."
    ";
    exit;
    }

    echo "邮件发送成功
    ";
    }


    3.配置文件

    复制代码 代码如下:


    $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",点击下载
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php操作mysqli(示例代码) 下一篇:php float不四舍五入截取浮点型字符串方法总结
    千万级数据并发解决方案

    相关文章推荐

    • Yii中创建自己的Widget实例,yiiwidget实例• php使用cookie实现记住用户名和密码实现代码,phpcookie• javascript+php实现根据用户时区显示当地时间的方法,javascript当地• 基于GD2图形库的PHP生成图片缩略图类代码分享• php批量添加数据与批量更新数据的实现方法,php添加数据
    1/1

    PHP中文网