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

更新时间:2016-07-30 点击量:919


   


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


支付宝扫码打赏 微信打赏

如果文章对您有帮助,就打赏一个吧

在线客服

客户服务

热线电话:

0755-36656507 15889489919 服务时间:

周一到周六:9:00-18:00

在线QQ客服

在线微信客服

关于我们 常见问题

支付方式 加盟合作

提交需求
优惠红包 购物车0 反馈留言 返回顶部