destoon代码从头到尾捋一遍 - 岩_生 - 博客园

来源: destoon代码从头到尾捋一遍 – 岩_生 – 博客园

<span class="pln">destoon</span><span class="pun">®</span><span class="pln"> B2B</span><span class="pun">网站管理系统(以下简称</span><span class="pln">destoon</span><span class="pun">)由西安嘉客信息科技有限责任公司独立研发并推出,对其拥有完全知识产权,中国国家版权局计算机软件著作权登记号:</span><span class="lit">2009SR037570</span><span class="pun">。</span><span class="pln">
</span><span class="pun">系统使用当前流行的</span><span class="pln">PHP</span><span class="pun">语言开发,以</span><span class="typ">MySQL</span><span class="pun">为数据库,采用</span><span class="pln">B</span><span class="pun">/</span><span class="pln">S</span><span class="pun">架构,</span><span class="pln">MVC</span><span class="pun">模式开发。融入了模型化、模板、缓存、</span><span class="pln">AJAX</span><span class="pun">、</span><span class="pln">SEO</span><span class="pun">等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳定、安全性更强,效率更高,用户体验更好。系统开源发布,便于二次开发、功能整合、个性修改。</span><span class="pln">
</span><span class="pun">代码首先包含</span><span class="pln">common</span><span class="pun">.</span><span class="pln">inc</span><span class="pun">.</span><span class="pln">php</span><span class="pun">文件</span><span class="pln">
</span><span class="pun">在</span><span class="pln">common</span><span class="pun">.</span><span class="pln">inc</span><span class="pun">.</span><span class="pln">php</span><span class="pun">文件中,首先定义常量。</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'IN_DESTOON'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'IN_ADMIN'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">defined</span><span class="pun">(</span><span class="str">'DT_ADMIN'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_ROOT'</span><span class="pun">,</span><span class="pln"> str_replace</span><span class="pun">(</span><span class="str">"\\"</span><span class="pun">,</span><span class="pln"> </span><span class="str">'/'</span><span class="pun">,</span><span class="pln"> dirname</span><span class="pun">(</span><span class="pln">__FILE__</span><span class="pun">)));</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="kwd">defined</span><span class="pun">(</span><span class="str">'DT_REWRITE'</span><span class="pun">))</span><span class="pln"> include DT_ROOT</span><span class="pun">.</span><span class="str">'/include/rewrite.inc.php'</span><span class="pun">;</span><span class="com">//是否定义了url伪静态?</span><span class="pln">
$CFG </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="com">//网站整体配置信息</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/config.inc.php'</span><span class="pun">;</span><span class="com">//-----------------网站配置文件</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_PATH'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'url'</span><span class="pun">]);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_DOMAIN'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'cookie_domain'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> substr</span><span class="pun">(</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'cookie_domain'</span><span class="pun">],</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_WIN'</span><span class="pun">,</span><span class="pln"> strpos</span><span class="pun">(</span><span class="pln">strtoupper</span><span class="pun">(</span><span class="pln">PHP_OS</span><span class="pun">),</span><span class="pln"> </span><span class="str">'WIN'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!==</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_CHMOD'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'file_mod'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">!</span><span class="pln">DT_WIN</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'file_mod'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_URL'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'url'</span><span class="pun">]);</span><span class="com">//Fox 3.x</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_LANG'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'language'</span><span class="pun">]);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_KEY'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'authkey'</span><span class="pun">]);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_CHARSET'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'charset'</span><span class="pun">]);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_CACHE'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'cache_dir'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'cache_dir'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/file/cache'</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'DT_SKIN'</span><span class="pun">,</span><span class="pln"> DT_PATH</span><span class="pun">.</span><span class="str">'skin/'</span><span class="pun">.</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'skin'</span><span class="pun">].</span><span class="str">'/'</span><span class="pun">);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'SKIN_PATH'</span><span class="pun">,</span><span class="pln"> DT_PATH</span><span class="pun">.</span><span class="str">'skin/'</span><span class="pun">.</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'skin'</span><span class="pun">].</span><span class="str">'/'</span><span class="pun">);</span><span class="com">//For 2.x</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'VIP'</span><span class="pun">,</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'com_vip'</span><span class="pun">]);</span><span class="pln">
define</span><span class="pun">(</span><span class="str">'errmsg'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Invalid Request'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">随后加载网站基本功能</span><span class="pln">
$L </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">
include DT_ROOT</span><span class="pun">.</span><span class="str">'/lang/'</span><span class="pun">.</span><span class="pln">DT_LANG</span><span class="pun">.</span><span class="str">'/lang.inc.php'</span><span class="pun">;</span><span class="com">//语言信息</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/version.inc.php'</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/include/global.func.php'</span><span class="pun">;</span><span class="com">//--------全局函数</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/include/tag.func.php'</span><span class="pun">;</span><span class="com">//-----------标签函数</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/api/im.func.php'</span><span class="pun">;</span><span class="com">//----------------聊天工具</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/api/extend.func.php'</span><span class="pun">;</span><span class="com">//------------自己写的扩展函数</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">$MQG </span><span class="pun">&&</span><span class="pln"> $_POST</span><span class="pun">)</span><span class="pln"> $_POST </span><span class="pun">=</span><span class="pln"> daddslashes</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">$MQG </span><span class="pun">&&</span><span class="pln"> $_GET</span><span class="pun">)</span><span class="pln"> $_GET </span><span class="pun">=</span><span class="pln"> daddslashes</span><span class="pun">(</span><span class="pln">$_GET</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">function_exists</span><span class="pun">(</span><span class="str">'date_default_timezone_set'</span><span class="pun">))</span><span class="pln"> date_default_timezone_set</span><span class="pun">(</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'timezone'</span><span class="pun">]);</span><span class="pln">
$DT_PRE </span><span class="pun">=</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'tb_pre'</span><span class="pun">];</span><span class="pln">
$DT_QST </span><span class="pun">=</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'QUERY_STRING'</span><span class="pun">];</span><span class="com">//----------------querystring</span><span class="pln">
$DT_TIME </span><span class="pun">=</span><span class="pln"> time</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'timediff'</span><span class="pun">];</span><span class="com">//--------------当前时间</span><span class="pln">
$DT_IP </span><span class="pun">=</span><span class="pln"> get_env</span><span class="pun">(</span><span class="str">'ip'</span><span class="pun">);</span><span class="pln">
$DT_URL </span><span class="pun">=</span><span class="pln"> get_env</span><span class="pun">(</span><span class="str">'url'</span><span class="pun">);</span><span class="pln">
$DT_REF </span><span class="pun">=</span><span class="pln"> get_env</span><span class="pun">(</span><span class="str">'referer'</span><span class="pun">);</span><span class="pln">
$DT_BOT </span><span class="pun">=</span><span class="pln"> is_robot</span><span class="pun">();</span><span class="pln">
</span><span class="pun">链接数据库,建立缓存。</span><span class="pln">
header</span><span class="pun">(</span><span class="str">"Content-Type:text/html;charset="</span><span class="pun">.</span><span class="pln">DT_CHARSET</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/include/db_'</span><span class="pun">.</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'database'</span><span class="pun">].</span><span class="str">'.class.php'</span><span class="pun">;</span><span class="com">//加载数据库类</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/include/cache_'</span><span class="pun">.</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'cache'</span><span class="pun">].</span><span class="str">'.class.php'</span><span class="pun">;</span><span class="com">//加载缓存类</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">)</span><span class="pln"> extract</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">,</span><span class="pln"> EXTR_SKIP</span><span class="pun">);</span><span class="com">//解析post请求的数据</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_GET</span><span class="pun">)</span><span class="pln"> extract</span><span class="pun">(</span><span class="pln">$_GET</span><span class="pun">,</span><span class="pln"> EXTR_SKIP</span><span class="pun">);</span><span class="com">//解析get请求的数据</span><span class="pln">
$db_class </span><span class="pun">=</span><span class="pln"> </span><span class="str">'db_'</span><span class="pun">.</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'database'</span><span class="pun">];</span><span class="pln">
$db </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> $db_class</span><span class="pun">;</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">halt </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">DT_DEBUG </span><span class="pun">||</span><span class="pln"> IN_ADMIN</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">pre </span><span class="pun">=</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'tb_pre'</span><span class="pun">];</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">connect</span><span class="pun">(</span><span class="pln">$CFG</span><span class="pun">[</span><span class="str">'db_host'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'db_user'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'db_pass'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'db_name'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'db_expires'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'db_charset'</span><span class="pun">],</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'pconnect'</span><span class="pun">]);</span><span class="pln">
$dc </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> dcache</span><span class="pun">();</span><span class="pln">
$dc</span><span class="pun">-></span><span class="pln">pre </span><span class="pun">=</span><span class="pln"> $CFG</span><span class="pun">[</span><span class="str">'cache_pre'</span><span class="pun">];</span><span class="pln">
</span><span class="pun">加载模块的基本配置</span><span class="pln">
$DT </span><span class="pun">=</span><span class="pln"> $MOD </span><span class="pun">=</span><span class="pln"> $EXT </span><span class="pun">=</span><span class="pln"> $CSS </span><span class="pun">=</span><span class="pln"> $DTMP </span><span class="pun">=</span><span class="pln"> $CAT </span><span class="pun">=</span><span class="pln"> $ARE </span><span class="pun">=</span><span class="pln"> $AREA </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">
$CACHE </span><span class="pun">=</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'module.php'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">$CACHE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">//没有缓存模块,就读取缓存模块。</span><span class="pln">
require_once DT_ROOT</span><span class="pun">.</span><span class="str">'/admin/global.func.php'</span><span class="pun">;</span><span class="pln">
require_once DT_ROOT</span><span class="pun">.</span><span class="str">'/include/post.func.php'</span><span class="pun">;</span><span class="pln">
require_once DT_ROOT</span><span class="pun">.</span><span class="str">'/include/cache.func.php'</span><span class="pun">;</span><span class="pln">
    cache_all</span><span class="pun">();</span><span class="pln">
$CACHE </span><span class="pun">=</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'module.php'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$DT </span><span class="pun">=</span><span class="pln"> $CACHE</span><span class="pun">[</span><span class="str">'dt'</span><span class="pun">];</span><span class="pln">
$MODULE </span><span class="pun">=</span><span class="pln"> $CACHE</span><span class="pun">[</span><span class="str">'module'</span><span class="pun">];</span><span class="pln">
$EXT </span><span class="pun">=</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'module-3.php'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">加载模块,读取模块信息,引入模块文件</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$moduleid</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$moduleid </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
$module </span><span class="pun">=</span><span class="pln"> </span><span class="str">'destoon'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$moduleid </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$module </span><span class="pun">=</span><span class="pln"> </span><span class="str">'destoon'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$moduleid </span><span class="pun">=</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$moduleid</span><span class="pun">);</span><span class="pln">
isset</span><span class="pun">(</span><span class="pln">$MODULE</span><span class="pun">[</span><span class="pln">$moduleid</span><span class="pun">])</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> dheader</span><span class="pun">(</span><span class="pln">DT_PATH</span><span class="pun">);</span><span class="pln">
$module </span><span class="pun">=</span><span class="pln"> $MODULE</span><span class="pun">[</span><span class="pln">$moduleid</span><span class="pun">][</span><span class="str">'module'</span><span class="pun">];</span><span class="pln">
$MOD </span><span class="pun">=</span><span class="pln"> $moduleid </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> $EXT </span><span class="pun">:</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'module-'</span><span class="pun">.</span><span class="pln">$moduleid</span><span class="pun">.</span><span class="str">'.php'</span><span class="pun">);</span><span class="pln">
include DT_ROOT</span><span class="pun">.</span><span class="str">'/lang/'</span><span class="pun">.</span><span class="pln">DT_LANG</span><span class="pun">.</span><span class="str">'/'</span><span class="pun">.</span><span class="pln">$module</span><span class="pun">.</span><span class="str">'.inc.php'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$forward </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$forward</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> urldecode</span><span class="pun">(</span><span class="pln">$forward</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> $DT_REF</span><span class="pun">;</span><span class="com">//------------来源页面</span><span class="pln">
$action </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$action</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$action</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="com">//-------------动作指令</span><span class="pln">
</span><span class="com">//判断用户登录</span><span class="pln">
$destoon_auth </span><span class="pun">=</span><span class="pln"> get_cookie</span><span class="pun">(</span><span class="str">'auth'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$destoon_auth</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$_dauth </span><span class="pun">=</span><span class="pln"> explode</span><span class="pun">(</span><span class="str">"\t"</span><span class="pun">,</span><span class="pln"> decrypt</span><span class="pun">(</span><span class="pln">$destoon_auth</span><span class="pun">,</span><span class="pln"> md5</span><span class="pun">(</span><span class="pln">DT_KEY</span><span class="pun">.</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">'HTTP_USER_AGENT'</span><span class="pun">])));</span><span class="pln">
</span><span class="com">//print_r($_dauth);SELECT userid,username,groupid,admin FROM destoon_member</span><span class="pln">
$_userid </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
$_username </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
$_groupid </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
$_admin </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">4</span><span class="pun">])</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">4</span><span class="pun">])</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_userid </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">!</span><span class="kwd">defined</span><span class="pun">(</span><span class="str">'DT_NONUSER'</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$_password </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">3</span><span class="pun">])</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_dauth</span><span class="pun">[</span><span class="lit">3</span><span class="pun">])</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
$user </span><span class="pun">=</span><span class="pln"> $db</span><span class="pun">-></span><span class="pln">get_one</span><span class="pun">(</span><span class="str">"SELECT username,passport,company,truename,password,groupid,email,message,chat,sound,online,sms,credit,money,loginip,admin,aid,edittime,trade FROM {$DT_PRE}member WHERE userid=$_userid"</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$user </span><span class="pun">&&</span><span class="pln"> $user</span><span class="pun">[</span><span class="str">'password'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> $_password</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$user</span><span class="pun">[</span><span class="str">'groupid'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> dalert</span><span class="pun">(</span><span class="pln">lang</span><span class="pun">(</span><span class="str">'message->common_forbidden'</span><span class="pun">));</span><span class="com">//禁止用户访问的组别</span><span class="pln">
extract</span><span class="pun">(</span><span class="pln">$user</span><span class="pun">,</span><span class="pln"> EXTR_PREFIX_ALL</span><span class="pun">,</span><span class="pln"> </span><span class="str">''</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$user</span><span class="pun">[</span><span class="str">'loginip'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> $DT_IP </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">[</span><span class="str">'ip_login'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">[</span><span class="str">'ip_login'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> IN_ADMIN</span><span class="pun">)))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">//单点登录,判断ip</span><span class="pln">
$_userid </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> set_cookie</span><span class="pun">(</span><span class="str">'auth'</span><span class="pun">,</span><span class="pln"> </span><span class="str">''</span><span class="pun">);</span><span class="pln">
dalert</span><span class="pun">(</span><span class="pln">lang</span><span class="pun">(</span><span class="str">'message->common_login'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">$user</span><span class="pun">[</span><span class="str">'loginip'</span><span class="pun">])),</span><span class="pln"> DT_PATH</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">//登录失败</span><span class="pln">
$_userid </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$db</span><span class="pun">-></span><span class="pln">linked </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$swfupload</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> strpos</span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">'HTTP_USER_AGENT'</span><span class="pun">],</span><span class="pln"> </span><span class="str">'Flash'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> set_cookie</span><span class="pun">(</span><span class="str">'auth'</span><span class="pun">,</span><span class="pln"> </span><span class="str">''</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
unset</span><span class="pun">(</span><span class="pln">$destoon_auth</span><span class="pun">,</span><span class="pln"> $user</span><span class="pun">,</span><span class="pln"> $_dauth</span><span class="pun">,</span><span class="pln"> $_password</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_userid </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> $_groupid </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln"> $_username </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">IN_ADMIN</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_groupid </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> include DT_ROOT</span><span class="pun">.</span><span class="str">'/module/member/admin.inc.php'</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_userid </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">!</span><span class="kwd">defined</span><span class="pun">(</span><span class="str">'DT_NONUSER'</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">query</span><span class="pun">(</span><span class="str">"REPLACE INTO {$DT_PRE}online (userid,username,ip,moduleid,online,lasttime) VALUES ('$_userid','$_username','$DT_IP','$moduleid','$_online','$DT_TIME')"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">timetodate</span><span class="pun">(</span><span class="pln">$DT_TIME</span><span class="pun">,</span><span class="pln"> </span><span class="str">'i'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">10</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$lastime </span><span class="pun">=</span><span class="pln"> $DT_TIME </span><span class="pun">-</span><span class="pln"> $DT</span><span class="pun">[</span><span class="str">'online'</span><span class="pun">];</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">query</span><span class="pun">(</span><span class="str">"DELETE FROM {$DT_PRE}online WHERE lasttime<$lastime"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$MG </span><span class="pun">=</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'group-'</span><span class="pun">.</span><span class="pln">$_groupid</span><span class="pun">.</span><span class="str">'.php'</span><span class="pun">);</span><span class="com">//读取用户组别配置</span><span class="pln">
$_areaids </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
$_areaid </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">&</span><span class="com">#91;'city'&#93;) {</span><span class="pln">
$AREA </span><span class="kwd">or</span><span class="pln"> $AREA </span><span class="pun">=</span><span class="pln"> cache_read</span><span class="pun">(</span><span class="str">'area.php'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_aid</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$_areaids </span><span class="pun">=</span><span class="pln"> $AREA</span><span class="pun">&</span><span class="com">#91;$_aid&#93;&#91;'child'&#93; ? $AREA&#91;$_aid&#93;&#91;'arrchildid'&#93; : $_aid;</span><span class="pln">
$_areaid </span><span class="pun">=</span><span class="pln"> explode</span><span class="pun">(</span><span class="str">','</span><span class="pun">,</span><span class="pln"> $_areaids</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$_aid </span><span class="pun"><</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> dalert</span><span class="pun">(</span><span class="str">'系统未开启分站功能,您的分站管理帐号暂不可用'</span><span class="pun">,</span><span class="pln"> $MODULE</span><span class="pun">&</span><span class="com">#91;2&#93;&#91;'linkurl'&#93;.'logout.php');</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$session </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> dsession</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/admin/global.func.php'</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">require</span><span class="pln"> DT_ROOT</span><span class="pun">.</span><span class="str">'/include/post.func.php'</span><span class="pun">;</span><span class="pln">
require_once DT_ROOT</span><span class="pun">.</span><span class="str">'/include/cache.func.php'</span><span class="pun">;</span><span class="pln">
isset</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> $file </span><span class="pun">=</span><span class="pln"> </span><span class="str">'index'</span><span class="pun">;</span><span class="pln">
$secretkey </span><span class="pun">=</span><span class="pln"> </span><span class="str">'admin_'</span><span class="pun">.</span><span class="pln">strtolower</span><span class="pun">(</span><span class="pln">substr</span><span class="pun">(</span><span class="pln">$CFG</span><span class="pun">&</span><span class="com">#91;'authkey'&#93;, -6));</span><span class="pln">
</span><span class="com">//echo $secretkey;exit;</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">&</span><span class="com">#91;'authadmin'&#93; == 'session') {</span><span class="pln">
$_destoon_admin </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">&</span><span class="com">#91;$secretkey&#93;) ? intval($_SESSION&#91;$secretkey&#93;) : 0;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$_destoon_admin </span><span class="pun">=</span><span class="pln"> get_cookie</span><span class="pun">(</span><span class="pln">$secretkey</span><span class="pun">);</span><span class="pln">
$_destoon_admin </span><span class="pun">=</span><span class="pln"> $_destoon_admin </span><span class="pun">?</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$_destoon_admin</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$_founder </span><span class="pun">=</span><span class="pln"> $CFG</span><span class="pun">&</span><span class="com">#91;'founderid'&#93; == $_userid ? $_userid : 0;</span><span class="pln">
$_catids </span><span class="pun">=</span><span class="pln"> $_childs </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
$_catid </span><span class="pun">=</span><span class="pln"> $_child </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$file </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'login'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$_groupid </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_admin </span><span class="pun"><</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">$_destoon_admin</span><span class="pun">)</span><span class="pln"> msg</span><span class="pun">(</span><span class="str">''</span><span class="pun">,</span><span class="pln"> </span><span class="str">'?file=login&forward='</span><span class="pun">.</span><span class="pln">urlencode</span><span class="pun">(</span><span class="pln">$DT_URL</span><span class="pun">));</span><span class="pln">
</span><span class="com">//判断用户是否已经登录?如果未登录,直接跳转到登录页面。防止用户构造url。</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">admin_check</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
admin_log</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
$db</span><span class="pun">-></span><span class="pln">query</span><span class="pun">(</span><span class="str">"DELETE FROM {$db->pre}admin WHERE userid=$_userid AND url='?"</span><span class="pun">.</span><span class="pln">$DT_QST</span><span class="pun">.</span><span class="str">"'"</span><span class="pun">);</span><span class="pln">
msg</span><span class="pun">(</span><span class="str">'警告!您无权进行此操作 Error(00)'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">//是否记录日志</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">[</span><span class="str">'admin_log'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> $action </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'import'</span><span class="pun">)</span><span class="pln"> admin_log</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$DT</span><span class="pun">[</span><span class="str">'admin_online'</span><span class="pun">])</span><span class="pln"> admin_online</span><span class="pun">();</span><span class="pln">
$psize </span><span class="pun">=</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$psize</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> intval</span><span class="pun">(</span><span class="pln">$psize</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$psize </span><span class="pun">></span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> $psize </span><span class="pun">!=</span><span class="pln"> $pagesize</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$pagesize </span><span class="pun">=</span><span class="pln"> $psize</span><span class="pun">;</span><span class="pln">
$offset </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$page</span><span class="pun">-</span><span class="lit">1</span><span class="pun">)*</span><span class="pln">$pagesize</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$module </span><span class="pun">==</span><span class="pln"> </span><span class="str">'destoon'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
 
</span><span class="pun">(</span><span class="pln">include DT_ROOT</span><span class="pun">.</span><span class="str">'/admin/'</span><span class="pun">.</span><span class="pln">$file</span><span class="pun">.</span><span class="str">'.inc.php'</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> msg</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
echo $file</span><span class="pun">.</span><span class="str">'|'</span><span class="pun">.</span><span class="pln">$module</span><span class="pun">;</span><span class="pln">
include DT_ROOT</span><span class="pun">.</span><span class="str">'/module/'</span><span class="pun">.</span><span class="pln">$module</span><span class="pun">.</span><span class="str">'/common.inc.php'</span><span class="pun">;</span><span class="com">//加载模块下的common文件</span><span class="pln">
</span><span class="pun">(</span><span class="pln">include MD_ROOT</span><span class="pun">.</span><span class="str">'/admin/'</span><span class="pun">.</span><span class="pln">$file</span><span class="pun">.</span><span class="str">'.inc.php'</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> msg</span><span class="pun">();</span><span class="com">//加载模块文件</span><span class="pln">
</span><span class="pun">}</span>
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册