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

PHP表单提交至includes目录时数据丢失,$_GET['id']报错求助

解决消息系统中$_GET['id']未定义的问题

问题原因

你通过URL的$_GET['id']指定消息接收用户,但表单采用POST方式提交,提交后原URL的GET参数不会自动传递到处理脚本,导致directMessages.inc.php中读取$_GET['id']时出现未定义错误。

解决方案

  1. 在表单页面添加隐藏字段传递接收者ID
    在directMessages.php的表单内部,加入隐藏输入框存储URL获取到的接收者ID,让表单提交时通过POST一同传递该值:
<input type="hidden" name="recipient_id" value="<?php echo htmlspecialchars($_GET['id'], ENT_QUOTES); ?>">

使用htmlspecialchars是为了避免XSS攻击,保障输入安全性。

  1. 在处理脚本中从POST读取接收者ID
    修改directMessages.inc.php中的代码,将原本读取$_GET['id']的逻辑改为读取$_POST['recipient_id'],示例如下:
// 原调用逻辑
sendDirectMessage($conn, $_SESSION['userid'], $_GET['id'], $_POST['message']);
// 修改后
sendDirectMessage($conn, $_SESSION['userid'], $_POST['recipient_id'], $_POST['message']);
  1. 添加参数合法性校验(推荐)
    在处理脚本开头增加校验逻辑,过滤非法请求:
if (!isset($_POST['recipient_id']) || !is_numeric($_POST['recipient_id'])) {
    header("Location: directMessages.php?error=invalid_recipient");
    exit();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:40:36