有点困惑。让我解释一下示例情况。
我在delete.php(普通PHP,没有框架)的表单中通过http get
接收参数当我发送表单时,我一直认为GET值会因此丢失,如果我想保留这些值,我必须使用输入类型="隐藏" ,会议或任何其他机制。
但是使用PHP 7.0.8,Apache 2.4(肯定它不是版本问题只是想让你知道)我已经意识到以下几点:
a)如果表单的操作设置为delete.php(相同的URL),则提交表单后GET值将丢失。正如预期的那样
b)如果未设置表单的操作,则将数据发送到delete.php(按预期方式),但保留GET值。
我不知道为什么,我无法在任何文档或http espec中找到解释。
有人知道这种情况在哪里解释过吗?
这是代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GET / POST TEST</title>
<link rel="stylesheet" type="text/css" href=" ">
</head>
<body>
<form method="post" action="get_post_test.php">
Name<input type="text" name="name" required><br>
LastName<input type="text" name="lastname" required><br>
<p>
<input type="submit">
</p>
</form>
<?php
if(isset($_GET['id'])) {
echo "TENGO GET";
var_dump($_GET);
}
if (isset($_POST['name'])) {
echo "TENGO POST";
var_dump($_POST);
}
?>
</body>
</html>
我通过链接获得$ _GET [&#39; id&#39;],如果:
a)action =&#34; get_post_test.php&#34;然后$ _GET [&#39; id&#39;]在表单提交时丢失(因为我预期因为get_post_test.php是当前文件的名称)
b)如果我没有设置任何操作$ _GET [&#39; id&#39;]在提交时仍然可用????????
亲切的问候。
答案 0 :(得分:1)
让我们举个例子
案例1:定义行动时
定义操作后,表单将提交到该页面。
例如:如果您的操作为
delete.php
且网址为delete.php
,那么 表单将按预期发送数据,URL将如下所示delete.php?KEY=VALYE&...
但表单的操作将是相同的delete.php
,因为您已定义它。这就是为什么以前的数据会在重新提交时丢失的原因案例2:当操作留空时
当某个操作留空时表示操作将与之相同 网址。
例如:当您的网址为
delete.php
时,操作将与网址相同delete.php
这就是为什么表单会按预期发送数据。之后是URL 会变成这样delete.php?KEY=VALYE&...
。当你重新提交 表单然后动作将与已经具有相同的url相同 得到价值。
希望这能帮助您理解