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

PHP表单中isset()验证$_GET变量失效问题求助

问题分析与解决方案

嘿,我一眼就揪出问题啦!你代码里犯了个超容易忽略的小错误——把超全局变量$_GET写成了$GET,少了前面的下划线!

PHP里的GET请求参数是存在$_GET这个以下划线开头的超全局数组里的,少了下划线之后,$GET就变成了一个未定义的普通变量,isset($GET['delete'])自然永远返回false,所以根本进不了if分支。而你直接echo $GET['delete']能输出?不对,应该是你实际测试时写的是$_GET['delete']吧😉

修正后的核心代码

把判断条件里的$GET改成$_GET就正常了:

// 修正前错误写法:if (isset($GET['delete'])){
if (isset($_GET['delete'])){ 
    $id = $_GET['delete']; 
    $query="DELETE FROM books WHERE isbn=$id"; 
    mysqli_query($con,$query); 
    header("Location: /Login/welcome.php"); 
    exit(0); 
}

额外重要提醒

你现在直接把$_GET的值拼进SQL语句里,这会导致严重的SQL注入漏洞!恶意用户随便构造个delete参数,就能删掉你整个数据库或者窃取数据。推荐用mysqli预处理语句来修复这个安全问题,示例如下:

if (isset($_GET['delete'])){ 
    $id = $_GET['delete']; 
    // 使用预处理语句避免SQL注入
    $query = "DELETE FROM books WHERE isbn = ?";
    $stmt = mysqli_prepare($con, $query);
    mysqli_stmt_bind_param($stmt, "s", $id); // "s"代表字符串类型,根据你的isbn字段类型调整
    mysqli_stmt_execute($stmt);
    header("Location: /Login/welcome.php"); 
    exit(0); 
}

这样既解决了isset不生效的问题,又把代码的安全性拉满啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:57:48