<!--p<br--> <p>define('UC_SERVER_VERSION', '1.5.0'); //定义UC的版本信息<br /> define('UC_SERVER_RELEASE', '20081224');//定义UC的发行时间&lt;以后升级要用到&gt;<br /> error_reporting(0);//屏蔽所有错误<br /> set_magic_quotes_runtime(0);//该系统函数将会为所有的溢出字符,当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全。1为打开 0为关闭<br /> //延伸阅读:magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线<br /> <br /> //计算程序执行时间用 获取程序开始执行时的时间戳<br /> $mtime = explode(' ', microtime());//microtime() 取得目前时间的 UNIX 时间戳记的百万分之一秒值<br /> $starttime = $mtime[1] + $mtime[0];<br /> //使用常量来表示路径,避免出现include()函数所引起的漏洞。<br /> define('IN_UC', TRUE);//用来判断程序文件是否是由本文件调用 不是的话 则报错<br /> define('UC_ROOT', substr(__FILE__, 0, -9));//__FILE__ 取该文件的完整路径 //这里是取得UC的根目录<br /> define('UC_API', strtolower((isset($_SERVER['HTTPS']) &amp;&amp; $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));//API地址,以HTTP形式表示<br /> define('UC_DATADIR', UC_ROOT.'data/');//定义UC的 DATA目录<br /> define('UC_DATAURL', UC_API.'/data');//定义API DATA目录<br /> define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());//get_magic_quotes_gpc()取得 PHP 环境变数 magic_quotes_gpc 的值<br /> //当 magic_quotes_gpc 打开时,所有的 ' (单引号), &quot; (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。 <br /> //清除变量,清除所有PHP4 以前的长类型的 全局变量 <br /> unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);<br /> <br /> //对全局变量数组进行 反斜线转义<br /> $_GET = daddslashes($_GET, 1, TRUE);<br /> $_POST = daddslashes($_POST, 1, TRUE);<br /> $_COOKIE = daddslashes($_COOKIE, 1, TRUE);<br /> $_SERVER = daddslashes($_SERVER);<br /> $_FILES = daddslashes($_FILES);<br /> $_REQUEST = daddslashes($_REQUEST, 1, TRUE);<br /> <br /> //加载配置文件 模型文件<br /> require UC_DATADIR.'config.inc.php';//数据库及常用常量的定义<br /> require UC_ROOT.'model/base.php'; //基本数据模型<br /> require UC_ROOT.'model/admin.php'; //管理数据模型<br /> //注意: m为控制器 a为方法<br /> $m = empty($_REQUEST['m']) ? 'frame' : $_REQUEST['m'];//没有任何传值时 默认控制器为frame<br /> $a = empty($_REQUEST['a']) ? 'index' : $_REQUEST['a'];//没有任何传值时 默认方法为index<br /> define('RELEASE_ROOT', '');//将版本目录设为空 以后要用到<br /> //作用一:根据参数的不同值加载不同的控制器,作用二:避免出现调用其它文件的漏洞<br /> if(in_array($m, array('test','admin', 'app', 'badword', 'pm', 'cache', 'db', 'domain', 'frame', 'log', 'note', 'feed', 'mail', 'setting', 'user', 'credit', 'seccode', 'tool', 'plugin'))) {//如果变量$m中的值 能在array数组中找到 则执行<br /> include UC_ROOT.&quot;control/admin/$m.php&quot;; //加载指定控制器文件<br /> $control = new control();<br /> $method = 'on'.$a; //设置所要执行的方法的方法名<br /> if(method_exists($control, $method) &amp;&amp; $a{0} != '_') {//$a{0}为字符串$a的第一个字符<br /> $control-&gt;$method();//如果在control对象中存在 $method方法 并且方法名不是以_开头的 则执行该方法<br /> //这里的作用是 不能调用下划线_开头的方法,从而起到封装的作用,如果一个方法不想要被用户访问则在前面加下划线<br /> } elseif(method_exists($control, '_call')) {//如果在control对象中 存在_call方法 则调用_call方法<br /> $control-&gt;_call('on'.$a, '');<br /> //如果在类中找不到所需执行的方法 而存在_call方法,则调用该类中_call方法<br /> //作用:可以加载其他外部插件<br /> } else {<br /> exit('Action not found!');<br /> }<br /> } else {//否则 显示错误提示 找不到指定模块<br /> exit('Module not found!');<br /> }<br /> //End 根据参数不同调用不同的控制器及方法<br /> //计算程序执行时间用 获取程序执行完毕时的时间戳<br /> $mtime = explode(' ', microtime());<br /> $endtime = $mtime[1] + $mtime[0];<br /> //echo '<script>document.getElementById('debug_time').innerHTML = ''.number_format($endtime - $starttime, 5).''</script>'.&quot;n&quot;;<br /> <br /> function daddslashes($string, $force = 0, $strip = FALSE) {//该函数作用为 智能加饭斜线 <br /> if(!MAGIC_QUOTES_GPC || $force) { //如果PHP.INI配置里 没有将 转义打开 或者 $force为1 则执行下列语句<br /> if(is_array($string)) {//如果是数组的话 则递归调要daddslashes函数 为每个索引值 转义<br /> foreach($string as $key =&gt; $val) {<br /> $string[$key] = daddslashes($val, $force);<br /> }<br /> } else {//不是数组的话<br /> $string = addslashes($strip ? stripslashes($string) : $string);<br /> //StripSlashes函数可去掉字符串中的反斜线字符。若是连续二个反斜线,则去掉一个,留下一个。若只有一个反斜线,就直接去掉。<br /> //addslashes()返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(&quot;)、反斜线()与 NUL(NULL 字符)。 <br /> <br /> }<br /> }//转义 判断结束<br /> return $string;<br /> }<br /> function getgpc($k, $t='R') {<br /> switch($t) {<br /> case 'P': $var = &amp;$_POST; break;<br /> case 'G': $var = &amp;$_GET; break;<br /> case 'C': $var = &amp;$_COOKIE; break;<br /> case 'R': $var = &amp;$_REQUEST; break;<br /> } <br /> return isset($var[$k]) ? (is_array($var[$k]) ? $var[$k] : trim($var[$k])) : NULL; //trim()函数的作用是:去除字符串首末尾的空白<br /> }<br /> //EG: getgpc('input', 'R')<br /> ?&gt;</p>
T:0.006517s,M:251.98 KB
返回顶部 留言