Задать вопрос
@faradeifrontend
Использую пробелы для отступов ;)

Как сохранить значение input после перенаправления на другую страницу $_POST?

Вот у меня есть форма.
<form method="POST">
	name<input type="text" name="name" class="<?=  ($_SERVER['REQUEST_METHOD'] == 'POST' and empty($_POST['name'])) ? 'invalid' : ''?>">
	 <p><input type="submit" /></p>

	age <input type="number" name="age" class="<?=  ($_SERVER['REQUEST_METHOD'] == 'POST' and empty($_POST['age'])) ? 'invalid' : ''?>">
</form>


Когда я отправляю с заполненным именем и возрастом 21+, я перехожу на maxage.php
и там я хочу вывести банально echo $_POST['name']; но там пусто в var_dump NULL как мне сохранить это значение.

if($_SERVER['REQUEST_METHOD'] == 'POST') {
	if(!empty($_POST['name']) and !empty($_POST['age'])) {
		$var_value = $_POST['name'];
		if($_POST['age'] >= 21) {
			header('Location: maxage.php');
		} else {
			header('Location: minage.php');
		}
	} else {
		echo 'Заполните все поля';
	}
}
  • Вопрос задан
  • 1115 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 5
@faradeifrontend Автор вопроса
Использую пробелы для отступов ;)
Чет сложно, максимум как получилось вывести значение inputa после перенаправления .
if($_POST['age'] >= 21) {
			$link='maxage.php?name='.$_POST['name'];
    	header('location:'.$link);
		}

и уже в maxage.php, через echo $_GET['name'] я смог получить простой вывод имени.
Но это GET, +он в url заносится при этом способе. Через $_POST я даже не понимаю почему оно не сохраняется при переходе на другую страницу.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
В общем случае, чтобы при редиректе сохранить введенные данные, используются сессии.
Но требуется это очень редко, и только в очень специальных случаях. И это явно не твой случай.

Иоэтому не нужно никаких максажей, обрабатывай всё на месте, без редиректов

Через $_POST я даже не понимаю почему оно не сохраняется при переходе на другую страницу.

Потому что это другая страница, чувак.
Если таксист привез пассажира в точку, А, а потом поехал домой - ты же не очень удивляешься, что дома у него не собираются все пассажиры, которых он возил за день?
Ответ написан
@kur4chyt
Качественный говнокод от производителя
возможно тупой но будет работать метод, это просто создавать форму со всеми твоими данными а ля и сабмитить её через js

let form = document.createElement('form');
form.action = 'maxage.php';
form.method = 'POST';

form.innerHTML = `
<input name="name" value="<?=$_POST['name']" hidden>
<input name="age" value="<?=$_POST['age']" hidden>`;

// перед отправкой формы, её нужно вставить в документ
document.body.append(form);

form.submit();
Ответ написан
Комментировать
@T3R3AND
Ответ прост, добавить action в form, и там уже делать проверки
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Все проще, чем вы думайте. Вместо переадресации, просто выводите нужную страницу через require:
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  if(!empty($_POST['name']) and !empty($_POST['age'])) {
    $var_value = $_POST['name'];
    if($_POST['age'] >= 21) {
      require 'maxage.php';
    } else {
      header('Location: minage.php');
    }
  } else {
    echo 'Заполните все поля';
  }
}

Соответственно, внутри maxage.php вам уже ничто не помешает использовать echo $_POST['name'];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы