ecshop index.php源代码分析

简介:
<?php 

// 根据某人的说法, 挂个鸟牌. 
define('IN_ECS', true); 
// 引入内核文件 
require(dirname(__FILE__) . '/includes/init.php'); 

// DEBUG_MODE在init.php中定义了0,根据常量不可重复定义的原则, 估计下面的判断永远都将是真.即不需要更新缓存. 
// $smarty->caching 为true时, 表示不强制更新缓存. 
if ((DEBUG_MODE & 2) != 2){ 
    $smarty->caching = true; 
} 

/*------------------------------------------------------ */ 
//-- Shopex系统地址转换 
/*------------------------------------------------------ */ 
if (!empty($_GET['gOo'])) 
{ 
    if (!empty($_GET['gcat'])) 
     { 
        /* 商品分类。*/ 
        $Loaction = 'category.php?id=' . $_GET['gcat']; 
     } 
    elseif (!empty($_GET['acat'])) 
     { 
        /* 文章分类。*/ 
        $Loaction = 'article_cat.php?id=' . $_GET['acat']; 
     } 
    elseif (!empty($_GET['goodsid'])) 
     { 
        /* 商品详情。*/ 
        $Loaction = 'goods.php?id=' . $_GET['goodsid']; 
     } 
    elseif (!empty($_GET['articleid'])) 
     { 
        /* 文章详情。*/ 
        $Loaction = 'article.php?id=' . $_GET['articleid']; 
     } 

    if (!empty($Loaction)) 
     { 
         ecs_header("Location: $Loactionn"); 

        exit; 
     } 
} 
//判断是否有ajax请求 
$act = !empty($_GET['act']) ? $_GET['act'] : ''; 
if ($act == 'cat_rec') 
{ 
    $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); 
    //假如有类型传过来就设置为数值类型,否则为1 
    $rec_type = !empty($_REQUEST['rec_type']) ? intval($_REQUEST['rec_type']) : '1'; 
    //同样的道理. 
    $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 
    //json应用. 
    include_once('includes/cls_json.php'); 
    $json = new JSON; 
    $result    = array('error' => 0, 'content' => '', 'type' => $rec_type, 'cat_id' => $cat_id); 
//获得指定分类下所有底层分类的ID 
    $children = get_children($cat_id); 
    $smarty->assign($rec_array[$rec_type] . '_goods',       get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品 
    $smarty->assign('cat_rec_sign', 1); 
    $result['content'] = $smarty->fetch('library/recommend_' . $rec_array[$rec_type] . '.lbi'); 
    die($json->encode($result)); 
} 

/*------------------------------------------------------ */ 
//-- 判断是否存在缓存,如果存在则调用缓存,反之读取相应内容 
/*------------------------------------------------------ */ 
/* 缓存编号 */ 
// ecshop似乎没有用户选择模式功能吧, 以下加密串多少有点令人难理解. 
$cache_id = sprintf('%X', crc32($_SESSION['user_rank'] . '-' . $_CFG['lang'])); 

// $smarty->is_cached 方法有多低能就有多低能. 方法将返回false 或者 true. 
if (!$smarty->is_cached('index.dwt', $cache_id)) 
{ 
//设置默认的smarty变量数据. 
     assign_template(); 
  
    //取得当前页信息.比如标题,链接等. 
    $position = assign_ur_here(); 
    //将它赋给smarty. 
    $smarty->assign('page_title',      $position['title']);    // 页面标题 
    $smarty->assign('ur_here',         $position['ur_here']);  // 当前位置
相关文章
|
4月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
153 0
|
4月前
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
260 0
|
1月前
|
数据采集 存储 JavaScript
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明,读者将了解如何实现数据分析和爬虫技术的结合应用,从而更好地理解和应用相关技术。
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
|
9月前
|
PHP
php开发实战分析(4):php调用封装函数包含文件路径自适应不同目录的解决方案($_SERVER[‘DOCUMENT_ROOT‘]与__DIR__魔术常量)
php开发实战分析(4):php调用封装函数包含文件路径自适应不同目录的解决方案($_SERVER[‘DOCUMENT_ROOT‘]与__DIR__魔术常量)
132 0
|
9月前
|
前端开发 JavaScript PHP
php开发实战分析(10):城市区县联动筛选
php开发实战分析(10):城市区县联动筛选
87 1
|
9月前
|
存储 监控 算法
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
185 0
|
9月前
|
SQL 缓存 关系型数据库
php开发实战分析(7):mysql类库操作的高级使用
php开发实战分析(7):mysql类库操作的高级使用
130 0
|
9月前
|
存储 缓存 JSON
php开发实战分析(6):配置文件或缓存文件的生成与调用
php开发实战分析(6):配置文件或缓存文件的生成与调用
103 0
|
9月前
|
存储 缓存 安全
php开发实战分析(5):文件和目录的操作
php开发实战分析(5):文件和目录的操作
105 0
|
9月前
|
SQL 安全 关系型数据库
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
300 0