分析ecshop新订单提示原理

2009-11-20 12:17 来源:www.chinab4c.com 作者:ecshop专家

   ecshop电子商务系统,在运行的时候,如果你的前台有ecshop新订单了,那么在后台有程序在监视,并且发出提示.首先那段代码非常隐蔽.他位于pagefooter.htm模板中。里面有段JS为

  {if $enable_order_check eq '0'}
startCheckOrder = function(){}
{/if}

    通过admin/js/common.js我们可以发现.他有下面两个函数

    function startCheckOrder()
{
  checkOrder()
  window.setInterval("checkOrder()", NEW_ORDER_INTERVAL);
}

/*
 * 检查订单
 */
function checkOrder()
{
  var lastCheckOrder = new Date(document.getCookie('ECS_LastCheckOrder'));
  var today = new Date();

  if (lastCheckOrder == null || today-lastCheckOrder >= NEW_ORDER_INTERVAL)
  {
    document.setCookie('ECS_LastCheckOrder', today.toGMTString());

    try
    {
      Ajax.call('index.php?is_ajax=1&act=check_order','', checkOrderResponse, 'GET', 'JSON');
    }
    catch (e) { }
  }
}
  你看里面有一句 Ajax.call('index.php?is_ajax=1&act=check_order','', checkOrderResponse, 'GET', 'JSON');他调用了index.php的check_order动作.我们找到index.php中的这段代码

 elseif ($_REQUEST['act'] == 'check_order')
{
    if (empty($_SESSION['last_check']))
    {
        $_SESSION['last_check'] = gmtime();

        make_json_result('', '', array('new_orders' => 0, 'new_paid' => 0));
    }

    /* 新订单 */
    $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('order_info').
    " WHERE add_time >= '$_SESSION[last_check]'";
    $arr['new_orders'] = $db->getOne($sql);

    /* 新付款的订单 */
    $sql = 'SELECT COUNT(*) FROM '.$ecs->table('order_info').
    ' WHERE pay_time >= ' . $_SESSION['last_check'];
    $arr['new_paid'] = $db->getOne($sql);

    $_SESSION['last_check'] = gmtime();

    if (!(is_numeric($arr['new_orders']) && is_numeric($arr['new_paid'])))
    {
        make_json_error($db->error());
    }
    else
    {
        make_json_result('', '', $arr);
    }
}
    /* 新订单 */
    $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('order_info').  " WHERE add_time >= '$_SESSION[last_check]'"; $arr['new_orders'] = $db->getOne($sql);

     这句,就是扫描他的。我们可以随意修改.呵呵.

    相关文章:

   ecshop订单管理分析

    来源:中国B4C电子商务

来源于上海汽车租赁