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

PHP提交POST表单后如何获取URL中$_GET['area']变量(无需隐藏输入)

无需隐藏输入传递$_GET['area']参数的解决方案

问题根源

你提交表单时,action只指向当前PHP文件,没有带上area参数——页面加载时URL里的area是首次访问时的参数,但表单提交会发起新的POST请求,不带参数的话,新请求里的$_GET['area']就会丢失,导致无法传入$addDataToDB()。

方案1:用Session存储参数

在crearArt.php最顶部开启会话,首次加载时把area存入Session,提交时从Session取出:

<?php
session_start(); // 必须放在所有输出之前,包括HTML、空格

// 首次访问页面时,保存area到Session
if(isset($_GET['area']) && !isset($_POST['crearArticle'])){
    $_SESSION['area'] = $_GET['area'];
}

$inputNames = [];
$inputValues = [];
if(isset($_POST['crearArticle'])){
    foreach($_POST as $key => $value){
        if($key !== 'crearArticle'){
            array_push($inputNames, $key);
            array_push($inputValues, $value);
        }
    }
    // 从Session取area传入方法
    $addDataToDB($inputNames, $inputValues, $_SESSION['area']);
    header('Location: index.php?area='.$_SESSION['area']);
}
?>

注意:session_start()必须放在页面最开头,不能有任何输出(比如空格、HTML标签),否则会触发错误。

方案2:修改表单Action拼接参数

直接在表单的action属性里带上area参数,这样POST提交时会自动携带该GET参数:
修改crearArt.view.php的表单代码:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?area=' . $_GET['area'] ?>" method="POST">
    <!-- 若干输入框 -->
    <button type="submit" name="crearArticle">Create New Content</button>
</form>

这样提交后,crearArt.php里的$_GET['area']就能正常读取,不需要修改原有的PHP处理逻辑,直接传入$addDataToDB()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:31:03