<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请求中的数据不在查询字符串中。
这就是为什么数据在隐藏字段中传递的原因,如您的示例