-
Notifications
You must be signed in to change notification settings - Fork 3
License
redisck/fanwe
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<?php $f5d8e1542fearr=array("localhost","127.0.0.1","192.168.1.110"); $f5d8e1542fehost=$_SERVER["HTTP_HOST"]; $f5d8e1542fehost=explode(":",$f5d8e1542fehost);$f5d8e1542fehost=$f5d8e1542fehost[0]; $f5d8e1542febln=false;foreach($f5d8e1542fearr as $f5d8e1542feval){if(substr($f5d8e1542feval,0,2)==="*."){if(preg_match("/".preg_quote(substr($f5d8e1542feval,2))."$/",$f5d8e1542fehost)>0){$f5d8e1542febln=true;break;}}}if(!$f5d8e1542febln&&!in_array($f5d8e1542fehost,$f5d8e1542fearr)){echo "domain not authorized";exit;} define('APP_TYPE','main'); $dist_cfg = APP_ROOT_PATH."system/dist_cfg.php"; if(file_exists($dist_cfg)) $distribution_cfg = require_once $dist_cfg; //关于分布式配置 $distribution_cfg["CACHE_TYPE"] = "File"; //File,Memcached,MemcacheSASL,Xcache,Db $distribution_cfg["CACHE_LOG"] = false; //是否需要在本地记录cache的key列表 $distribution_cfg["SESSION_TYPE"] = "File"; //"Db/MemcacheSASL/File" $distribution_cfg['ALLOW_DB_DISTRIBUTE'] = false; //是否支持读写分离 $distribution_cfg["CSS_JS_OSS"] = false; //脚本样式是否同步到oss $distribution_cfg["OSS_TYPE"] = ""; //同步文件存储的类型: ES_FILE,ALI_OSS,NONE 分别为原es_file.php同步,阿里云OSS,以及无OSS分布 $distribution_cfg["ORDER_DISTRIBUTE_COUNT"] = "1"; //订单表分片数量 $distribution_cfg['DOMAIN_ROOT'] = ''; //域名根 $distribution_cfg['COOKIE_PATH'] = '/'; //end 分布式 //引入数据库的系统配置及定义配置函数 $cfg_file = APP_ROOT_PATH.'system/config.php'; if(file_exists($cfg_file)) { $sys_config = require_once APP_ROOT_PATH.'system/config.php'; } if(!function_exists("app_conf")) { function app_conf($name) { return stripslashes($GLOBALS['sys_config'][$name]); } } //引入时区配置及定义时间函数 if(function_exists('date_default_timezone_set')) date_default_timezone_set(app_conf('DEFAULT_TIMEZONE')); //end 引入时区配置及定义时间函数 $define_file = APP_ROOT_PATH."system/define.php"; if(file_exists($define_file)) require_once $define_file; //加载常量定义 define('DB_PREFIX', app_conf('DB_PREFIX')); //定义缓存 if(!function_exists("load_fanwe_cache")) { function load_fanwe_cache() { global $distribution_cfg; $type = $distribution_cfg["CACHE_TYPE"]; $cacheClass = 'Cache'.ucwords(strtolower(strim($type)))."Service"; if(file_exists(APP_ROOT_PATH."system/cache/".$cacheClass.".php")) { require_once APP_ROOT_PATH."system/cache/".$cacheClass.".php"; if(class_exists($cacheClass)) { $cache = new $cacheClass(); } return $cache; } else { $file_cache_file = APP_ROOT_PATH.'system/cache/CacheFileService.php'; if(file_exists($file_cache_file)) require_once APP_ROOT_PATH.'system/cache/CacheFileService.php'; if(class_exists("CacheFileService")) $cache = new CacheFileService(); return $cache; } } } $cache_service_file = APP_ROOT_PATH."system/cache/Cache.php"; if(file_exists($cache_service_file)) require_once $cache_service_file; if(class_exists("CacheService")) $cache = CacheService::getInstance(); //end 定义缓存 //定义DB $db_cls_file = APP_ROOT_PATH."system/db/db.php"; if(file_exists($db_cls_file)) { require_once $db_cls_file; if(class_exists("mysql_db")) { if(!file_exists(APP_ROOT_PATH.'public/runtime/app/db_caches/')) mkdir(APP_ROOT_PATH.'public/runtime/app/db_caches/',0777); $pconnect = false; $db = new mysql_db(app_conf('DB_HOST').":".app_conf('DB_PORT'), app_conf('DB_USER'),app_conf('DB_PWD'),app_conf('DB_NAME'),'utf8',$pconnect); } } //end 定义DB //定义模板引擎 $tmpl_cls_file = APP_ROOT_PATH.'system/template/template.php'; if(file_exists($tmpl_cls_file)) { require_once $tmpl_cls_file; if(class_exists("AppTemplate")) { if(!file_exists(APP_ROOT_PATH.'public/runtime/app/tpl_caches/')) mkdir(APP_ROOT_PATH.'public/runtime/app/tpl_caches/',0777); if(!file_exists(APP_ROOT_PATH.'public/runtime/app/tpl_compiled/')) mkdir(APP_ROOT_PATH.'public/runtime/app/tpl_compiled/',0777); $tmpl = new AppTemplate; } } //end 定义模板引擎 $lang_file = APP_ROOT_PATH.'/app/Lang/'.app_conf("SHOP_LANG").'/lang.php'; if(file_exists($lang_file)) $lang = require_once $lang_file; //end 引入数据库的系统配置及定义配置函数 //部份原common.php中的函数定义 if(!function_exists("replace_public")) { function replace_public($str){ //对图片路径的修复 if($GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE") { $domain = $GLOBALS['distribution_cfg']['OSS_DOMAIN']; } else { $domain = SITE_DOMAIN.APP_ROOT; } return str_replace($domain."/public/","./public/",$str); } } if(!function_exists("format_image_path")) { function format_image_path($out) { //对图片路径的修复 if($GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE") { $domain = $GLOBALS['distribution_cfg']['OSS_DOMAIN']; } else { $domain = SITE_DOMAIN.APP_ROOT; } $out = str_replace(APP_ROOT."./public/",$domain."/public/",$out); $out = str_replace("./public/",$domain."/public/",$out); return $out; } } /** * 将单个图片同步到远程的图片服务器 * @param string $url 本地的图片地址,"./public/......" */ if(!function_exists("syn_to_remote_image_server")) { function syn_to_remote_image_server($url) { if($GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE") { if($GLOBALS['distribution_cfg']['OSS_TYPE']=="ES_FILE") { $pathinfo = pathinfo($url); $file = $pathinfo['basename']; $dir = $pathinfo['dirname']; $dir = str_replace("./public/", "", $dir); $filefull = SITE_DOMAIN.APP_ROOT."/public/".$dir."/".$file; $syn_url = $GLOBALS['distribution_cfg']['OSS_DOMAIN']."/es_file.php?username=".$GLOBALS['distribution_cfg']['OSS_ACCESS_ID']."&password=".$GLOBALS['distribution_cfg']['OSS_ACCESS_KEY']."&file=". $filefull."&path=".$dir."/&name=".$file."&act=0"; @file_get_contents($syn_url); } elseif($GLOBALS['distribution_cfg']['OSS_TYPE']=="ALI_OSS") { $pathinfo = pathinfo($url); $file = $pathinfo['basename']; $dir = $pathinfo['dirname']; $dir = str_replace("./public/", "public/", $dir); $ali_oss_sdk = APP_ROOT_PATH."system/alioss/sdk.class.php"; if(file_exists($ali_oss_sdk)) { require_once $ali_oss_sdk; if(class_exists("ALIOSS")) { $oss_sdk_service = new ALIOSS(); //设置是否打开curl调试模式 $oss_sdk_service->set_debug_mode(FALSE); $bucket = $GLOBALS['distribution_cfg']['OSS_BUCKET_NAME']; $object = $dir."/".$file; $file_path = APP_ROOT_PATH.$dir."/".$file; $oss_sdk_service->upload_file_by_file($bucket,$object,$file_path); } } } } } } /** * 同步脚本样式缓存 $url:'public/runtime/statics/biz/'.$url.'.css'; * @param unknown_type $url */ if(!function_exists("syn_to_remote_file_server")) { function syn_to_remote_file_server($url) { if($GLOBALS['distribution_cfg']['OSS_TYPE']&&$GLOBALS['distribution_cfg']['OSS_TYPE']!="NONE") { if($GLOBALS['distribution_cfg']['OSS_TYPE']=="ES_FILE") { $pathinfo = pathinfo($url); $file = $pathinfo['basename']; $dir = $pathinfo['dirname']; $dir = str_replace("public/", "", $dir); $filefull = SITE_DOMAIN.APP_ROOT."/public/".$dir."/".$file; $syn_url = $GLOBALS['distribution_cfg']['OSS_DOMAIN']."/es_file.php?username=".$GLOBALS['distribution_cfg']['OSS_ACCESS_ID']."&password=".$GLOBALS['distribution_cfg']['OSS_ACCESS_KEY']."&file=". $filefull."&path=".$dir."/&name=".$file."&act=0"; @file_get_contents($syn_url); } elseif($GLOBALS['distribution_cfg']['OSS_TYPE']=="ALI_OSS") { $pathinfo = pathinfo($url); $file = $pathinfo['basename']; $dir = $pathinfo['dirname']; $ali_oss_sdk = APP_ROOT_PATH."system/alioss/sdk.class.php"; if(file_exists($ali_oss_sdk)) { require_once $ali_oss_sdk; if(class_exists("ALIOSS")) { $oss_sdk_service = new ALIOSS(); //设置是否打开curl调试模式 $oss_sdk_service->set_debug_mode(FALSE); $bucket = $GLOBALS['distribution_cfg']['OSS_BUCKET_NAME']; $object = $dir."/".$file; $file_path = APP_ROOT_PATH.$dir."/".$file; $oss_sdk_service->upload_file_by_file($bucket,$object,$file_path); } } } } } } //关于session if(!class_exists("FanweSessionHandler")) { class FanweSessionHandler { private $savePath; private $mem; //Memcache使用 private $db; //数据库使用 private $table; //数据库使用 function open($savePath, $sessionName) { $this->savePath = APP_ROOT_PATH.$GLOBALS['distribution_cfg']['SESSION_FILE_PATH']; if($GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL") { $this->mem = require_once APP_ROOT_PATH."system/cache/MemcacheSASL/MemcacheSASL.php"; $this->mem = new MemcacheSASL; $this->mem->addServer($GLOBALS['distribution_cfg']['SESSION_CLIENT'], $GLOBALS['distribution_cfg']['SESSION_PORT']); $this->mem->setSaslAuthData($GLOBALS['distribution_cfg']['SESSION_USERNAME'],$GLOBALS['distribution_cfg']['SESSION_PASSWORD']); } elseif($GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $pconnect = false; $session_client = $GLOBALS['distribution_cfg']['SESSION_CLIENT']==""?app_conf('DB_HOST'):$GLOBALS['distribution_cfg']['SESSION_CLIENT']; $session_port = $GLOBALS['distribution_cfg']['SESSION_PORT']==""?app_conf('DB_PORT'):$GLOBALS['distribution_cfg']['SESSION_PORT']; $session_username = $GLOBALS['distribution_cfg']['SESSION_USERNAME']==""?app_conf('DB_USER'):$GLOBALS['distribution_cfg']['SESSION_USERNAME']; $session_password = $GLOBALS['distribution_cfg']['SESSION_PASSWORD']==""?app_conf('DB_PWD'):$GLOBALS['distribution_cfg']['SESSION_PASSWORD']; $session_db = $GLOBALS['distribution_cfg']['SESSION_DB']==""?app_conf('DB_NAME'):$GLOBALS['distribution_cfg']['SESSION_DB']; $this->db = new mysql_db($session_client.":".$session_port, $session_username,$session_password,$session_db,'utf8',$pconnect); $this->table = $GLOBALS['distribution_cfg']['SESSION_TABLE']==""?DB_PREFIX."session":$GLOBALS['distribution_cfg']['SESSION_TABLE']; } else { if (!is_dir($this->savePath)) { @mkdir($this->savePath, 0777); } } return true; } function close() { return true; } function read($id) { $sess_id = "sess_".$id; if($GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL") { return $this->mem->get("$this->savePath/$sess_id"); } elseif($GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $session_data = $this->db->getRow("select session_data,session_time from ".$this->table." where session_id = '".$sess_id."'",true); if($session_data['session_time']<NOW_TIME) { return false; } else { return $session_data['session_data']; } } else { $file = "$this->savePath/$sess_id"; if (filemtime($file) + SESSION_TIME < time() && file_exists($file)) { @unlink($file); } $data = (string)@file_get_contents($file); return $data; } } function write($id, $data) { $sess_id = "sess_".$id; if($GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL") { return $this->mem->set("$this->savePath/$sess_id",$data,SESSION_TIME); } elseif($GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $session_data = $this->db->getRow("select session_data,session_time from ".$this->table." where session_id = '".$sess_id."'",true); if($session_data) { $session_data['session_data'] = $data; $session_data['session_time'] = NOW_TIME+SESSION_TIME; $this->db->autoExecute($this->table, $session_data,"UPDATE","session_id = '".$sess_id."'"); } else { $session_data['session_id'] = $sess_id; $session_data['session_data'] = $data; $session_data['session_time'] = NOW_TIME+SESSION_TIME; $this->db->autoExecute($this->table, $session_data); } return true; } else { return file_put_contents("$this->savePath/$sess_id", $data) === false ? false : true; } } function destroy($id) { $sess_id = "sess_".$id; if($GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL") { $this->mem->delete($sess_id); } elseif($GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $this->db->query("delete from ".$this->table." where session_id = '".$sess_id."'"); } else { $file = "$this->savePath/$sess_id"; if (file_exists($file)) { @unlink($file); } } return true; } function gc($maxlifetime) { if($GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL") { } elseif($GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $this->db->query("delete from ".$this->table." where session_time < ".NOW_TIME); } else { foreach (glob("$this->savePath/sess_*") as $file) { if (filemtime($file) + SESSION_TIME < time() && file_exists($file)) { unlink($file); } } } return true; } } } //关于session的开启 if(!function_exists("es_session_start")) { function es_session_start($session_id) { session_set_cookie_params(0,$GLOBALS['distribution_cfg']['COOKIE_PATH'],$GLOBALS['distribution_cfg']['DOMAIN_ROOT'],false,true); if($GLOBALS['distribution_cfg']['SESSION_FILE_PATH']!=""||$GLOBALS['distribution_cfg']['SESSION_TYPE']=="MemcacheSASL"||$GLOBALS['distribution_cfg']['SESSION_TYPE']=="Db") { $handler = new FanweSessionHandler(); session_set_save_handler( array($handler, 'open'), array($handler, 'close'), array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc') ); } if($session_id) session_id($session_id); @session_start(); } }
About
No description, website, or topics provided.
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published