http://blog.csdn.net/haiqiao_2010/article/details/12166283
由于需要搭建一个简单的框架来进行API接口开发,所以简单的mvc框架当然是首选.最原始,最简洁的mvc框架.下面来介绍下.
        一. 项目目录结构:
app 
|-controller    存放控制器文件 
|-model        存放模型文件 
|-view        存放视图文件    
core
|-lib        存放自定义类库 
|-config    存放配置文件 
|--config.php   系统配置文件 
|--conn.php   数据库连接文件 
|--db_config.php  
 数据库配置文件 
|-mysql_db.php    数据库类文件 
|-runtime    缓存文件
db_caches 数据库缓存文件
logs日志文件
|-index.php    入口文件 
| -dispatcher.php
|
 -loader.php
|
 -router.php
二.项目架构
1.先介绍index.php,附源码:
 
- <?php  
- include("./core/ini.php");  
- include("./core/config/config.php");  
- include("./core/global.fun.php");  
- include("./core/common.php");  
-   
- initializer::initialize();
- $router = loader::load("router");
- dispatcher::dispatch($router);
- ?>  
 
 
2.初始化项目文件
 ./core/ini.php 源码:
 
 
- <?php  
- set_include_path(get_include_path() . PATH_SEPARATOR . "core/main");  
- function __autoload($object){  
-     require_once("{$object}.php");  
- }  
 
这个文件首先设置了include_path,也就是我们如果要找包含的文件,告诉系统在这个目录下查找。其实我们定义__autoload()方法,这个方法是在PHP5增加的,就是当我们实例化一个函数的时候,如果本文件没有,就会自动去加载文件
3.加载系统配置文件./core/config.php
 源码:
 
 
