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

GET变量在if语句内未识别,$exex变量未定义问题求助

解决GET变量$exex未定义的问题

兄弟,你的问题根源一目了然:$exex变量只在isset($_GET['exid'])的代码块内部被定义,一旦离开这个代码块(比如提交表单时URL里不带exid参数了),这个变量就不存在了,自然会报“未定义”的错误。

第一步:先确保变量始终有定义,避免报错

不管URL里有没有exid参数,先给$exex一个初始值,这样后续代码里就能安全使用它,不会触发未定义错误:

<?php
session_start();
include "includes/connec.inc.php";

// PHP7+推荐用空合并运算符,简洁直观
$exex = $_GET['exid'] ?? null;
// 兼容低版本PHP的写法:
// $exex = isset($_GET['exid']) ? $_GET['exid'] : null;

// 后续代码里就可以正常调用$exex了

第二步:解决表单提交时变量丢失的问题

如果你的提交按钮对应表单提交(比如POST请求),原来的GET参数exid会在提交后消失,这时候要把$exex的值通过隐藏表单域传递到提交后的页面:

<!-- 在你的表单内部添加这个隐藏域 -->
<input type="hidden" name="exex" value="<?php echo htmlspecialchars($exex); ?>">

然后在处理表单提交的逻辑里,通过$_POST['exex']获取值:

// 处理表单提交的代码块
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $exex = $_POST['exex'] ?? null;
    // 接下来就可以用$exex执行数据库插入操作了
}

重要提醒:务必修复SQL注入风险

你当前的SQL语句直接拼接$_SESSION['email'],这是严重的SQL注入漏洞!一定要用预处理语句来操作数据库,举个mysqli的示例:

// 查询用户ID的安全写法
$stmt = $conn->prepare("SELECT id FROM eaouser WHERE email = ?");
$stmt->bind_param("s", $_SESSION['email']); // "s"表示参数为字符串类型
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();

// 插入$exex到数据库的安全写法
if ($exex) {
    $insertStmt = $conn->prepare("INSERT INTO 你的目标表名 (exex对应的字段名) VALUES (?)");
    $insertStmt->bind_param("s", $exex);
    $insertStmt->execute();
}

这样处理后,既解决了变量未定义的问题,又能保证数据库操作的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:47:50