<form action="create_page.php?subject=<?php echo urlencode($current_subject["id"]); ?>" method="post">
表单提交后,$current_subject["id"]
消失。
我知道它发生在 GET 方法中,但为什么它会在POST方法中消失?
当表单没有通过我的验证函数时会发生奇怪的事情,参数会保留在那里。但是当它通过时,它会消失。我知道我可以使用隐藏的字段,但我很好奇为什么会发生这种情况。
答案 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请求中的数据不在查询字符串中。
这就是为什么数据在隐藏字段中传递的原因,如示例所示。