You need to enable JavaScript to run this app. PHP通过HWID查询数据库日期与当前日期比对代码异常排查
优惠活动
大模型
产品
解决方案
定价
更多

PHP通过HWID查询数据库日期与当前日期比对代码异常排查

问题根因梳理
  • 扩展混用错误:代码同时使用已废弃的mysql系列函数和mysqli扩展,二者不兼容,导致后续查询逻辑完全无法执行,$rows变量始终为空字符串。
  • 查询逻辑完全倒置:需求是通过传入的HWID查询对应用户的过期时间,现有代码反转为通过GET参数Expire_Date查询HWID,且C#端根本没有传递Expire_Date参数,所以查询分支永远不会触发。
  • 查询字段错误:即使查询逻辑触发,SQL语句只查询HWID字段,根本没有取出需要比对的Expire_Date字段,无法完成日期校验。
  • 比对逻辑完全写反:现有逻辑判断当前时间大于目标时间返回valid,2024年的当前时间必然大于示例中的2021-07-01;再加上$rows为空时strtotime($rows)返回0,当前时间戳永远大于0,所以代码始终返回valid。
修正后的PHP代码
$con = mysqli_connect("server", "name", "pass", "db");
if(!$con) {
  die("noconn");
}

$HWID = "";
if(isset($_POST['HWID']) && !empty($_POST['HWID'])) {
  $HWID = mysqli_real_escape_string($con, $_POST['HWID']);
} elseif(isset($_GET['HWID']) && !empty($_GET['HWID'])) {
  $HWID = mysqli_real_escape_string($con, $_GET['HWID']);
} else {
  die("nodata");
}

// 调整为用HWID查询对应的过期时间
$sql = "SELECT Expire_Date FROM users WHERE HWID='$HWID' LIMIT 1";
$result = mysqli_query($con, $sql);
if (!$result || mysqli_num_rows($result) == 0) {
  // 没有找到对应HWID的用户直接返回无效
  die("invalid");
}
$row = mysqli_fetch_assoc($result);
$expireTime = strtotime($row['Expire_Date']);
$currentTime = time();

// 修正比对逻辑:当前时间小于过期时间才有效
if ($currentTime < $expireTime) {
  die("valid");
} else {
  die("invalid");
}
额外注意事项
  • 建议后续使用参数绑定替换mysqli_real_escape_string做SQL注入防护,安全性更高
  • C#端的弹窗逻辑中,有效提示也用了Error标题,可根据业务需求调整文案

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:06:10