网站开发 · 2025年4月24日

修正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’];     }