表单操作url中的参数消失了吗?

时间:2014-03-14 04:45:25

标签: php html forms

<form action="create_page.php?subject=<?php echo urlencode($current_subject["id"]); ?>" method="post">

表单提交后,$current_subject["id"]消失。 我知道它发生在 GET 方法中,但为什么它会在POST方法中消失?

当表单没有通过我的验证函数时会发生奇怪的事情,参数会保留在那里。但是当它通过时,它会消失。我知道我可以使用隐藏的字段,但我很好奇为什么会发生这种情况。

2 个答案:

答案 0 :(得分:1)

似乎您的$current_subject["id"]空值,请尝试检查

if(!empty($current_subject["id"])) {
  // do yourstuff
}

或以最佳替代方式尝试使用隐藏的形式

 <form action="create_page.php">
    <input type ="hidden" name="subject" value="<?php echo urlencode($current_subject['id']);?>">

答案 1 :(得分:1)

是的,它不起作用,为此你需要回到GET和POST的定义。

在GET请求中,表单参数在URL中编码,称为查询字符串。 所以使用

$_GET将期望查询字符串中的参数。

POST请求传递HTTP请求正文中的表单参数,而不是URL。

因此,使用$_POST会使HTTP请求中的数据不在查询字符串中。

这就是为什么数据在隐藏字段中传递的原因,如示例所示。