ECSHOP修正recieve.php判断不严谨导致邮件自动确认收货

今天小编在一个技术论坛上看了这样一个求助帖,一位用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 . "' WHEREorder_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.gaosudu.com/ecshop/20987.html