• 技术文章 >后端开发 >php教程

    zhphp framework 三 框架工作流程

    2016-07-29 09:10:37原创493
    version_compare(PHP_VERSION, '5.2', '>=')?true:die('严重警告:php的版本低于php5.2!');#获取php版本并对php版本判断 Zhphp 框架最低ph版本为 php5.2
    ######################################## gzip compres start ############################################################
    $HTTP_ACCEPT_ENCODING=$GLOBALS['_SERVER']['HTTP_ACCEPT_ENCODING'];
    function CheckCanGzip(){#检测是否支持压缩
        global $HTTP_ACCEPT_ENCODING;
        if(!ini_get('zlib.output_compression')){#判断你是否配置php服务器压缩
            if(extension_loaded("zlib")){
                if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false){
                    return "x-gzip";
                }else if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false){
                    return "gzip";
                }
            }
        }
        return 0;
    }
    /**
     * 页面压缩后输出
     * @param $content
     * @return string
     */
    function ob_gzlib($content){
        $ENCODING = CheckCanGzip();
        if($ENCODING){
            $content = gzencode($content,6);
            header("Content-Encoding: ".$ENCODING);
            header("Vary: Accept-Encoding");
            header("Content-Length: ".strlen($content));
            return $content;
        }
        return false;
    }
    ###################################  stystem set define start ##########################################################
    defined('APP_DEBUG')?APP_DEBUG:define('APP_DEBUG',false);#是否设为调试
    defined('DS')?DS:define( 'DS' , DIRECTORY_SEPARATOR );#分割符号
    defined('DOC_ROOT')?DOC_ROOT:define('DOC_ROOT',$GLOBALS['_SERVER']['DOCUMENT_ROOT']);#得到服务器根目录地址
    defined('APP_NAME')?APP_NAME:define('APP_NAME','application');#默认工程名
    $http_type = ((isset($GLOBALS['_SERVER']['']) && $GLOBALS['_SERVER']['HTTPS'] == 'on') || (isset($GLOBALS['_SERVER']['HTTP_X_FORWARDED_PROTO']) && $GLOBALS['_SERVER']['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
    $httpHost=isset($GLOBALS['_SERVER']['HTTP_HOST'])?$GLOBALS['_SERVER']['HTTP_HOST']:$_SERVER['HTTP_HOST'];
    defined('CLASS_HTTP')?CLASS_HTTP:define('CLASS_HTTP',$http_type.$_SERVER['HTTP_HOST'] . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')));
    $requestUri=isset($GLOBALS['_SERVER']['REQUEST_URI'])?$GLOBALS['_SERVER']['REQUEST_URI']:$_SERVER['REQUEST_URI'];
    defined('HTTP')?HTTP:define('HTTP',$httpHost);
    defined('APP_URI')?APP_URI:define('APP_URI',$http_type.$httpHost.$requestUri);#当前文件的脚本文件地址
    defined('SERVER_HOST')?SERVER_HOST:define('SERVER_HOST',$http_type.$httpHost.'/');#域名地址
    defined('SERVER_NAME')?SERVER_NAME:define('SERVER_NAME',$http_type.$httpHost);#不带 / 的域名
    defined('APP_PATH')?APP_PATH:define('APP_PATH',str_replace('\\','/',dirname(dirname(dirname(__FILE__))).'/'.APP_NAME.'/'));
    defined('PROJECT_PATH')?PROJECT_PATH:define('PROJECT_PATH',dirname(APP_PATH));#得到工程路径
    if(PROJECT_PATH != DOC_ROOT){
    $arr=explode('/',PROJECT_PATH);#分解工程
    defined('PROJECT_NAME')?PROJECT_NAME:define('PROJECT_NAME',end($arr));#得到工程名并设置全局常量
    }else{
     defined('PROJECT_NAME')?PROJECT_NAME:define('PROJECT_NAME',APP_NAME);#得到工程名并设置全局常量
    }
    defined('WEB_STATIC')?WEB_STATIC:define('WEB_STATIC',PROJECT_PATH.'/'.APP_NAME.'/web/');#静态渲染层地址	
    defined('ROOT_PATH')?ROOT_PATH:define('ROOT_PATH',str_ireplace('\\','/',dirname(dirname(__FILE__))).'/');#得到当前的系统跟目录地址
    defined('APP_HOST')?APP_HOST:define('APP_HOST',$httpHost.'/');
    unset($http_type,$is_version,$httpHost,$requestUri,$project_work,$project_name,$arr,$environment);#手动销毁相应的变量
    include_once ROOT_PATH.'common/define.php';#加载你的应用程序常量
    ######################################## php.ini config ###############################################
    #程序对服务器的安全配置
    ini_set('safe_mode','On');#打开php安全模式
    ini_set('expose_php','Off');#对外隐藏php版本信息
    ini_set('log_errors','On');#打开错误日志功能
    ini_set('error_log',APP_PATH.'data/error_log/general_errors.log');#记录错误日志文件
    ini_set('register_globals','Off');#关闭全局变量注册
    ini_set('memory_limit','512M');#设置运行内存
    ini_set('session.cache_expire',  180);
    ini_set('session.use_trans_sid', 0);
    ini_set('session.use_cookies',   1);
    ini_set('session.auto_start',    0);
    ini_set('session.gc_maxlifetime', 'time_in_seconds');
    ini_set('session.name','zhphpsession');
    ini_set('session.gc_probability',0);
    ini_set('session.cookie_path',SESSION_PATH);
    ini_set('session.cookie_domain',SESSION_DOMAIN);
    ini_set('session.cookie_lifetime', '1800');
    ini_set('session.save_path',SESSION_PATH);
    include_once ROOT_PATH.'engine/loader.class.php'; #加载loader类
    loader::init();
    engine::loadCommon('common');#加载系统工具函数文件
    config::loadConfig();#加载配置
    set_error_handler('error');#自定义错误函数
    ################################## 开发环境  调试 ################################################################
    $envir
    switch($environment){
        case 1: defined('HTTP_URL')?HTTP_URL:define('HTTP_URL',SERVER_HOST.PROJECT_NAME.'/'); break;#设置全局常量
        case 2: defined('HTTP_URL')?HTTP_URL:define('HTTP_URL',SERVER_HOST); break;
        case 3: echo '等待测试'; break;
    }
    #设置错误显示级别
    if(APP_DEBUG){
        ini_set('display_errors', true);
        error_reporting(E_ALL);
        browserDebug();#加载浏览器调试工具,方便在开发的时候,在浏览器调试,目前支持Firefox,Chrome
    }else{
        ini_set('display_errors', false);
        error_reporting(0);
    }
    $GLOBALS['router']=engine::load('router');#路由引擎并实例化结果
    ############################## 预防sql注入与程序安全预防 start ################################
    checkSafeInput();
    if (!get_magic_quotes_gpc()) {
          $_GET       = addslashes_deep($_GET);
          $_POST      = addslashes_deep($_POST);
          $_COOKIE    = addslashes_deep($_COOKIE);
          $_REQUEST   = addslashes_deep($_REQUEST);
    }

    以上就介绍了zhphp framework 三 框架工作流程,包括了version_compare,全局变量,sql注入方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:39 define HTTP SERVER defined
    上一篇:如何使用 Zend Expressive 建立 NASA 图片库? 下一篇:Laravel自学第一课:laravel下载与安装
    PHP编程就业班

    相关文章推荐

    • PHP中的日期处理方法集锦_PHP教程• 在PHP中使用灵巧的体系结构_PHP教程• 抓取YAHOO股票报价的类_php技巧• Yii中创建自己的Widget实例_PHP• php短址转换实现方法_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网