- <?php  
-     
-     header("content-type:text/html;charset=utf-8");  
-     
-     error_reporting(0);  
-     date_default_timezone_set("PRC");  
-     
-     define("URL_PATH","<a target="_blank" href="http:
-     define(‘IMG_PATH‘,"<a target="_blank" href="http:
-       
-     
-     defined("APP_LOG") or define("APP_LOG",true);  
-     if (APP_LOG) {  
-         $GLOBALS[‘log‘] = new APIlog();  
-         set_exception_handler(array($GLOBALS[‘log‘],‘quit‘));  
-         set_error_handler(array($GLOBALS[‘log‘],‘error_handle‘));  
-     }  
-       
-     define(‘IS_CGI‘,substr(PHP_SAPI, 0,3)==‘cgi‘ ? 1 : 0 );  
-     define(‘IS_WIN‘,strstr(PHP_OS, ‘WIN‘) ? 1 : 0 );  
-     define(‘IS_CLI‘,PHP_SAPI==‘cli‘? 1   :   0);  
-     if(!defined(‘APP_NAME‘)) define(‘APP_NAME‘, basename(dirname($_SERVER[‘SCRIPT_FILENAME‘])));  
-     if(!IS_CLI) {  
-         
-         if(!defined(‘_PHP_FILE_‘)) {  
-             if(IS_CGI) {  
-                 
-                 $_temp  = explode(‘.php‘,$_SERVER["PHP_SELF"]);  
-                 define(‘_PHP_FILE_‘,  rtrim(str_replace($_SERVER["HTTP_HOST"],‘‘,$_temp[0].‘.php‘),‘/‘));  
-             }else {  
-                 define(‘_PHP_FILE_‘,    rtrim($_SERVER["SCRIPT_NAME"],‘/‘));  
-             }  
-         }  
-         if(!defined(‘__ROOT__‘)) {  
-             
-             if( strtoupper(APP_NAME) == strtoupper(basename(dirname(_PHP_FILE_))) ) {  
-                 $_root = dirname(dirname(_PHP_FILE_));  
-             }else {  
-                 $_root = dirname(_PHP_FILE_);  
-             }  
-             define(‘__ROOT__‘,   (($_root==‘/‘ || $_root==‘\\‘)?‘‘:$_root));  
-         }  
-       
-         
-         define(‘URL_COMMON‘,      0);   
-         define(‘URL_PATHINFO‘,    1);   
-         define(‘URL_REWRITE‘,     2);   
-         define(‘URL_COMPAT‘,      3);   
-     }  
-       
-       
-     if(!defined(‘APP_ROOT‘)) {
-         
-         $_root = dirname(_PHP_FILE_);  
-         $_root = (($_root==‘/‘ || $_root==‘\\‘)?‘‘:$_root);  
-         $_root = str_replace("/system","",$_root);  
-         define(‘APP_ROOT‘, $_root  );  
-     }  
-     if(!defined(‘APP_ROOT_PATH‘))
-         define(‘APP_ROOT_PATH‘, str_replace("\\","/",substr(dirname(__FILE__),0,-11)));  
-       
-     if(!defined(‘PAGE_SIZE‘))
-         define(‘PAGE_SIZE‘,15);  
-   
- ?>  
 
 
4.加载通用的方法的文件./core/global_fun.php
 源码:
- <?php  
-    
-     
-     function strip_sql($string){  
- <span style="white-space:pre">  </span>   global $search_arr,$replace_arr;  
- <span style="white-space:pre">  </span>   return is_array($string) ? array_map(‘strip_sql‘, $string) : preg_replace($search_arr, $replace_arr, $string);  
-    }  
-   
-   
-    function new_htmlspecialchars($string){  
- <span style="white-space:pre">      </span>return is_array($string) ? array_map(‘new_htmlspecialchars‘, $string) : htmlspecialchars($string,ENT_QUOTES);  
-    }  
-   
-   
-    function new_addslashes($string){  
- <span style="white-space:pre">      </span>if(!is_array($string)) return addslashes($string);  
- <span style="white-space:pre">      </span>foreach($string as $key => $val) $string[$key] = new_addslashes($val);  
- <span style="white-space:pre">      </span>return $string;  
-    }  
-   
-   
-    function new_stripslashes($string)  
-    {  
- <span style="white-space:pre">      </span>if(!is_array($string)) return stripslashes($string);  
- <span style="white-space:pre">      </span>foreach($string as $key => $val) $string[$key] = new_stripslashes($val);  
- <span style="white-space:pre">      </span>return $string;  
-    }  
-   
-   
-    function strip_textarea($string){  
- <span style="white-space:pre">      </span>return nl2br(str_replace(‘ ‘, ‘ ‘, htmlspecialchars($string, ENT_QUOTES)));  
-    }  
-   
-   
-    function strip_js($string, $js = 1){  
- <span style="white-space:pre">      </span>$string = str_replace(array("\n","\r","\""),array(‘‘,‘‘,"\\\""),$string);  
- <span style="white-space:pre">      </span>return $js==1 ? "document.write(\"".$string."\");\n" : $string;  
-    }  
-      
-    
-    function check_email($email)  
-    {  
-    <span style="white-space:pre"> </span>if(!preg_match("/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/",$email))  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>return false;  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>else  
-    <span style="white-space:pre">     </span>return true;  
-    }  
-      
-    
-    function check_mobile($mobile)  
-    {  
-    <span style="white-space:pre">     </span>$pattern = "/^1\d{10}$/";  
-    <span style="white-space:pre">     </span>if (preg_match($pattern,$mobile))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>Return true;  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre">     </span>else  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>Return false;  
-    <span style="white-space:pre">     </span>}  
-    }  
-      
-    
-    function get_gmtime()  
-    {  
-    <span style="white-space:pre"> </span>return (time() - date(‘Z‘));  
-    }  
-      
-    function to_date($utc_time, $format = ‘Y-m-d H:i:s‘) {  
-    <span style="white-space:pre"> </span>if (empty ( $utc_time )) {  
-    <span style="white-space:pre">     </span>return ‘‘;  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>$timezone = 8;  
-    <span style="white-space:pre"> </span>$time = $utc_time + $timezone * 3600;  
-    <span style="white-space:pre"> </span>return date ($format, $time );  
-    }  
-      
-      
-    function to_timespan($str, $format = ‘Y-m-d H:i:s‘)  
-    {  
-    <span style="white-space:pre"> </span>$timezone = 8;  
-    <span style="white-space:pre"> </span>$time = intval(strtotime($str));  
-    <span style="white-space:pre"> </span>if($time!=0)  
-    <span style="white-space:pre">     </span>$time = $time - $timezone * 3600;  
-    <span style="white-space:pre"> </span>return $time;  
-    }  
-      
-    function get_http()  
-    {  
-    <span style="white-space:pre"> </span>return (isset($_SERVER[‘HTTPS‘]) && (strtolower($_SERVER[‘HTTPS‘]) != ‘off‘)) ? ‘https://‘ : ‘http://‘;  
-    }  
-      
-    function get_domain()  
-    {  
-    <span style="white-space:pre"> </span>
-    <span style="white-space:pre"> </span>$protocol = get_http();  
-      
-    <span style="white-space:pre"> </span>
-    <span style="white-space:pre"> </span>if (isset($_SERVER[‘HTTP_X_FORWARDED_HOST‘]))  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>$host = $_SERVER[‘HTTP_X_FORWARDED_HOST‘];  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>elseif (isset($_SERVER[‘HTTP_HOST‘]))  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>$host = $_SERVER[‘HTTP_HOST‘];  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>else  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>
-    <span style="white-space:pre">     </span>if (isset($_SERVER[‘SERVER_PORT‘]))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$port = ‘:‘ . $_SERVER[‘SERVER_PORT‘];  
-      
-    <span style="white-space:pre">         </span>if ((‘:80‘ == $port && ‘http://‘ == $protocol) || (‘:443‘ == $port && ‘https://‘ == $protocol))  
-    <span style="white-space:pre">         </span>{  
-    <span style="white-space:pre">             </span>$port = ‘‘;  
-    <span style="white-space:pre">         </span>}  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre">     </span>else  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$port = ‘‘;  
-    <span style="white-space:pre">     </span>}  
-      
-    <span style="white-space:pre">     </span>if (isset($_SERVER[‘SERVER_NAME‘]))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$host = $_SERVER[‘SERVER_NAME‘] . $port;  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre">     </span>elseif (isset($_SERVER[‘SERVER_ADDR‘]))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$host = $_SERVER[‘SERVER_ADDR‘] . $port;  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre"> </span>}  
-      
-    <span style="white-space:pre"> </span>return $protocol . $host;  
-    }  
-    function get_host()  
-    {  
-      
-      
-    <span style="white-space:pre"> </span>
-    <span style="white-space:pre"> </span>if (isset($_SERVER[‘HTTP_X_FORWARDED_HOST‘]))  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>$host = $_SERVER[‘HTTP_X_FORWARDED_HOST‘];  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>elseif (isset($_SERVER[‘HTTP_HOST‘]))  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>$host = $_SERVER[‘HTTP_HOST‘];  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>else  
-    <span style="white-space:pre"> </span>{  
-    <span style="white-space:pre">     </span>if (isset($_SERVER[‘SERVER_NAME‘]))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$host = $_SERVER[‘SERVER_NAME‘];  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre">     </span>elseif (isset($_SERVER[‘SERVER_ADDR‘]))  
-    <span style="white-space:pre">     </span>{  
-    <span style="white-space:pre">         </span>$host = $_SERVER[‘SERVER_ADDR‘];  
-    <span style="white-space:pre">     </span>}  
-    <span style="white-space:pre"> </span>}  
-    <span style="white-space:pre"> </span>return $host;  
-    }  
-      
- function aes_ecryptdString($str,$keys="1034567890666450",$iv="1034567890123450",$cipher_alg=MCRYPT_RIJNDAEL_128){  
- <span style="white-space:pre">  </span>$encrypted_string= bin2hex(mcrypt_encrypt($cipher_alg,$keys, $str, MCRYPT_MODE_CBC,$iv));  
- <span style="white-space:pre">  </span>return $encrypted_string;  
- }  
-   
-   
- function aes_decryptString($str,$keys="1034567890666450",$iv="1034567890123450",$cipher_alg=MCRYPT_RIJNDAEL_128){  
- <span style="white-space:pre">  </span>$decrypted_string= mcrypt_decrypt($cipher_alg,$keys,pack("H*",$str),MCRYPT_MODE_CBC,$iv);  
- <span style="white-space:pre">  </span>return $decrypted_string;  
- }  
-      
- function iconv_array(&$array,$in_charset,$out_charset)  
- {  
- <span style="white-space:pre">  </span>if(UC_CHARSET!=‘utf-8‘)  
- <span style="white-space:pre">  </span>{  
- <span style="white-space:pre">      </span>foreach($array as $k=>$v)  
- <span style="white-space:pre">      </span>{  
- <span style="white-space:pre">          </span>if(is_array($array[$k]))  
- <span style="white-space:pre">          </span>{  
- <span style="white-space:pre">              </span>iconv_array($array[$k],$in_charset,$out_charset);  
- <span style="white-space:pre">          </span>}  
- <span style="white-space:pre">          </span>else  
- <span style="white-space:pre">          </span>{  
- <span style="white-space:pre">              </span>$array[$k] = iconv($in_charset,$out_charset,$array[$k]);  
- <span style="white-space:pre">          </span>}  
- <span style="white-space:pre">      </span>}  
- <span style="white-space:pre">  </span>}  
- }  
-   
-   
- function utf8_to_unicode($char)  
- {  
- <span style="white-space:pre">  </span>switch(strlen($char))  
- <span style="white-space:pre">  </span>{  
- <span style="white-space:pre">      </span>case 1:  
- <span style="white-space:pre">          </span>return ord($char);  
- <span style="white-space:pre">      </span>case 2:  
- <span style="white-space:pre">          </span>$n = (ord($char[0]) & 0x3f) << 6;  
- <span style="white-space:pre">          </span>$n += ord($char[1]) & 0x3f;  
- <span style="white-space:pre">          </span>return $n;  
- <span style="white-space:pre">      </span>case 3:  
- <span style="white-space:pre">          </span>$n = (ord($char[0]) & 0x1f) << 12;  
- <span style="white-space:pre">          </span>$n += (ord($char[1]) & 0x3f) << 6;  
- <span style="white-space:pre">          </span>$n += ord($char[2]) & 0x3f;  
- <span style="white-space:pre">          </span>return $n;  
- <span style="white-space:pre">      </span>case 4:  
- <span style="white-space:pre">          </span>$n = (ord($char[0]) & 0x0f) << 18;  
- <span style="white-space:pre">          </span>$n += (ord($char[1]) & 0x3f) << 12;  
- <span style="white-space:pre">          </span>$n += (ord($char[2]) & 0x3f) << 6;  
- <span style="white-space:pre">          </span>$n += ord($char[3]) & 0x3f;  
- <span style="white-space:pre">          </span>return $n;  
- <span style="white-space:pre">  </span>}  
- }  
-   
-   
- function str_to_unicode_word($str,$depart=‘ ‘)  
- {  
- <span style="white-space:pre">  </span>$arr = array();  
- <span style="white-space:pre">  </span>$str_len = mb_strlen($str,‘utf-8‘);  
- <span style="white-space:pre">  </span>for($i = 0;$i < $str_len;$i++)  
- <span style="white-space:pre">  </span>{  
- <span style="white-space:pre">      </span>$s = mb_substr($str,$i,1,‘utf-8‘);  
- <span style="white-space:pre">      </span>if($s != ‘ ‘ && $s != ‘ ‘)  
- <span style="white-space:pre">          </span>{  
- <span style="white-space:pre">          </span>$arr[] = ‘ux‘.utf8_to_unicode($s);  
- <span style="white-space:pre">      </span>}  
- <span style="white-space:pre">  </span>}  
- return implode($depart,$arr);  
- }  
-   
-   
- function str_to_unicode_string($str)  
- {  
- <span style="white-space:pre">  </span>$string = str_to_unicode_word($str,‘‘);  
- <span style="white-space:pre">  </span>return $string;  
- }  
-   
-   
- function div_str($str)  
- {  
- <span style="white-space:pre">  </span>require_once APP_ROOT_PATH."core/lib/words.php";  
- <span style="white-space:pre">  </span>$words = words::segment($str);  
- <span style="white-space:pre">  </span>$words[] = $str;  
- <span style="white-space:pre">  </span>return $words;  
- }  
-   
-   
- function get_code_bynum($num) {  
- <span style="white-space:pre">  </span>$num = intval($num);  
- <span style="white-space:pre">  </span>if ($num <= 0)  
- <span style="white-space:pre">      </span>return false;  
- <span style="white-space:pre">  </span>$codeArr = array("0","1","2","3","4","5","6","7","8","9",‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘);  
- <span style="white-space:pre">  </span>$code = ‘‘;  
- <span style="white-space:pre">  </span>do {  
- <span style="white-space:pre">      </span>$key = ($num - 1) % 36;  
- <span style="white-space:pre">      </span>$code = $codeArr[$key] . $code;  
- <span style="white-space:pre">      </span>$num = floor(($num - $key) / 36);  
- <span style="white-space:pre">  </span>} while ($num > 0);  
- <span style="white-space:pre">  </span>return $code;  
- }  
-   
-   
- function get_num_bycode($str){  
- <span style="white-space:pre">  </span>$array=array("0","1","2","3","4","5","6","7","8","9","A", "B", "C", "D","E", "F", "G", "H", "I", "J", "K", "L","M", "N", "O","P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y","Z");  
- <span style="white-space:pre">  </span>$len=strlen($str);  
- <span style="white-space:pre">  </span>for($i=0;$i<$len;$i++){  
- <span style="white-space:pre">      </span>$index=array_search($str[$i],$array);  
- <span style="white-space:pre">      </span>$sum+=($index+1)*pow(36,$len-$i-1);  
- <span style="white-space:pre">  </span>}  
- <span style="white-space:pre">  </span>return $sum;  
- }  
-   
-   
- ?>  
 
5.加载公共方法的文件./core/common.php
 源码:
- <?php  
- function app_conf($name)  
- {  
-     return  $GLOBALS[‘db‘]->getOne("select value from ".DB_PREFIX."conf where name=‘".$name."‘");  
- }  
-   
- function check_phone($phone)  
- {  
-     if(!empty($phone) && !preg_match("/^1\d{10}$/",$phone))  
-     {  
-         return false;  
-     }  
-     else  
-         return true;  
- }  
-   
- function get_pwd_strength($pwd){  
-     if (strlen(iconv(‘UTF-8‘,‘GBK‘,$pwd))>30 || strlen(iconv(‘UTF-8‘,‘GBK‘,$pwd))<6)  
-     {  
-         return ‘密码是6-30位的字符串,且必须由字母和数字组成.‘;  
-     }  
-   
-     if(preg_match("/^\d+$/",$pwd))  
-     {  
-         return ‘密码不能为全数字‘;
-     }  
-   
-     if(preg_match("/^[a-z]+$/i",$pwd))  
-     {  
-         return ‘密码不能为全字母‘;
-     }  
-   
-     if(!preg_match("/^[A-Za-z0-9]+$/",$pwd))  
-     {  
-         return ‘密码只能包含字母和数字‘;
-     }  
-     return null;  
- }  
-   
-   
- function ajax_return($data)  
- {  
-     header("Content-Type:text/html; charset=utf-8");  
-     echo(json_encode($data));  
-     if (APP_LOG) {  
-         $GLOBALS[‘log‘]->quit($data);  
-     }  
-     exit;  
- }  
-   
- function passport_encrypt($txt, $key = ‘IMEMBER_2013‘) {  
-     srand((double)microtime() * 1000000);  
-     $encrypt_key = md5(rand(0, 32000));  
-     $ctr = 0;  
-     $tmp = ‘‘;  
-     for($i = 0;$i < strlen($txt); $i++) {  
-         $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;  
-         $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);  
-     }  
-     return base64_encode(passport_key($tmp, $key));  
- }  
-   
- function passport_decrypt($txt, $key = ‘IMEMBER_2013‘) {  
-     $txt = passport_key(base64_decode($txt), $key);  
-     $tmp = ‘‘;  
-     for($i = 0;$i < strlen($txt); $i++) {  
-         if (empty($txt[$i+1])) {  
-             return false;  
-         }  
-         $md5 = $txt[$i];  
-         $tmp .= $txt[++$i] ^ $md5;  
-     }  
-     return $tmp;  
- }  
-   
- function passport_key($txt, $encrypt_key) {  
-     $encrypt_key = md5($encrypt_key);  
-     $ctr = 0;  
-     $tmp = ‘‘;  
-     for($i = 0; $i < strlen($txt); $i++) {  
-         $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;  
-         $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];  
-     }  
-     return $tmp;  
- }  
-   
- function imagePathRevise($img_path){  
-     
-     if (preg_match(‘/^http:\/\//‘, $img_path)) {  
-         return $img_path;  
-     }else{  
-         return IMG_PATH.preg_replace(‘/^\.\//‘, ‘‘, $img_path);  
-     }  
- }  
-   
- function msubstr($str, $start=0, $length=15, $charset="utf-8", $suffix=true)  
- {  
-     if(function_exists("mb_substr"))  
-     {  
-         $slice =  mb_substr($str, $start, $length, $charset);  
-         if($suffix&$slice!=$str) return $slice."…";  
-         return $slice;  
-     }  
-     elseif(function_exists(‘iconv_substr‘)) {  
-         return iconv_substr($str,$start,$length,$charset);  
-     }  
-     $re[‘utf-8‘]   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";  
-     $re[‘gb2312‘] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";  
-     $re[‘gbk‘]    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";  
-     $re[‘big5‘]   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";  
-     preg_match_all($re[$charset], $str, $match);  
-     $slice = join("",array_slice($match[0], $start, $length));  
-     if($suffix&&$slice!=$str) return $slice."…";  
-     return $slice;  
- }  
-   
- }  
- ?>  
 
 
6.加载./initializer.php,initializer()用于将所有公用的文件目录在此函数里声明
initializer::initialize();
这就话就是调用initializer类的一个静态函数initialize,因为我们在ini.php,设置了include_path,以及定义了__autoload,所以程序会自动在core/main目录查找initializer.php.
定义了一个静态函数,initialize函数,这个函数就是设置include_path,这样,以后如果包含文件,或者__autoload,就会去这些目录下查找。
 
- <?php  
- class initializer  
- {  
-     public static function initialize() {  
-         set_include_path(get_include_path().PATH_SEPARATOR . "core/main");  
-         set_include_path(get_include_path().PATH_SEPARATOR . "core/main/cache");  
-         set_include_path(get_include_path().PATH_SEPARATOR . "core/helpers");  
-         set_include_path(get_include_path().PATH_SEPARATOR . "core/libraries");  
-         set_include_path(get_include_path().PATH_SEPARATOR . "core/config");  
-         set_include_path(get_include_path().PATH_SEPARATOR . "app/controllers");  
-         set_include_path(get_include_path().PATH_SEPARATOR."app/models");  
-         set_include_path(get_include_path().PATH_SEPARATOR."app/views");  
-   
-     }  
- }  
- ?>  
 
 
7.加载./loader.php文件,源码:
 
 
- <?php  
- class loader  
- {  
-     private static $loaded = array();  
-     public static function load($object){  
-         $valid = array(   
-                 "library",  
-                 "view",  
-                 "model",  
-                 "helper",  
-                 "router",  
-                 "config",  
-                 "hook",  
-                 "cache",  
-                 "db");  
-         if (!in_array($object,$valid)){  
-             ajax_return(array(‘recode‘=>"0003",‘msg‘=>"非法操作","data"=>"Not a valid object ‘{$object}‘ to load"));  
-         }  
-         if (empty(self::$loaded[$object])){  
-             self::$loaded[$object]= new $object();  
-         }  
-         return self::$loaded[$object];  
-     }  
- }  
- ?>  
 
8.加载控制层文件./router.php,源码:
 
 
- <?php  
- class router  
- {  
-     private $route;  
-     private $controller;  
-     private $action;  
-     private $params;  
-     public function __construct()  
-     {  
-         
-         $routeParts=$_GET;  
-         if (!isset($routeParts[‘c‘])){  
-             ajax_return(array(‘recode‘=>"0003",‘msg‘=>"非法操作",‘data‘=>"Controller is null"));  
-         }  
-           
-         $this->route = $routeParts[‘c‘];  
-         $this->controller=$routeParts[‘c‘];  
-         $this->action=isset($routeParts[‘act‘])? $routeParts[‘act‘]:"index";  
-         array_shift($routeParts);  
-         array_shift($routeParts);  
-         $this->params=$routeParts;  
-     }  
-     public function getAction() {  
-         if (empty($this->action)) $this->action="index";  
-         return $this->action;  
-     }  
-     public function getController()  {  
-         return $this->controller;  
-     }  
-     public function getParams()  {  
-         return $this->params;  
-     }  
- }  
- ?>  
 
9.加载数据库连接文件./core/conn.php,源码:
 
 
- <?php  
-    
-     
-   
-    
-    
-    $dbcfg = require APP_ROOT_PATH."core/config/db_config.php";  
-       
-     if(!defined(‘DB_PREFIX‘))
-         define(‘DB_PREFIX‘, $dbcfg[‘DB_PREFIX‘]);  
-    if(!file_exists(APP_ROOT_PATH.‘core/runtime/db_caches/‘))  
-         mkdir(APP_ROOT_PATH.‘core/runtime/db_caches/‘,0777);  
-    $pconnect = false;  
-    $GLOBALS[‘db‘] = new mysql_db($dbcfg[‘DB_HOST‘].":".$dbcfg[‘DB_PORT‘], $dbcfg[‘DB_USER‘],$dbcfg[‘DB_PWD‘],$dbcfg[‘DB_NAME‘],‘utf8‘,$pconnect);  
-    mysql_query("SET NAMES UTF8");
-    
-    if(mysqli_connect_errno()){  
-         die (json_encode(array(‘recode‘=>"0009",‘msg‘=>"连接数据库失败:" . mysql_error (),‘data‘=>‘‘)));  
-    }  
-    
-      
- ?>  
 
 
10.加载数据库配置文件./core/db_config.php,源码:
 
 
- <?php  
- return array(  
- ‘DB_HOST‘=>‘localhost‘,  
- ‘DB_NAME‘=>‘ip‘,  
- ‘DB_USER‘=>‘sara‘,  
- ‘DB_PWD‘=>‘abc123‘,  
- ‘DB_PORT‘=>‘3306‘,  
- ‘DB_PREFIX‘=>‘base_‘,  
- );  
- ?>  
 
11.加载数据库类文件./core/mysql_db.php,源码:
- <?php  
-       
-    class mysql_db  
-    {  
-     var $link_id    = NULL;  
-      
-     var $settings   = array();  
-      
-     var $queryCount = 0;  
-     var $queryTime  = ‘‘;  
-     var $queryLog   = array();  
-      
-     var $max_cache_time = 60; 
-      
-     var $cache_data_dir = ‘core/runtime/db_caches/‘;  
-     var $root_path      = ‘‘;  
-      
-     var $error_message  = array();  
-     var $platform       = ‘‘;  
-     var $version        = ‘‘;  
-     var $dbhash         = ‘‘;  
-     var $starttime      = 0;  
-     var $timeline       = 0;  
-     var $timezone       = 0;  
-   
-     var $mysql_config_cache_file_time = 0;  
-      
-     var $mysql_disable_cache_tables = array(); 
-      
-     function __construct($dbhost, $dbuser, $dbpw, $dbname = ‘‘, $charset = ‘utf8‘, $pconnect = 0, $quiet = 0)  
-     {  
-         $this->mysql_db($dbhost, $dbuser, $dbpw, $dbname, $charset, $pconnect, $quiet);  
-     }  
-      
-     function mysql_db($dbhost, $dbuser, $dbpw, $dbname = ‘‘, $charset = ‘utf8‘, $pconnect = 0, $quiet = 0)  
-     {  
-         if (defined(‘APP_ROOT_PATH‘) && !$this->root_path)  
-         {  
-             $this->root_path = APP_ROOT_PATH;  
-         }  
-      
-         if ($quiet)  
-         {  
-             $this->connect($dbhost, $dbuser, $dbpw, $dbname, $charset, $pconnect, $quiet);  
-         }  
-         else  
-         {  
-             $this->settings = array(  
-                     ‘dbhost‘   => $dbhost,  
-                     ‘dbuser‘   => $dbuser,  
-                     ‘dbpw‘     => $dbpw,  
-                     ‘dbname‘   => $dbname,  
-                     ‘charset‘  => $charset,  
-                     ‘pconnect‘ => $pconnect  
-             );  
-         }  
-     }  
-      
-     function connect($dbhost, $dbuser, $dbpw, $dbname = ‘‘, $charset = ‘utf8‘, $pconnect = 0, $quiet = 0)  
-     {  
-         if ($pconnect)  
-         {  
-             if (!($this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw)))  
-             {  
-                 if (!$quiet)  
-                 {  
-                     $this->ErrorMsg("Can‘t pConnect MySQL Server($dbhost)!");  
-                 }  
-      
-                 return false;  
-             }  
-         }  
-         else  
-         {  
-             if (PHP_VERSION >= ‘4.2‘)  
-             {  
-                 $this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);  
-             }  
-             else  
-             {  
-                 $this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw);  
-      
-                 mt_srand((double)microtime() * 1000000); 
-             }  
-             if (!$this->link_id)  
-             {  
-                 if (!$quiet)  
-                 {  
-                     $this->ErrorMsg("Can‘t Connect MySQL Server($dbhost)!");  
-                 }  
-      
-                 return false;  
-             }  
-         }  
-      
-         $this->dbhash  = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname);  
-         $this->version = mysql_get_server_info($this->link_id);  
-      
-         
-         if ($this->version > ‘4.1‘)  
-         {  
-             if ($charset != ‘latin1‘)  
-             {  
-                 mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $this->link_id);  
-             }  
-             if ($this->version > ‘5.0.1‘)  
-             {  
-                 mysql_query("SET sql_mode=‘‘", $this->link_id);  
-             }  
-         }  
-      
-         $sqlcache_config_file = $this->root_path . $this->cache_data_dir . ‘sqlcache_config_file_‘ . $this->dbhash . ‘.php‘;  
-      
-         @include($sqlcache_config_file);  
-      
-         $this->starttime = time();  
-      
-         if ($this->max_cache_time && $this->starttime > $this->mysql_config_cache_file_time + $this->max_cache_time)  
-         {  
-             if ($dbhost != ‘.‘)  
-             {  
-                 $result = mysql_query("SHOW VARIABLES LIKE ‘basedir‘", $this->link_id);  
-                 $row    = mysql_fetch_assoc($result);  
-                 if (!empty($row[‘Value‘]{  
-                     1}) && $row[‘Value‘]{  
-                         1} == ‘:‘ && !empty($row[‘Value‘]{  
-                             2}) && $row[‘Value‘]{  
-                                 2} == "\\")  
-                 {  
-                     $this->platform = ‘WINDOWS‘;  
-                 }  
-                 else  
-                 {  
-                     $this->platform = ‘OTHER‘;  
-                 }  
-             }  
-             else  
-             {  
-                 $this->platform = ‘WINDOWS‘;  
-             }  
-      
-             if ($this->platform == ‘OTHER‘ &&  
-                     ($dbhost != ‘.‘ && strtolower($dbhost) != ‘localhost:3306‘ && $dbhost != ‘127.0.0.1:3306‘) ||  
-                     (PHP_VERSION >= ‘5.1‘ && date_default_timezone_get() == ‘UTC‘))  
-             {  
-                 $result = mysql_query("SELECT UNIX_TIMESTAMP() AS timeline, UNIX_TIMESTAMP(‘" . date(‘Y-m-d H:i:s‘, $this->starttime) . "‘) AS timezone", $this->link_id);  
-                 $row    = mysql_fetch_assoc($result);  
-      
-                 if ($dbhost != ‘.‘ && strtolower($dbhost) != ‘localhost:3306‘ && $dbhost != ‘127.0.0.1:3306‘)  
-                 {  
-                     $this->timeline = $this->starttime - $row[‘timeline‘];  
-                 }  
-      
-                 if (PHP_VERSION >= ‘5.1‘ && date_default_timezone_get() == ‘UTC‘)  
-                 {  
-                     $this->timezone = $this->starttime - $row[‘timezone‘];  
-                 }  
-             }  
-      
-             $content = ‘<‘ . "?php\r\n" .  
-                     ‘$this->mysql_config_cache_file_time = ‘ . $this->starttime . ";\r\n" .  
-                     ‘$this->timeline = ‘ . $this->timeline . ";\r\n" .  
-                     ‘$this->timezone = ‘ . $this->timezone . ";\r\n" .  
-                     ‘$this->platform = ‘ . "‘" . $this->platform . "‘;\r\n?" . ‘>‘;  
-      
-             @file_put_contents($sqlcache_config_file, $content);  
-         }  
-      
-         
-         if ($dbname)  
-         {  
-             if (mysql_select_db($dbname, $this->link_id) === false )  
-             {  
-                 if (!$quiet)  
-                 {  
-                     $this->ErrorMsg("Can‘t select MySQL database($dbname)!");  
-                 }  
-      
-                 return false;  
-             }  
-             else  
-             {  
-                 return true;  
-             }  
-         }  
-         else  
-         {  
-             return true;  
-         }  
-     }  
-      
-     function select_database($dbname)  
-     {  
-         return mysql_select_db($dbname, $this->link_id);  
-     }  
-      
-     function set_mysql_charset($charset)  
-     {  
-         
-         if ($this->version > ‘4.1‘)  
-         {  
-             if (in_array(strtolower($charset), array(‘gbk‘, ‘big5‘, ‘utf-8‘, ‘utf8‘)))  
-             {  
-                 $charset = str_replace(‘-‘, ‘‘, $charset);  
-             }  
-             if ($charset != ‘latin1‘)  
-             {  
-                 mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $this->link_id);  
-             }  
-         }  
-     }  
-      
-     function fetch_array($query, $result_type = MYSQL_ASSOC)  
-     {  
-         return mysql_fetch_array($query, $result_type);  
-     }  
-      
-     function query($sql, $type = ‘‘)  
-     {  
-         if ($this->link_id === NULL)  
-         {  
-             $this->connect($this->settings[‘dbhost‘], $this->settings[‘dbuser‘], $this->settings[‘dbpw‘], $this->settings[‘dbname‘], $this->settings[‘charset‘], $this->settings[‘pconnect‘]);  
-             $this->settings = array();  
-         }  
-      
-         if ($this->queryCount++ <= 99)  
-         {  
-             $this->queryLog[] = $sql;  
-         }  
-         if ($this->queryTime == ‘‘)  
-         {  
-             if (PHP_VERSION >= ‘5.0.0‘)  
-             {  
-                 $this->queryTime = microtime(true);  
-             }  
-             else  
-             {  
-                 $this->queryTime = microtime();  
-             }  
-         }  
-      
-         
-         if (PHP_VERSION >= ‘4.3‘ && time() > $this->starttime + 1)  
-         {  
-             mysql_ping($this->link_id);  
-         }  
-      
-         if (!($query = mysql_query($sql, $this->link_id)) && $type != ‘SILENT‘)  
-         {  
-             $this->error_message[][‘message‘] = ‘MySQL Query Error‘;  
-             $this->error_message[][‘sql‘] = $sql;  
-             $this->error_message[][‘error‘] = mysql_error($this->link_id);  
-             $this->error_message[][‘errno‘] = mysql_errno($this->link_id);  
-      
-             $this->ErrorMsg();  
-      
-             return false;  
-         }  
-      
-         if (defined(‘DEBUG_MODE‘) && (DEBUG_MODE & 8) == 8)  
-         {  
-             $logfilename = $this->root_path . DATA_DIR . ‘/mysql_query_‘ . $this->dbhash . ‘_‘ . date(‘Y_m_d‘) . ‘.log‘;  
-             $str = $sql . "\n\n";  
-      
-             if (PHP_VERSION >= ‘5.0‘)  
-             {  
-                 file_put_contents($logfilename, $str, FILE_APPEND);  
-             }  
-             else  
-             {  
-                 $fp = @fopen($logfilename, ‘ab+‘);  
-                 if ($fp)  
-                 {  
-                     fwrite($fp, $str);  
-                     fclose($fp);  
-                 }  
-             }  
-         }  
-         
-         return $query;  
-     }  
-      
-     function affected_rows()  
-     {  
-         return mysql_affected_rows($this->link_id);  
-     }  
-      
-     function error()  
-     {  
-         return mysql_error($this->link_id);  
-     }  
-      
-     function errno()  
-     {  
-         return mysql_errno($this->link_id);  
-     }  
-      
-     function result($query, $row)  
-     {  
-         return @mysql_result($query, $row);  
-     }  
-      
-     function num_rows($query)  
-     {  
-         return mysql_num_rows($query);  
-     }  
-      
-     function num_fields($query)  
-     {  
-         return mysql_num_fields($query);  
-     }  
-      
-     function free_result($query)  
-     {  
-         return mysql_free_result($query);  
-     }  
-      
-     function insert_id()  
-     {  
-         return mysql_insert_id($this->link_id);  
-     }  
-      
-     function fetchRow($query)  
-     {  
-         return mysql_fetch_assoc($query);  
-     }  
-      
-     function fetch_fields($query)  
-     {  
-         return mysql_fetch_field($query);  
-     }  
-      
-     function version()  
-     {  
-         return $this->version;  
-     }  
-      
-     function ping()  
-     {  
-         if (PHP_VERSION >= ‘4.3‘)  
-         {  
-             return mysql_ping($this->link_id);  
-         }  
-         else  
-         {  
-             return false;  
-         }  
-     }  
-      
-     function escape_string($unescaped_string)  
-     {  
-         if (PHP_VERSION >= ‘4.3‘)  
-         {  
-             return mysql_real_escape_string($unescaped_string);  
-         }  
-         else  
-         {  
-             return mysql_escape_string($unescaped_string);  
-         }  
-     }  
-      
-     function close()  
-     {  
-         return mysql_close($this->link_id);  
-     }  
-      
-     function ErrorMsg($message = ‘‘, $sql = ‘‘)  
-     {  
-         if ($message)  
-         {  
-             ajax_return(array(‘recode‘=>"0009",‘msg‘=>"MySQL server error info:".$message,‘data‘=>‘‘));  
-         }  
-         else  
-         {  
-             ajax_return(array(‘recode‘=>"0010",‘msg‘=>"MySQL server error report:".$this->error_message,‘data‘=>‘‘));  
-         }  
-      }  
-      
-     
-     function selectLimit($sql, $num, $start = 0)  
-     {  
-     if ($start == 0)  
-     {  
-         $sql .= ‘ LIMIT ‘ . $num;  
-         }  
-         else  
-         {  
-         $sql .= ‘ LIMIT ‘ . $start . ‘, ‘ . $num;  
-     }  
-      
-     return $this->query($sql);  
-     }  
-      
-     function getOne($sql, $limited = false)  
-     {  
-     if ($limited == true)  
-     {  
-     $sql = trim($sql . ‘ LIMIT 1‘);  
-     }  
-      
-     $res = $this->query($sql);  
-     if ($res !== false)  
-     {  
-     $row = mysql_fetch_row($res);  
-      
-     if ($row !== false)  
-     {  
-         return $row[0];  
-         }  
-         else  
-         {  
-             return ‘‘;  
-     }  
-     }  
-     else  
-     {  
-     return false;  
-     }  
-     }  
-      
-     function getOneCached($sql, $cached = ‘FILEFIRST‘)  
-     {  
-      
-      
-     $cachefirst = ($cached == ‘FILEFIRST‘ || ($cached == ‘MYSQLFIRST‘ && $this->platform != ‘WINDOWS‘)) && $this->max_cache_time;  
-      
-     if (!$cachefirst)  
-     {  
-     return $this->getOne($sql, true);  
-     }  
-     else  
-     {  
-     $result = $this->getSqlCacheData($sql, $cached);  
-     if (empty($result[‘storecache‘]) == true)  
-     {  
-     return $result[‘data‘];  
-             }  
-             }  
-      
-             $arr = $this->getOne($sql, true);  
-      
-             if ($arr !== false && $cachefirst)  
-             {  
-             $this->setSqlCacheData($result, $arr);  
-             }  
-      
-             return $arr;  
-             }  
-      
-             function getAll($sql)  
-             {  
-             $res = $this->query($sql);  
-             if ($res !== false)  
-             {  
-                 $arr = array();  
-                 while ($row = mysql_fetch_assoc($res))  
-                 {  
-                     $arr[] = $row;  
-                 }  
-      
-                 return $arr;  
-                 }  
-                 else  
-                 {  
-                 return false;  
-                 }  
-                 }  
-      
-                 function getAllCached($sql, $cached = ‘FILEFIRST‘)  
-                 {  
-                 $cachefirst = ($cached == ‘FILEFIRST‘ || ($cached == ‘MYSQLFIRST‘ && $this->platform != ‘WINDOWS‘)) && $this->max_cache_time;  
-                 if (!$cachefirst)  
-                 {  
-                 return $this->getAll($sql);  
-                 }  
-                 else  
-                 {  
-                 $result = $this->getSqlCacheData($sql, $cached);  
-                 if (empty($result[‘storecache‘]) == true)  
-                 {  
-                 return $result[‘data‘];  
-                 }  
-                 }  
-      
-                 $arr = $this->getAll($sql);  
-      
-                 if ($arr !== false && $cachefirst)  
-                 {  
-                     $this->setSqlCacheData($result, $arr);  
-                     }  
-      
-                     return $arr;  
-                     }  
-      
-                     function getRow($sql, $limited = false)  
-                     {  
-                             if ($limited == true)  
-                             {  
-                             $sql = trim($sql . ‘ LIMIT 1‘);  
-                             }  
-      
-                                     $res = $this->query($sql);  
-                                     if ($res !== false)  
-                                     {  
-                                     return mysql_fetch_assoc($res);  
-                                     }  
-                                     else  
-                                     {  
-                                     return false;  
-                                     }  
-                                     }  
-      
-                                     function getRowCached($sql, $cached = ‘FILEFIRST‘)  
-                                     {  
-      
-      
-                                     $cachefirst = ($cached == ‘FILEFIRST‘ || ($cached == ‘MYSQLFIRST‘ && $this->platform != ‘WINDOWS‘)) && $this->max_cache_time;  
-                                     if (!$cachefirst)  
-                                     {  
-                                     return $this->getRow($sql, true);  
-                                     }  
-                                     else  
-                                     {  
-                                     $result = $this->getSqlCacheData($sql, $cached);  
-                                     if (empty($result[‘storecache‘]) == true)  
-                                     {  
-                                     return $result[‘data‘];  
-                                     }  
-                                     }  
-      
-                                     $arr = $this->getRow($sql, true);  
-      
-                                     if ($arr !== false && $cachefirst)  
-                                     {  
-                                     $this->setSqlCacheData($result, $arr);  
-                                     }  
-      
-                                     return $arr;  
-                                     }  
-      
-                                     function getCol($sql)  
-                                     {  
-                                     $res = $this->query($sql);  
-                                     if ($res !== false)  
-                                     {  
-                                     $arr = array();  
-                                     while ($row = mysql_fetch_row($res))  
-                                     {  
-                                     $arr[] = $row[0];  
-                                     }  
-      
-                                     return $arr;  
-                                     }  
-                                     else  
-                                         {  
-                                         return false;  
-                                     }  
-                                     }  
-      
-                                     function getColCached($sql, $cached = ‘FILEFIRST‘)  
-                                     {  
-                                     $cachefirst = ($cached == ‘FILEFIRST‘ || ($cached == ‘MYSQLFIRST‘ && $this->platform != ‘WINDOWS‘)) && $this->max_cache_time;  
-                                     if (!$cachefirst)  
-                                     {  
-                                         return $this->getCol($sql);  
-                                     }  
-                                     else  
-                                     {  
-                                         $result = $this->getSqlCacheData($sql, $cached);  
-                                         if (empty($result[‘storecache‘]) == true)  
-                 {  
-                 return $result[‘data‘];  
-                 }  
-                 }  
-      
-                 $arr = $this->getCol($sql);  
-      
-                 if ($arr !== false && $cachefirst)  
-                 {  
-                     $this->setSqlCacheData($result, $arr);  
-                 }  
-      
-                 return $arr;  
-                 }  
-      
-                 function autoExecute($table, $field_values, $mode = ‘INSERT‘, $where = ‘‘, $querymode = ‘‘)  
-                 {  
-                 $field_names = $this->getCol(‘DESC ‘ . $table);  
-      
-                         $sql = ‘‘;  
-                         if ($mode == ‘INSERT‘)  
-                         {  
-                         $fields = $values = array();  
-                         foreach ($field_names AS $value)  
-                         {  
-                         if (@array_key_exists($value, $field_values) == true)  
-                         {  
-                         $fields[] = $value;  
-                         $field_values[$value] = stripslashes($field_values[$value]);  
-                         $values[] = "‘" . addslashes($field_values[$value]) . "‘";  
-                         }  
-                         }  
-      
-                         if (!empty($fields))  
-                         {  
-                             $sql = ‘INSERT INTO ‘ . $table . ‘ (‘ . implode(‘, ‘, $fields) . ‘) VALUES (‘ . implode(‘, ‘, $values) . ‘)‘;  
-                             }  
-                         }  
-                         else  
-                         {  
-                         $sets = array();  
-                         foreach ($field_names AS $value)  
-                         {  
-                         if (array_key_exists($value, $field_values) == true)  
-                         {  
-                         $field_values[$value] = stripslashes($field_values[$value]);  
-                         $sets[] = $value . " = ‘" . addslashes($field_values[$value]) . "‘";  
-                         }  
-                         }  
-      
-                         if (!empty($sets))  
-                             {  
-                             $sql = ‘UPDATE ‘ . $table . ‘ SET ‘ . implode(‘, ‘, $sets) . ‘ WHERE ‘ . $where;  
-                             }  
-                             }  
-      
-                             if ($sql)  
-                             {  
-                                 return $this->query($sql, $querymode);  
-                         }  
-                         else  
-                         {  
-                         return false;  
-                         }  
-                         }  
-      
-                         function autoReplace($table, $field_values, $update_values, $where = ‘‘, $querymode = ‘‘)  
-                         {  
-                                 $field_descs = $this->getAll(‘DESC ‘ . $table);  
-      
-                                         $primary_keys = array();  
-                                 foreach ($field_descs AS $value)  
-                                 {  
-                                 $field_names[] = $value[‘Field‘];  
-                                     if ($value[‘Key‘] == ‘PRI‘)  
-                                         {  
-                                         $primary_keys[] = $value[‘Field‘];  
-                                 }  
-                                 }  
-      
-                                 $fields = $values = array();  
-                                 foreach ($field_names AS $value)  
-                                 {  
-                                 if (array_key_exists($value, $field_values) == true)  
-                                 {  
-                                     $fields[] = $value;  
-                                     $values[] = "‘" . $field_values[$value] . "‘";  
-                                 }  
-                                     }  
-      
-                                     $sets = array();  
-                                     foreach ($update_values AS $key => $value)  
-                                         {  
-                                             if (array_key_exists($key, $field_values) == true)  
-                                             {  
-                                             if (is_int($value) || is_float($value))  
-                 {  
-                 $sets[] = $key . ‘ = ‘ . $key . ‘ + ‘ . $value;  
-                 }  
-                 else  
-                 {  
-                 $sets[] = $key . " = ‘" . $value . "‘";  
-     }  
-     }  
-     }  
-      
-     $sql = ‘‘;  
-     if (empty($primary_keys))  
-     {  
-     if (!empty($fields))  
-     {  
-     $sql = ‘INSERT INTO ‘ . $table . ‘ (‘ . implode(‘, ‘, $fields) . ‘) VALUES (‘ . implode(‘, ‘, $values) . ‘)‘;  
-     }  
-     }  
-     else  
-     {  
-     if ($this->version() >= ‘4.1‘)  
-     {  
-     if (!empty($fields))  
-     {  
-         $sql = ‘INSERT INTO ‘ . $table . ‘ (‘ . implode(‘, ‘, $fields) . ‘) VALUES (‘ . implode(‘, ‘, $values) . ‘)‘;  
-         if (!empty($sets))  
-                 {  
-                 $sql .=  ‘ON DUPLICATE KEY UPDATE ‘ . implode(‘, ‘, $sets);  
-         }  
-         }  
-         }  
-         else  
-         {  
-             if (empty($where))  
-             {  
-                 $where = array();  
-                 foreach ($primary_keys AS $value)  
-                 {  
-                 if (is_numeric($value))  
-                 {  
-                         $where[] = $value . ‘ = ‘ . $field_values[$value];  
-                 }  
-                 else  
-                 {  
-                 $where[] = $value . " = ‘" . $field_values[$value] . "‘";  
-                 }  
-                 }  
-                 $where = implode(‘ AND ‘, $where);  
-     }  
-      
-                 if ($where && (!empty($sets) || !empty($fields)))  
-                 {  
-                 if (intval($this->getOne("SELECT COUNT(*) FROM $table WHERE $where")) > 0)  
-                 {  
-                 if (!empty($sets))  
-                 {  
-                 $sql = ‘UPDATE ‘ . $table . ‘ SET ‘ . implode(‘, ‘, $sets) . ‘ WHERE ‘ . $where;  
-                 }  
-                 }  
-                 else  
-                 {  
-                 if (!empty($fields))  
-                 {  
-                     $sql = ‘REPLACE INTO ‘ . $table . ‘ (‘ . implode(‘, ‘, $fields) . ‘) VALUES (‘ . implode(‘, ‘, $values) . ‘)‘;  
-                 }  
-                 }  
-                 }  
-                 }  
-                 }  
-      
-                 if ($sql)  
-                 {  
-                 return $this->query($sql, $querymode);  
-                 }  
-                 else  
-                 {  
-                     return false;  
-                 }  
-                 }  
-      
-                 function setMaxCacheTime($second)  
-                 {  
-                 $this->max_cache_time = $second;  
-                 }  
-      
-                 function getMaxCacheTime()  
-                 {  
-                     return $this->max_cache_time;  
-                     }  
-      
-                     function getSqlCacheData($sql, $cached = ‘‘)  
-                     {  
-                     $sql = trim($sql);  
-      
-                     $result = array();  
-                     $result[‘filename‘] = $this->root_path . $this->cache_data_dir . ‘sqlcache_‘ . abs(crc32($this->dbhash . $sql)) . ‘_‘ . md5($this->dbhash . $sql) . ‘.php‘;  
-      
-                     $result[‘data‘] = $GLOBALS[‘cache‘]->get($result[‘filename‘]);  
-                     if($result[‘data‘]===false)  
-                     {  
-                     $result[‘storecache‘] = true;  
-                     }  
-                     else  
-                     {  
-                     $result[‘storecache‘] = false;  
-                     }  
-                     return $result;  
-                     }  
-      
-                     function setSqlCacheData($result, $data)  
-                     {  
-                             if ($result[‘storecache‘] === true && $result[‘filename‘])  
-                             {  
-                             $GLOBALS[‘cache‘]->set($result[‘filename‘],$data,$this->max_cache_time);  
-                     }  
-                     }  
-      
-                     
-                     function table_lastupdate($tables)  
-                     {  
-                     if ($this->link_id === NULL)  
-                     {  
-                         $this->connect($this->settings[‘dbhost‘], $this->settings[‘dbuser‘], $this->settings[‘dbpw‘], $this->settings[‘dbname‘], $this->settings[‘charset‘], $this->settings[‘pconnect‘]);  
-                         $this->settings = array();  
-                     }  
-      
-                     $lastupdatetime = ‘0000-00-00 00:00:00‘;  
-      
-                     $tables = str_replace(‘`‘, ‘‘, $tables);  
-                     $this->mysql_disable_cache_tables = str_replace(‘`‘, ‘‘, $this->mysql_disable_cache_tables);  
-      
-                     foreach ($tables AS $table)  
-                             {  
-                                 if (in_array($table, $this->mysql_disable_cache_tables) == true)  
-                                 {  
-                                 $lastupdatetime = ‘2037-12-31 23:59:59‘;  
-      
-                                 break;  
-                             }  
-      
-                             if (strstr($table, ‘.‘) != NULL)  
-                             {  
-    $tmp = explode(‘.‘, $table);  
-    $sql = ‘SHOW TABLE STATUS FROM `‘ . trim($tmp[0]) . "` LIKE ‘" . trim($tmp[1]) . "‘";  
-    }  
-    else  
-    {  
-    $sql = "SHOW TABLE STATUS LIKE ‘" . trim($table) . "‘";  
-    }  
-    $result = mysql_query($sql, $this->link_id);  
-      
-    $row = mysql_fetch_assoc($result);  
-    if ($row[‘Update_time‘] > $lastupdatetime)  
-    {  
-    $lastupdatetime = $row[‘Update_time‘];  
-    }  
-    }  
-    $lastupdatetime = strtotime($lastupdatetime) - $this->timezone + $this->timeline;  
-      
-    return $lastupdatetime;  
-    }  
-      
-    function get_table_name($query_item)  
-    {  
-    $query_item = trim($query_item);  
-    $table_names = array();  
-      
-    
-    if (stristr($query_item, ‘ JOIN ‘) == ‘‘)  
-    {  
-    
-    if (preg_match(‘/^SELECT.*?FROM\s*((?:`?\w+`?\s*\.\s*)?`?\w+`?(?:(?:\s*AS)?\s*`?\w+`?)?(?:\s*,\s*(?:`?\w+`?\s*\.\s*)?`?\w+`?(?:(?:\s*AS)?\s*`?\w+`?)?)*)/is‘, $query_item, $table_names))  
-    {  
-    $table_names = preg_replace(‘/((?:`?\w+`?\s*\.\s*)?`?\w+`?)[^,]*/‘, ‘\1‘, $table_names[1]);  
-      
-    return preg_split(‘/\s*,\s*/‘, $table_names);  
-    }  
-    }  
-    else  
-    {  
-    
-    if (preg_match(‘/^SELECT.*?FROM\s*((?:`?\w+`?\s*\.\s*)?`?\w+`?)(?:(?:\s*AS)?\s*`?\w+`?)?.*?JOIN.*$/is‘, $query_item, $table_names))  
-    {  
-    $other_table_names = array();  
-    preg_match_all(‘/JOIN\s*((?:`?\w+`?\s*\.\s*)?`?\w+`?)\s*/i‘, $query_item, $other_table_names);  
-      
-    return array_merge(array($table_names[1]), $other_table_names[1]);  
-    }  
-    }  
-      
-    return $table_names;  
-    }  
-      
-    
-    function set_disable_cache_tables($tables)  
-    {  
-    if (!is_array($tables))  
-    {  
-    $tables = explode(‘,‘, $tables);  
-    }  
-      
-    foreach ($tables AS $table)  
-    {  
-    $this->mysql_disable_cache_tables[] = $table;  
-    }  
-      
-    array_unique($this->mysql_disable_cache_tables);  
-    }  
-    }  
-   
- ?>  
 
 
 
