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

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

本文原创地址:https://www.ecshop.cx/article-174.html
版权所有 © 转载时必须以链接形式注明出处!

觉得本文对您有用,想收藏下来!方法很简单:请点击-〉
我们一直坚持白天工作、晚上熬夜更新资源,付出了巨大的精力和时间,其中的辛酸难以言述。

实时购买动态 ×

罗生会员 在 2019-04-09 购买了 最新ECSHOP的PAYPAL支付插件采用加密返回同步订单 完美同步付款不掉单