<?php
/**
 * tpshop
 * ============================================================================
 * * 版权所有 2015-2027 深圳搜豹网络科技有限公司，并保留所有权利。
 * 网站地址: http://www.tp-shop.cn
 * ----------------------------------------------------------------------------
 * 商业用途务必到官方购买正版授权, 使用盗版将严厉追究您的法律责任。
 * 采用TP5助手函数可实现单字母函数M D U等,也可db::name方式,可双向兼容
 * ============================================================================
 * $Author: IT宇宙人 2015-08-10 $
 */
// [ 应用入口文件 ]

header("Access-Control-Allow-Origin:*");
header("Cache-Control:no-cache");
header('Access-Control-Allow-Methods:GET,POST');
header('Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,Accept,Origin');
header("Access-Control-Max-Ag:3600");

// 应用入口文件
if (extension_loaded('zlib')){
    ob_end_clean();
    ob_start('ob_gzhandler');
}
//防止iframe框架攻击
/*
 * 排除客服页面
 * */
$match=preg_match('#mobile/supplier#',$_SERVER['REQUEST_URI']);
if(!$match) {
//防止iframe框架攻击
    header('X-Frame-Options: SAMEORIGIN');
}

// 检测PHP环境-test
if(version_compare(PHP_VERSION,'5.5.0','<') || version_compare(PHP_VERSION,'7.1.0','>'))
{
    header("Content-type: text/html; charset=utf-8");
    die('PHP 版本必须 5.5 至 7.0 !');
}
//error_reporting(E_ALL ^ E_NOTICE);//显示除去 E_NOTICE 之外的所有错误信息
error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误

//检测是否已安装TPshop系统
if(file_exists("./install/") && !file_exists("./install/install.lock")){
	if($_SERVER['PHP_SELF'] != '/index.php'){
		header("Content-type: text/html; charset=utf-8");         
		exit("请在域名根目录下安装,如:<br/> www.xxx.com/index.php 正确 <br/>  www.xxx.com/www/index.php 错误,域名后面不能圈套目录, 但项目没有根目录存放限制,可以放在任意目录,apache虚拟主机配置一下即可");
	}  
	header('Location:/install/index.php');
	exit(); 
}

require __DIR__ . '/saas.php';

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
//define('APP_DEBUG',false); debug tp5 里面已经改为 config.php 里面
// 定义应用目录
//define('APP_PATH','./Application/');
//  定义插件目录
define('PLUGIN_PATH', __DIR__ . '/plugins/');
defined('UPLOAD_PATH') or define('UPLOAD_PATH', 'public/upload/'); // 编辑器图片上传路径
define('TPSHOP_CACHE_TIME',31104000); // TPshop 缓存时间  31104000

//因为服务器代理问题，暂时固定为https
$_SERVER['HTTPS'] = 'on';
$http = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';
//$http = 'https';

define('SITE_URL',$http.'://'.$_SERVER['HTTP_HOST']); // 网站域名
define('HTTP',$http); // 网站域名

//define('HTML_PATH','./Application/Runtime/Html/'); //静态缓存文件目录，HTML_PATH可任意设置，此处设为当前项目下新建的html目录
define('INSTALL_DATE',1463741583);
define('SERIALNUMBER','20160520065303oCWIoa');
// 定义应用目录
define('APP_PATH', __DIR__ . '/application/');
// 定义时间
define('NOW_TIME',$_SERVER['REQUEST_TIME']);
//edi 整改 xss
function SafeFilter (&$arr)
{
    $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/script/','/javascript/','/vbscript/','/expression/','/applet/'
    ,'/meta/','/xml/','/blink/','/link/','/style/','/embed/','/object/','/frame/','/layer/','/title/','/bgsound/'
    ,'/base/','/onload/','/onunload/','/onchange/','/onsubmit/','/onreset/','/onselect/','/onblur/','/onfocus/',
        '/onabort/','/onkeydown/','/onkeypress/','/onkeyup/','/onclick/','/ondblclick/','/onmousedown/','/onmousemove/'
    ,'/onmouseout/','/onmouseover/','/onmouseup/','/onunload/');

    if (is_array($arr))
    {
        foreach ($arr as $key => $value)
        {
            if (!is_array($value))
            {
                if (preg_match('/^(\d,\d)+$/', $value)) {
                    continue ;
                }
                if (!get_magic_quotes_gpc())  //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。
                {
                    $value  = addslashes($value); //给单引号（'）、双引号（"）、反斜线（\）与 NUL（NULL 字符）
                    #加上反斜线转义
                }
                $value     = decodeUrlA($value);
                $value       = preg_replace($ra,'',$value);     //删除非打印字符，粗暴式过滤xss可疑字符串
                $arr[$key]     = htmlspecialchars(strip_tags($value)); //去除 HTML 和 PHP 标记并转换为 HTML 实体
            }
            else
            {
                SafeFilter($arr[$key]);
            }
        }
    }
}

/**
 * Edi测试时，把参数urlencode后，上面的过虑就过不了
 * @param $str
 * @return mixed
 */
function decodeUrlA($str){
    if($str != urldecode($str)){
        return decodeUrlA(urldecode($str));
    }
    return $str;
}

$GLOBALS['_RAW_GET'] = $_GET;
$GLOBALS['_RAW_POST'] = $_POST;
$GLOBALS['_RAW_COOKIE'] = $_COOKIE;

//$_GET     && SafeFilter($_GET);
//$_POST    && SafeFilter($_POST);
//$_COOKIE  && SafeFilter($_COOKIE);

// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';
