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

点击含参数的链接后$_GET无法获取参数,提示数组键未定义

问题描述

点击页面中带有嵌入参数的第二个链接(Добави)时,目标脚本无法通过$_GET获取传递的参数,仅测试获取email参数时抛出错误:

Undefined array key "email"

注:代码仅用于演示功能,不部署上线,已知存在安全漏洞。


生成链接的代码

<?php
    while ($row = mysqli_fetch_assoc($querySubjs))
    {
        $subjectStatus = is_null($row["subject_status"]) ? $subjectStatusDisplay = "Незададен" : $row["subject_status"];
        echo "
            <tr>
                <td>$row[subject_name]</td>
                <td>$subjectStatus</td>
                <td>
        ";
        $subj = $row["subject_name"];
        $getTeachs = "SELECT * FROM teacher INNER JOIN student_teacher_subject ON teacher.ID = student_teacher_subject.teacher_ID
        WHERE student_ID = '$getResultsStd[ID]' AND subject_name = '$subj'";
        $queryTeachs = mysqli_query($mysqli, $getTeachs);
        while ($row1 = mysqli_fetch_assoc($queryTeachs))
        {   
            echo "{$row1['email']}";
        }
        echo "</td>
        <td>
            <input type='text' name='teacher' class='teacher-input'> 
        </td>
        <td>
            <a href='#' class='edit'>Редактирай</a>
            <a href='process_std_teach_subj.php?email=".$getResultsStd["email"]."&subject=".$subj."' class='add'>Добави</a>
        </td>
        </tr>";
        
    }
?>

$getResultsStd是查询学生信息后定义的数组。


目标脚本代码(process_std_teach_subj.php)

$m = $_GET["email"];
echo $m;

排查与解决步骤

  1. 检查生成的链接实际内容
    右键点击“Добави”链接,选择「复制链接地址」,粘贴到文本编辑器查看参数格式。正常应类似process_std_teach_subj.php?email=xxx@example.com&subject=xxx,如果email参数为空或缺失,说明$getResultsStd["email"]无有效值。

  2. 验证$getResultsStd数组的有效性
    在生成链接的代码前添加调试代码,确认数组是否包含email字段及对应值:

    var_dump($getResultsStd); // 输出数组内容,检查email键是否存在、值是否为空
    

    若email字段缺失,需检查之前查询学生信息的SQL语句,确保查询结果包含email字段。

  3. 处理URL编码问题
    如果email或subject包含特殊字符(如@、空格、+等),会导致参数解析异常,需用urlencode()对参数值编码:

    <a href='process_std_teach_subj.php?email=".urlencode($getResultsStd["email"])."&subject=".urlencode($subj)."' class='add'>Добави</a>
    
  4. 给目标脚本增加容错处理(可选)
    为避免直接报错,可先判断参数是否存在:

    $m = $_GET["email"] ?? '';
    echo $m;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:34:54