如何将玩家信息搜索系统改为通过URL参数触发查询
修改玩家信息查询系统为URL参数触发
修改说明
需要移除原有的搜索表单,改为通过URL参数(如https://dmoinname/?id=player&name=玩家名称)直接触发查询,页面加载时自动展示对应玩家信息。以下是修改后的完整代码及关键调整点:
关键调整步骤
- 移除页面顶部的HTML表单代码
- 替换参数获取方式:从
$_POST['term']改为从$_GET['name']获取玩家名称,同时校验URL中的id=player参数 - 修正原代码中未生效的用户不存在判断逻辑
- 保留原有参数验证规则,同时加强参数过滤
修改后的完整代码
<?php $errors = array(); $term = ''; // 校验URL参数:必须存在id=player且携带name参数 if(isset($_GET['id']) && $_GET['id'] === 'player' && isset($_GET['name'])){ $term = mysql_real_escape_string(htmlentities(trim($_GET['name']))); } // 参数验证逻辑 if (empty($term)){ $errors[] = '请输入用户名,且查询前请关闭账号'; } else if (strlen($term)<4) { $errors[] = '用户名至少包含4个字符'; } if (empty($errors)){ $sql = mysql_query("select * from cq_user where name='$term'"); // 检查是否查询到有效结果 if(mysql_num_rows($sql) === 0){ $errors[] = "未在数据库中找到用户 {$term}"; } else { while ($row = mysql_fetch_array($sql)){ echo '<br/> <font color=Silver size="2">Name :<font color=#008080 size="2"> '.$row['name']; echo '<br/> <font color=Silver size="2">Mate :<font color=#008080 size="2"> '.$row['mate']; echo '<br/> <font color=Silver size="2">Reborn :<font color=#008080 size="2"> '.$row['metempsychosis']; echo '<br/> <font color=Silver size="2">Level :<font color=#008080 size="2"> '.$row['level']; // 原代码中Supose字段重复调用mate,建议检查数据库对应字段名 echo '<br/> <font color=Silver size="2">Supose :<font color=#008080 size="2"> '.$row['mate']; echo '<br/> <font color=Silver size="2">PK :<font color=#008080 size="2"> '.$row['pk']; echo '<br/> <font color=Silver size="2">Cps :<font color=#008080 size="2"> '.$row['emoney']; echo '<br/> <font color=Silver size="2">Strength :<font color=#008080 size="2"> '.$row['strength']; echo '<br/> <font color=Silver size="2">Vitality :<font color=#008080 size="2"> '.$row['health']; echo '<br/> <font color=Silver size="2">Agility :<font color=#008080 size="2"> '.$row['Speed']; echo '<br/> <font color=Silver size="2">Spirit :<font color=#008080 size="2"> '.$row['soul']; echo '<br/> <font color=Silver size="2">Unspent points :<font color=#008080 size="2"> '.$row['additional_point']; echo '<br/><br/>'; } } } else { foreach($errors as $error) { echo $error, '</br>'; } } ?>
重要安全提示
原代码使用的mysql_*系列扩展已被PHP官方废弃,存在兼容性和安全隐患,建议尽快迁移到mysqli或PDO扩展,并使用预处理语句彻底规避SQL注入风险。
内容的提问来源于stack exchange,提问作者Mohamed
相关产品推荐
相关产品推荐

