新闻中心

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

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服