<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com> +++
// +----------------------------------------------------------------------

// 应用入口文件
exit('ok');
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',true);

// 定义应用目录
define('APP_PATH','./Application/');
//安全性代码2019by 孙阳
$referer=empty($_SERVER['HTTP_REFERER']) ? array() : array($_SERVER['HTTP_REFERER']);
function customError($errno, $errstr, $errfile, $errline)
{
    echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";
    die();
}
set_error_handler("customError",E_ERROR);
$getfilter="'|<[^>]*?>|^\\+\/v(8|9)|\\b(and|or)\\b.+?(>|<|=|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
$postfilter="^\\+\/v(8|9)|\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
$cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){

    $StrFiltValue=arr_foreach($StrFiltValue);
    if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){
        //slog("<br><br>²Ù×÷IP: ".$_SERVER["REMOTE_ADDR"]."<br>²Ù×÷Ê±¼ä: ".strftime("%Y-%m-%d %H:%M:%S")."<br>²Ù×÷Ò³Ãæ:".$_SERVER["PHP_SELF"]."<br>Ìá½»·½Ê½: ".$_SERVER["REQUEST_METHOD"]."<br>Ìá½»²ÎÊý: ".$StrFiltKey."<br>Ìá½»Êý¾Ý: ".$StrFiltValue);
        print "<div style=\"position:fixed;top:0px;width:100%;height:100%;background-color:white;color:green;font-weight:bold;border-bottom:5px solid #999;\"><br>请不要填写非法字符<br><br>ÁË½â¸ü¶àÇëµã»÷:<a href=\"\">360ÍøÕ¾°²È«¼ì²â</a></div>";
        exit();
    }
    if (preg_match("/".$ArrFiltReq."/is",$StrFiltKey)==1){
        //slog("<br><br>²Ù×÷IP: ".$_SERVER["REMOTE_ADDR"]."<br>²Ù×÷Ê±¼ä: ".strftime("%Y-%m-%d %H:%M:%S")."<br>²Ù×÷Ò³Ãæ:".$_SERVER["PHP_SELF"]."<br>Ìá½»·½Ê½: ".$_SERVER["REQUEST_METHOD"]."<br>Ìá½»²ÎÊý: ".$StrFiltKey."<br>Ìá½»Êý¾Ý: ".$StrFiltValue);
        print "<div style=\"position:fixed;top:0px;width:100%;height:100%;background-color:white;color:green;font-weight:bold;border-bottom:5px solid #999;\"><br>请不要填写非法字符<br><br>ÁË½â¸ü¶àÇëµã»÷:<a href=\"\">360ÍøÕ¾°²È«¼ì²â</a></div>";
        exit();
    }
}
//$ArrPGC=array_merge($_GET,$_POST,$_COOKIE);
foreach($_GET as $key=>$value){
    StopAttack($key,$value,$getfilter);
}
foreach($_POST as $key=>$value){
    StopAttack($key,$value,$postfilter);
}
foreach($_COOKIE as $key=>$value){
    StopAttack($key,$value,$cookiefilter);
}
foreach($referer as $key=>$value){
    StopAttack($key,$value,$getfilter);
}

function slog($logs)
{
    $toppath=$_SERVER["DOCUMENT_ROOT"]."/log.htm";
    $Ts=fopen($toppath,"a+");
    fputs($Ts,$logs."\r\n");
    fclose($Ts);
}
function arr_foreach($arr) {
    static $str;
    if (!is_array($arr)) {
        return $arr;
    }
    foreach ($arr as $key => $val ) {

        if (is_array($val)) {

            arr_foreach($val);
        } else {

            $str[] = $val;
        }
    }
    return implode($str);
}
//安全性代码2019by 孙阳
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了