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);

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


你可能感兴趣的:(function,null,电子商务,ecshop,admin)