You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在访问PHP的链接中传入邮箱和密码两个必填参数?

正确的URL参数传递与SQL查询写法

首先解决你的URL参数传递问题:

  • 当需要传递多个GET参数时,第一个参数用?开头,后续参数之间用&分隔,不需要重复使用?,也不用加SQL里的AND(那是数据库查询的逻辑运算符,和URL参数规则无关)。
  • 正确的链接写法应该是:
    www.example.com/login.php?Email=test@gmail.com&Password=something50
    

接下来是你的SQL查询问题,这里有两个明显错误,还有一个严重的安全隐患:

  1. 语法与逻辑错误:你的查询里AND前后没有空格,导致SQL语法报错;而且密码部分没指定匹配的字段名,另外看起来你把邮箱错误地放到了ID字段的条件里,应该是匹配Email字段才对。
    修正后的基础写法(先不考虑安全问题):
    $sql = "SELECT * FROM User WHERE Email='".$email."' AND Password='".$pass."'";
    
  2. SQL注入风险:直接把用户输入的邮箱、密码拼接到SQL语句里是极度危险的,很容易被攻击者利用SQL注入窃取或破坏你的数据库。强烈推荐使用**预处理语句(Prepared Statements)**来规避这个问题,下面给你两个常用的实现示例:

使用mysqli的预处理语句

// 假设你已经建立了mysqli连接$conn
$email = $_GET['Email'];
$pass = $_GET['Password'];

// 准备预处理语句
$stmt = $conn->prepare("SELECT * FROM User WHERE Email=? AND Password=?");
// 绑定参数("ss"表示两个参数都是字符串类型)
$stmt->bind_param("ss", $email, $pass);
// 执行查询
$stmt->execute();
// 获取查询结果
$result = $stmt->get_result();
// 取出用户数据
$user = $result->fetch_assoc();

使用PDO的预处理语句

// 假设你已经建立了PDO连接$pdo
$email = $_GET['Email'];
$pass = $_GET['Password'];

// 准备并执行预处理语句
$stmt = $pdo->prepare("SELECT * FROM User WHERE Email=? AND Password=?");
$stmt->execute([$email, $pass]);
// 取出用户数据
$user = $stmt->fetch(PDO::FETCH_ASSOC);

最后补充一个重要的安全提示:实际项目里绝对不要明文存储用户密码,应该用PHP内置的password_hash()函数生成哈希值后存储,验证密码时用password_verify()来比对,这样即使数据库泄露,用户的真实密码也不会被窃取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:15:31