Немного смущает. Позвольте мне объяснить ситуацию на примере.
У меня есть форма на delete.php (простой PHP, без фреймворка), которая получает параметр через http get
Когда я отправляю форму, я всегда думал, что значения GET будут потеряны, поэтому, если я хочу сохранить эти значения, я должен использовать input type = "hidden", sessions или любой другой механизм.
Но, используя PHP 7.0.8, Apache 2.4 (конечно, это не проблема версии, просто хотел вам сообщить), я понял следующее:
a) Если для действия формы установлено значение delete.php (тот же URL-адрес), значения GET теряются после отправки формы. Как и ожидалось
б) Если действие формы НЕ установлено, данные отправляются в 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 ['id'] по ссылке, и если:
a) action = "get_post_test.php" тогда $ _GET ['id'] теряется при отправке формы (как я и ожидал, потому что get_post_test.php - это имя текущего файла)
б) Если я не устанавливаю никаких действий, $ _GET ['id'] по-прежнему доступен при отправке ????????
С уважением.