新闻中心
ECSHOP修正recieve.php判断不严谨导致邮件自动确认收货
作者 / 无忧主机 时间 2015-11-28 17:27:10
今天小编在一个技术论坛上看了这样一个求助帖,一位用ecshop建站的店长朋友反应“用户明明没有确认收货,可是会员管理里面,订单状态却显示为已经确认收货”。看到这个求助帖之后,小编很好奇。于是就各种研究,终于找到了问题所在。 这是因为ecshop后台点击发货之后,系统会主动发送邮件到用户预留的联络邮箱中,而ecshop程序的recieve规划是用户点击了链接就会自动将订单状态改为 确认收货。这是因为QQ邮件的spam系统会主动去点击邮件里面的链接是不是垃圾或者广告地址,所以这就是用户订单页面显示确认收货的原因。那么要阻止这种情况的发生,只能通过修改recieve.php文件来实现了。 编辑recieve.php文件查找如下代码:
/* 修改订单发货状态为“确认收货” */ $sql = "UPDATE " . $ecs->table('order_info') . " SET shipping_status = '" . SS_RECEIVED . "' WHERE order_id = '$order_id'"; $db->query($sql); /* 记录日志 */ order_action($order['order_sn'], $order['order_status'], SS_RECEIVED, $order['pay_status'], '', $_LANG ['buyer']); $msg = $_LANG['act_ok'];将以上代码修正为如下:
//确认页面 $act = !empty($_REQUEST['act']) ? rawurldecode($_REQUEST['con']) : 'confirm'; // 验证码 if ($act == 'confirm') { $msg = $order['order_sn']."确认收货?<button onclick=\"location.href='receive.php?act=receive&id=". $order_id."&con=".rawurlencode($consignee)."';\">确定</a>"; } else { /* 修改订单发货状态为“确认收货” */ $sql = "UPDATE " . $ecs->table('order_info') . " SET shipping_status = '" . SS_RECEIVED . "' WHERE order_id = '$order_id'"; $db->query($sql); /* 记录日志 */ order_action($order['order_sn'], $order['order_status'], SS_RECEIVED, $order['pay_status'], '', $_LANG ['buyer']); $msg = $_LANG['act_ok']; }这样就搞定了!本方法已经在无忧主机php免备案空间测试通过,有需要的朋友可以试试看。 无忧主机相关文章推荐阅读: 如何限制ECSHOP商品比较的数量 ECSHOP教程:用新窗口打开商品页面 ECSHOP教程:在首页的发货查询里显示省市区地址信息
本文地址:https://www.51php.com/ecshop/20987.html