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

PHP好友请求系统点击提交按钮无法传递正确数据如何解决

问题原因
  • 你在while循环中反复给全局的$_SESSION["fid"]赋值,每次循环都会覆盖上一次的结果,最终SESSION里只会保留最后一条好友请求的发起人信息
  • 你输出form标签后没有写对应的</form>闭合标签,浏览器会默认把所有循环输出的下拉框、按钮都归到同一个表单下,提交时自然只会传递最后一组表单的数值
  • 单个表单内没有携带当前好友请求的唯一标识,后端接收时无法区分是哪条请求的提交
修复方案
  1. 删除循环内的$_SESSION["fid"] = $row["friend_request_name"];这行代码,不要用SESSION存储单条请求的标识
  2. 每个表单内增加隐藏input字段,传递当前好友请求的发起人信息/请求唯一ID
  3. 每个表单输出完成后补充</form>闭合标签,保证各条请求的表单相互独立
  4. 移除重复的id属性,或给id增加动态后缀避免id重复冲突

修改后的代码如下:

echo '<div class="container-fluid">';
echo '<div class="container-sm posts shadow p-3 mb-5 bg-white rounded">';
echo '<div class="container title"><h3>'; echo $current_user; echo '</h3></div>';
echo '<div class="container content">';

if ($result = $conn->query($query)) {
  while ($row = $result->fetch_assoc()) {
    if( $current_user == $row["currentUser"] && $row["current_request"] == 1){
          echo '<form action = "include/approve_friend_request.php" method = "POST">';
            // 增加隐藏域传递当前请求的发起人信息
            echo '<input type="hidden" name="friend_request_name" value="'.$row["friend_request_name"].'">';
            echo $row["friend_request_name"];
            echo '<select class="form-select" aria-label="Default select example" name="friend_reqest_level">';
            echo '<option value="1">friends</option>';
            echo '<option value="2">best friends</option>';
            echo '</select>';
            echo '<button type="submit" name = "submit" class="btn btn-dark">Submit</button> ';
            echo '<br>';
          // 闭合表单,保证各表单独立
          echo '</form>';
    }         
  }
}

echo '<br>';
echo '<br>';
echo '</div>';
echo '<div class="container footer"><p class="footer">.</p></div>';
echo '</div>';
echo '</div>';

后端处理脚本approve_friend_request.php中直接通过$_POST['friend_request_name']和$_POST['friend_reqest_level']就能拿到对应请求的发起人信息和选择的好友等级,不需要再读取SESSION。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:36:02