至此框架搭建完成,下面来写一个简单的例子
三.介绍简单的实例
controller控制层文件./app/controllers/user.php用户类
 
- <?php  
- header(‘Content-Type: text/html; charset=utf-8‘);  
- @require_once ‘./core/config/conn.php‘;  
- class user  
- {  
-     function __construct()  
-     {  
-         $action=@trim(@$_REQUEST[‘act‘]);  
-         if(empty($action)){  
-             $action="index";  
-         }else{  
-             if(!in_array($action,array(‘index‘,‘login‘,‘register‘,‘<span style="font-family:verdana,‘ms song‘,宋体,Arial,微软雅黑,Helvetica,sans-serif">userUpdatePwd</span><span style="font-family:verdana,‘ms song‘,宋体,Arial,微软雅黑,Helvetica,sans-serif">‘))){</span>  
-                 ajax_return(array(‘recode‘=>"0003",‘msg‘=>"非法操作",‘data‘=>$action));  
-             }  
-         }  
-           
-     }  
-       
-     
-     public function index()  
-     {  
-         ajax_return(array(‘recode‘=>"0003",‘msg‘=>"非法操作",‘data‘=>@$_REQUEST[‘act‘]));  
-     }  
-       
-     
-     public function login()  
-     {  
-         $data=json_decode(@$_REQUEST[‘req‘]);  
-         $user_name_or_email = trim(new_htmlspecialchars(new_addslashes(@$data->user_name)));  
-         $user_pwd = trim(new_htmlspecialchars(new_addslashes(@$data->user_pwd)));  
-         $log[‘l_ip‘] = trim(new_htmlspecialchars(new_addslashes(@$data->l_ip)));  
-         $log[‘city_name‘] = trim(new_htmlspecialchars(new_addslashes(@$data->city_name)));  
-         $log[‘l_xpoint‘] = trim(new_htmlspecialchars(new_addslashes(@$data->l_xpoint)));  
-         $log[‘l_ypoint‘] = trim(new_htmlspecialchars(new_addslashes(@$data->l_ypoint)));  
-         $log[‘l_type‘] = intval(@$data->l_type);
-         $log[‘l_version‘] = trim(new_htmlspecialchars(new_addslashes(@$data->l_version)));  
-           
-         if(empty($user_name_or_email)|| empty($user_pwd))  
-         {  
-             $r=array(‘recode‘=>"0002",‘msg‘=>"参数错误",‘data‘=>‘‘);  
-         }  
-         else  
-         {  
-             $user_data = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user where (user_name=‘".$user_name_or_email."‘ or email = ‘".$user_name_or_email."‘) and is_delete = 0");  
-             if(!$user_data)  
-             {  
-                 $r=array(‘recode‘=>"1014",‘msg‘=>"该用户不存在,请确认操作.",‘data‘=>‘‘);  
-             }  
-             else  
-             {  
-                 if($user_data[‘user_pwd‘] != md5($user_pwd.$user_data[‘code‘])&&$user_data[‘user_pwd‘]!=$user_pwd)  
-                 {  
-                     $r=array(‘recode‘=>"0012",‘msg‘=>"用户密码不对,请确认您的登陆信息.",‘data‘=>‘‘);  
-                 }  
-                 elseif($user_data[‘is_effect‘] != 1)  
-                 {  
-                     $r=array(‘recode‘=>"0011",‘msg‘=>"账号未被激活,暂时不能进行如下操作.",‘data‘=>‘‘);  
-                 }  
-                 elseif($user_data[‘is_locking‘] != 0)  
-                 {  
-                     $r=array(‘recode‘=>"0014",‘msg‘=>"账号已经被锁定,暂时不能进行如下操作.",‘data‘=>‘‘);  
-                     if(app_conf("SHOP_TEL")!=‘‘)  
-                         $r[‘msg‘].="若有疑问,请致电联系客服: <".app_conf("SHOP_TEL").">";  
-                 }  
-                 else  
-                 {  
-                     
-                     $user_current_group = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user_group where id = ".intval($user_data[‘group_id‘]));  
-                     $user_group = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user_group where score <=".intval($user_data[‘score‘])." order by score desc");  
-                     if($user_current_group[‘score‘]<$user_group[‘score‘])  
-                     {  
-                         $user_data[‘group_id‘] = intval($user_group[‘id‘]);  
-                         $GLOBALS[‘db‘]->query("update ".DB_PREFIX."user set group_id = ".$user_data[‘group_id‘]." where id = ".$user_data[‘id‘]);  
-                         $pm_title = "您已经成为".$user_group[‘name‘]."";  
-                         $pm_content = "恭喜您,您已经成为".$user_group[‘name‘]."。";  
-                         if($user_group[‘discount‘]<1)  
-                         {  
-                             $pm_content.="您将享有".($user_group[‘discount‘]*10)."折的购物优惠";  
-                         }  
-                         send_user_msg($pm_title,$pm_content,0,$user_data[‘id‘],get_gmtime(),0,true,true);  
-                     }  
-                     
-                     $user_current_level = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user_level where id = ".intval($user_data[‘level_id‘]));  
-                     $user_level = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user_level where point <=".intval($user_data[‘point‘])." order by point desc");  
-                     if($user_current_level[‘point‘]<$user_level[‘point‘])  
-                     {  
-                         $user_data[‘level_id‘] = intval($user_level[‘id‘]);  
-                         $GLOBALS[‘db‘]->query("update ".DB_PREFIX."user set level_id = ".$user_data[‘level_id‘]." where id = ".$user_data[‘id‘]);  
-                         $pm_title = "您已经成为".$user_level[‘name‘]."";  
-                         $pm_content = "恭喜您,您已经成为".$user_level[‘name‘]."。";  
-                         send_user_msg($pm_title,$pm_content,0,$user_data[‘id‘],get_gmtime(),0,true,true);  
-                     }  
-                       
-                     if($user_current_level[‘point‘]>$user_level[‘point‘])  
-                     {  
-                         $user_data[‘level_id‘] = intval($user_level[‘id‘]);  
-                         $GLOBALS[‘db‘]->query("update ".DB_PREFIX."user set level_id = ".$user_data[‘level_id‘]." where id = ".$user_data[‘id‘]);  
-                         $pm_title = "您已经降为".$user_level[‘name‘]."";  
-                         $pm_content = "很报歉,您已经降为".$user_level[‘name‘]."。";  
-                         send_user_msg($pm_title,$pm_content,0,$user_data[‘id‘],get_gmtime(),0,true,true);  
-                     }  
-                     $log[‘l_time‘]=get_gmtime();  
-                     $log[‘user_id‘]=$user_data[‘id‘];  
-                     
-                     $GLOBALS[‘db‘]->query("update ".DB_PREFIX."user set login_ip = ‘".$log[‘l_ip‘]."‘,login_time= ".$log[‘l_time‘].",group_id=".intval($user_data[‘group_id‘])." where id =".$user_data[‘id‘]);  
-                       
-                     
-                     $GLOBALS[‘db‘]->autoExecute("im_user_login_log",$log);  
-                       
-                     
-                     $log[‘l_type‘] = intval(@$data->l_type);
-                     switch ($log[‘l_type‘])
-                     {  
-                         case "1":  
-                             $package=$GLOBALS[‘db‘]->getRow("select p_version,p_url,is_must from im_m_package where is_effect=1 and p_type=0");  
-                             break;  
-                         case "2":  
-                             $package=$GLOBALS[‘db‘]->getRow("select p_version,p_url,is_must from im_m_package where is_effect=1 and p_type=1");  
-                             break;  
-                         default:  
-                             break;  
-                     }  
-                     if (@$package && strnatcmp($log[‘l_version‘],$package[‘p_version‘])<0)  
-                     {  
-                         $varreg="/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";  
-                         if(!preg_match($varreg,$package[‘p_url‘]))
-                         {  
-                             $package[‘p_url‘]=URL_PATH.str_replace("./","",$package[‘p_url‘]);  
-                         }  
-   
-                         $r=array(‘recode‘=>"0015",‘msg‘=>"用户登陆成功.",‘data‘=>array(‘user_id‘=>$user_data[‘id‘],‘user_name‘=>$user_data[‘user_name‘],‘true_name‘=>$user_data[‘true_name‘],‘email‘=>is_null($user_data[‘email‘])?"":$user_data[‘email‘],‘mobile‘=>is_null($user_data[‘mobile‘])?"":$user_data[‘mobile‘],‘l_time‘=>to_date($log[‘l_time‘]),‘p_version‘=>$package[‘p_version‘],‘p_url‘=>$package[‘p_url‘],‘is_must‘=>$package[‘is_must‘]));  
-                       
-                     }  
-                     else  
-                     {  
-                         $r=array(‘recode‘=>"0015",‘msg‘=>"用户登陆成功.",‘data‘=>array(‘user_id‘=>$user_data[‘id‘],‘user_name‘=>$user_data[‘user_name‘],‘true_name‘=>$user_data[‘true_name‘],‘email‘=>is_null($user_data[‘email‘])?"":$user_data[‘email‘],‘mobile‘=>is_null($user_data[‘mobile‘])?"":$user_data[‘mobile‘],‘l_time‘=>to_date($log[‘l_time‘]),‘p_version‘=>$log[‘l_version‘],‘p_url‘=>"",‘is_must‘=>""));  
-                     }  
-                 }  
-             }  
-         }  
-         ajax_return($r);  
-     }  
-       
-     
-     public function register()  
-     {  
-         
-         $data=json_decode(@$_REQUEST[‘req‘]);  
-         $type = intval(@$data->type);
-   
-         $user_data[‘user_name‘] = strtolower(trim(new_htmlspecialchars(new_addslashes(@$data->user_name))));  
-         $user_data["user_pwd"] = trim(new_htmlspecialchars(new_addslashes(@$data->user_pwd)));  
-         $user_data["email"] = trim(new_htmlspecialchars(new_addslashes(@$data->email)));  
-         $user_data["mobile"] = trim(new_htmlspecialchars(new_addslashes(@$data->mobile)));  
-         $user_data["xpoint"] = doubleval(@$data->xpoint);  
-         $user_data["ypoint"] = doubleval(@$data->ypoint);  
-         $city_name = trim(new_htmlspecialchars(new_addslashes(@$data->city_name)));  
-         $user_data["login_ip"] = trim(new_htmlspecialchars(new_addslashes(@$data->ip)));  
-         $l_type = intval(@$data->l_type);
-         $l_version = trim(new_htmlspecialchars(new_addslashes(@$data->l_version)));  
-   
-         if($user_data[‘user_name‘]==‘‘|| !preg_match("/^[a-z\d]{3,20}$/i", $user_data[‘user_name‘]))  
-         {  
-             ajax_return(array(‘recode‘=>"1001",‘msg‘=>"用户名不能为空,且为3-20个由字母和数字组成的字符串.".$data->user_name,‘data‘=>""));  
-         }  
-         else  
-         {  
-             if($GLOBALS[‘db‘]->getOne("select count(*) from ".DB_PREFIX."user where user_name = ‘".trim($user_data[‘user_name‘])."‘")>0)  
-             {  
-                 ajax_return(array(‘recode‘=>"1006",‘msg‘=>"该用户名已经存在,请重新填写",‘data‘=>‘‘));  
-             }  
-             else   
-             {  
-                 $msg=get_pwd_strength($user_data[‘user_pwd‘]);  
-                 if(!empty($msg))  
-                 {  
-                     ajax_return(array(‘recode‘=>"1003",‘msg‘=>$msg,‘data‘=>‘‘));  
-                       
-                 }  
-                 else  
-                 {  
-                     if($type==0)  
-                     {  
-                         if(!check_email($user_data[‘email‘]))  
-                         {  
-                             ajax_return(array(‘recode‘=>"1003",‘msg‘=>"邮箱格式不正确.",‘data‘=>‘‘));  
-                         }  
-                         else  
-                         {  
-                             if($GLOBALS[‘db‘]->getOne("select count(*) from ".DB_PREFIX."user where email = ‘".trim($user_data[‘email‘])."‘")>0)  
-                             {  
-                                 ajax_return(array(‘recode‘=>"1004",‘msg‘=>"该邮箱已经被注册过,请填写其他邮箱.",‘data‘=>‘‘));  
-                             }  
-                         }  
-                     }  
-                     else  
-                     {  
-                         if(!check_mobile($user_data[‘mobile‘]))  
-                         {  
-                             ajax_return(array(‘recode‘=>"1005",‘msg‘=>"手机号码格式错误,手机号码为11位.",‘data‘=>‘‘));  
-                         }  
-                         else  
-                         {  
-                             $verify_code = trim(new_htmlspecialchars(new_addslashes(@$data->verify_code)));  
-                             $msg_id = intval(@$data->msg_id);  
-                             if ($msg_id<=0 || empty($verify_code))  
-                             {  
-                                 ajax_return(array(‘recode‘=>"0002",‘msg‘=>"参数错误",‘data‘=>‘‘));  
-                             }  
-                             $verify_result=use_sms_code(0,0,$msg_id,0,$user_data["mobile"],$verify_code);  
-                             if($verify_result[‘status‘]==0)  
-                             {  
-                                 ajax_return(array(‘recode‘=>$verify_result[‘recode‘],‘msg‘=>$verify_result[‘msg‘],‘data‘=>‘‘));  
-                             }  
-                         }  
-                     }  
-                         
-                         $user_data[‘create_time‘] = get_gmtime();  
-                         $user_data[‘update_time‘] = get_gmtime();  
-                           
-                         
-                         $user_data[‘group_id‘] = $GLOBALS[‘db‘]->getOne("select id from ".DB_PREFIX."user_group order by score asc limit 1");  
-                         
-                         $city = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."region_conf where name=‘".$city_name."‘");  
-                         if ($city)  
-                         {  
-                             switch ($city[‘region_level‘]) {
-                                 case "2":  
-                                     $user_data[‘province_id‘]=$city[‘id‘];  
-                                     break;  
-                                 case "3":  
-                                     $user_data[‘city_id‘]=$city[‘id‘];  
-                                     $user_data[‘province_id‘] = $city[‘pid‘];  
-                                     break;  
-                                 default:  
-                                     break;  
-                             }  
-                         }  
-                         
-                         $user_data[‘is_effect‘]=1;
-                         $user_data[‘code‘] = ‘‘; 
-                         $user_data[‘user_pwd‘] = md5($user_data[‘user_pwd‘].$user_data[‘code‘]);  
-                         $user_data[‘register_type‘] = 1;
-                           
-                         if($GLOBALS[‘db‘]->autoExecute(DB_PREFIX."user",$user_data,"INSERT"))  
-                         {  
-                             $user_id = $GLOBALS[‘db‘]->insert_id();  
-                             $register_money = app_conf(‘USER_REGISTER_MONEY‘);  
-                             $register_score = app_conf(‘USER_REGISTER_SCORE‘);  
-                             $register_point = app_conf(‘USER_REGISTER_POINT‘);  
-                               
-                             if($register_money>0||$register_score>0)  
-                             {  
-                                 $user_get[‘score‘] = $register_score;  
-                                 $user_get[‘money‘] = $register_money;  
-                                 $user_get[‘point‘] = $register_point;  
-                                 @require_once ‘./app/modules/userModule.php‘;  
-                                 modify_account($user_get,intval($user_id),"在".to_date(get_gmtime())."注册成功");  
-                             }  
-                               
-                             
-                             $GLOBALS[‘db‘]->autoExecute("im_user_login_log",array(‘user_id‘=>$user_id,‘l_type‘=>1,‘l_ip‘=>$user_data[‘login_ip‘],‘l_time‘=>get_gmtime(),"city_name"=>$city_name,"l_xpoint"=>$user_data[‘xpoint‘],"l_ypoint"=>$user_data[‘ypoint‘],"l_type"=>$l_type,"l_version"=>$l_version));  
-                               
-                             ajax_return(array(‘recode‘=>"1009",‘msg‘=>"用户注册成功",‘data‘=>array(‘user_id‘=>$user_id,"user_name"=>$user_data[‘user_name‘],"email"=>is_null($user_data[‘email‘])?"":$user_data[‘email‘],"mobile"=>is_null($user_data[‘mobile‘])?"":$user_data[‘mobile‘],"create_time"=>to_date($user_data[‘create_time‘]))));  
-                         }  
-                         else  
-                         {  
-                             ajax_return(array(‘recode‘=>"1008",‘msg‘=>"用户注册失败",‘data‘=>‘‘));  
-                         }  
-                 }  
-             }  
-         }  
-     }  
-       
-     
-     function userUpdatePwd()  
-     {  
-         
-         
-         
-         
-         
-         
-         $data=json_decode(@$_REQUEST[‘req‘]);  
-         $user_id = intval(@$data->user_id);  
-         $user_pwd = trim(new_htmlspecialchars(new_addslashes(@$data->old_pwd)));  
-         $new_pwd = trim(new_htmlspecialchars(new_addslashes(@$data->new_pwd)));  
-           
-         if ($user_id<=0)  
-         {  
-             $r=array(‘recode‘=>"0002",‘msg‘=>"参数错误.",‘data‘=>‘‘);  
-         }  
-         else  
-         {  
-             $msg=get_pwd_strength($new_pwd);  
-             if(!empty($msg))  
-             {  
-                 $r=array(‘recode‘=>"1002",‘msg‘=>$msg,‘data‘=>‘‘);  
-                 ajax_return($r);  
-             }  
-             else  
-             {  
-                 $user_data = $GLOBALS[‘db‘]->getRow("select * from ".DB_PREFIX."user where id=‘".$user_id."‘");  
-                 if(!$user_data)  
-                 {  
-                     $r=array(‘recode‘=>"1014",‘msg‘=>"该用户不存在,请确认操作.",‘data‘=>‘‘);  
-                 }  
-                 else  
-                 {  
-                     if($user_data[‘user_pwd‘] != md5($user_pwd.$user_data[‘code‘])&&$user_data[‘user_pwd‘]!=$user_pwd)  
-                     {  
-                         $r=array(‘recode‘=>"0012",‘msg‘=>"用户密码不对,请确认您的登陆信息.",‘data‘=>‘‘);  
-                     }  
-                     elseif($user_data[‘is_effect‘] != 1)  
-                     {  
-                         $r=array(‘recode‘=>"0011",‘msg‘=>"账号未被激活,暂时不能进行如下操作.",‘data‘=>‘‘);  
-                     }  
-                     else if ($user_data[‘is_delete‘]==1)  
-                     {  
-                         $r=array(‘recode‘=>"1012",‘msg‘=>"该用户已被删除,请重新注册.",‘data‘=>‘‘);  
-                     }  
-                     else  
-                     {  
-                         $user_data[‘user_pwd‘] = $new_pwd;  
-                         $new_pwd = md5($new_pwd.$user_data[‘code‘]);  
-                         if($GLOBALS[‘db‘]->query("update ".DB_PREFIX."user set user_pwd = ‘".$new_pwd."‘,password_verify=‘‘ where id = ".$user_data[‘id‘] ))  
-                         {  
-                             $GLOBALS[‘db‘]->query("update ".DB_PREFIX."supplier_account set account_password = ‘".$new_pwd."‘ where user_id = ".$user_data[‘id‘] );  
-                             $r=array(‘recode‘=>"0000",‘msg‘=>"操作成功.",‘data‘=>‘‘);  
-                         }  
-                         else  
-                         {  
-                             $r=array(‘recode‘=>"0001",‘msg‘=>"操作失败.",‘data‘=>‘‘);  
-                         }  
-                     }  
-                 }  
-             }  
-         }  
-         ajax_return($r);  
-     }  
-       
- }  
- ?> 
 PHP简单MVC架构
原文:http://www.cnblogs.com/jukan/p/5189473.html