【改BUG】项目遇到的奇葩bug

简介: 【改BUG】项目遇到的奇葩bug

问题

今天,我的下级代理联系我说,我们的平台,应用服务批量导入后,用户密码含有“0”的都不显示,例如密码是“07121239”但是平台只显示“7121239”,今天做了下排查,本文仅记录一下今天排查的经历

排查前端

在前端加了个调试后密码依然是含“0”的,那就说明问题应该在后端

排查后端

由于项目是原生php写的,部分代码,就直接通过[说明]跳过,更改之前的部分代码

<?php
'''数据库连接语句'''
$edit_id=$_POST['edit_id'];
$openid=$_POST['openid'];
$db=$_POST['db'];
$sql = "SELECT * FROM $db where id='$edit_id' and daili_openid='$openid'";  
$res =$conn->query($sql);
$result=$res->fetch_assoc();
 if (!$result) {
   die(
         json_encode(
             array(
             'code' => 200,
             'msg' => '查询失败,不存在记录',
             'data' => ''
         ),480)
 );
 }
 else{
      die(
         json_encode(
             array(
             'code' => 100,
             'msg' => '查询成功',
             'data' => $result
         ),480)
 );
 }
?>

代码返回是一个json,但是数据返回的password是“123456”,于是我重新打印了sql查询的语句,发现数据是“0123456”,说明应该不是sql查询问题,往下排查除了“json_encode”方法我找不到其他问题了

{"code":100,"msg":"\u67e5\u8be2\u6210\u529f","data":{"id":"45","phone":"15**********66","password":"123456","openid":"13*********4","daili_openid":"13*********4","address":"\u7389\u6eaa\u5e02\u7ea2\u5854\u533a","longitude":"102.55156461759","latitude":"24.359801443673","vip_data":"2023-07-10 16:22:03","vip_info":"false"}}

bug修改

大致猜测是因为json_encode()将0过滤掉了,修改代码如下:

<?php
'''数据库连接语句'''
$edit_id=$_POST['edit_id'];
$openid=$_POST['openid'];
$db=$_POST['db'];
$sql = "SELECT * FROM $db where id='$edit_id' and daili_openid='$openid'";  
$res =$conn->query($sql);
$result=$res->fetch_assoc();
if (!$result) {
    $response = array(
        'code' => 200,
        'msg' => '查询失败,不存在记录',
        'data' => ''
    );
} else {
    $response = array(
        'code' => 100,
        'msg' => '查询成功',
        'data' => $result
    );
}
$jsonData = json_encode($response, true);
// 输出 JSON 字符串
die($jsonData);
?>

看下修改后的结果:

password显示“0123456”

{"code":100,"msg":"\u67e5\u8be2\u6210\u529f","data":{"id":"45","phone":"15**********66","password":"0123456","openid":"13*********4","daili_openid":"13*********4","address":"\u7389\u6eaa\u5e02\u7ea2\u5854\u533a","longitude":"102.55156461759","latitude":"24.359801443673","vip_data":"2023-07-10 16:22:03","vip_info":"false"}}


相关文章
|
存储 搜索推荐 PyTorch
通义千问7B-基于本地知识库问答
上期,我们介绍了通义千问7B模型的微调+部署方式,但在实际使用时,很多开发者还是希望能够结合特定的行业知识来增强模型效果,这时就需要通过外接知识库,让大模型能够返回更精确的结果。
|
测试技术 API
修改bug引入更多bug怎么办?
修改bug引入更多bug怎么办?
229 0
|
JavaScript 前端开发
Vue实现模糊查询
Vue实现模糊查询
210 1
|
监控 测试技术 API
【开发规范】Breaking change 破坏性变更
【1月更文挑战第26天】【开发规范】Breaking change 破坏性变更
|
安全 JavaScript Go
Vue中的v-html指令有什么潜在的安全风险?如何防范?
Vue中的v-html指令有什么潜在的安全风险?如何防范?
1151 1
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:AI 驱动的自动化测试方法
【5月更文挑战第29天】随着人工智能(AI)技术的不断发展和成熟,其在软件测试领域的应用也日益广泛。本文旨在探讨 AI 如何改变软件测试的面貌,特别是自动化测试方法。我们将分析当前自动化测试的挑战,并介绍 AI 如何提供解决方案,包括智能化测试用例生成、测试执行优化、以及结果分析等。通过实际案例研究,我们还将讨论 AI 在提高测试效率、减少错误和提升软件质量保障中的作用。最后,文章将预测 AI 在自动化测试领域的未来趋势,并提出对测试工程师的建议。
|
8月前
|
缓存 JavaScript
计算属性和 watch 方法的结合使用方式
【10月更文挑战第3天】
175 3
|
10月前
Vue3面包屑(Breadcrumb)
该Breadcrumb组件允许自定义设置多个属性,包括路由数组、面包屑类名和样式、文本最大显示宽度、分隔符及样式、以及目标URL的打开方式。通过这些配置项,可以轻松实现不同样式的面包屑导航。组件支持点击跳转,并且能够处理带查询参数的路径。在线预览展示了其丰富的定制功能。可通过引入并在页面中使用该组件来快速构建导航结构。
254 1
Vue3面包屑(Breadcrumb)
|
9月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
415 3
快速上手|HTTP 接口功能自动化测试
|
Ubuntu Linux Shell
mc实现目录同步并封装成Linux服务形式
mc实现目录同步并封装成Linux服务形式
394 50