php 订单自动确认收货,recieve.php判断不严谨导致邮件自动确认收货问题修正

ECSHOP商家用户在后台点击发货后,系统会自动发送邮件通知用户,但因QQ邮件系统会检测邮件中的链接,导致部分用户未确认收货订单却状态变更。优易软件分析代码发现,问题在于点击邮件中的链接直接更改了订单状态。为解决此问题,他们建议修改`recieve.php`文件,增加确认页面和验证码验证,以防止系统误操作。通过这些改动,可以确保用户只有在手动确认后才会更新订单状态。
摘要由CSDN通过智能技术生成

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'];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值