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']);  // 当前位置
相关文章
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
333 0
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
1211 0
|
4月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
8天前
|
搜索推荐 PHP SEO
SEO化在线检测分析PHP源码
SEO化在线检测分析PHP源码,有助于确定您的 SEO 错误并优化您的互联网网页内容以获得更高的搜索引擎评级 还提供与您的竞争对手的逐个方面的 SEO 比较。分析报告甚至可以下载为 PDF 文件以供离线使用 上传服务器后解压安装
36 13
|
4月前
|
监控 IDE PHP
php xdebug的配置、调试、跟踪、调优、分析
php xdebug的配置、调试、跟踪、调优、分析
|
4月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
5月前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
67 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
4月前
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
31 0
|
5月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
46 0
|
5月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
57 0