表单action url中的参数消失


Parameters in form action url disappear?

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

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

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

可能看起来您的$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']);?>">

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

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

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

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

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

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