今天小编在一个技术论坛上看了这样一个求助帖,一位用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']."确认收货?
$order_id."&con=".rawurlencode($consignee)."';\">确定";
}
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