@Misha5
профессиональный бомж

Почему не работает редирект на предыдущую страницу?

Есть форма и в ней для примера input с типом submit
По нажатию на инпут производится отправка формы, а в шапке страницы php код обрабатывает это событие и если в сессию записан url предыдущей страницы - редиректит на нее, если нет - возвращает юзера на основой index.php.

На деле же при нажатии на инпут страница просто обновляется и ничего не происходит.

session_start();

	$url_lin = $_SESSION['url'];
	echo $url_lin;

if(isset($_POST["close"])) {
		if(isset($_SESSION['url'])) { 
			// $url_link = $_SESSION['url'];
			// echo "<br> $url_link <br>";
			header("Location: $url_lin");
			exit(); 
		} else { 
			$url_lin = ''; 
			header("Location: $url_lin");
			exit(); 
		}
	}


HTML:
<form method="post" id="closeForm" name="close">
         <input type="submit" style="position: absolute; margin-top: 0px;">
</form>


На всех остальных страницах сайта в начале прописывается
session_start(); 

$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
	$url = explode('?', $url);
	$url = $url[0];

$_SESSION['url'] = $url;

Это записывает полный путь сайта в Session['url']

Если укоротить:
session_start(); 
$_SESSION['url'] = $_SERVER['REQUEST_URI'];


В чем проблема? Проверяю SESSION['url'] - ссылка правильная. Но по ней не переходит, а просто обновляет текущую страницу.
5e6aa6adea015524822059.png

UPD: сейчас понял, что форма судя по всему не отправляется, поэтому ничего не происходит. Посмотрите, может я недоглядел
  • Вопрос задан
  • 64 просмотра
Решения вопроса 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В вашем PHP-скрипте после echo $url_lin; уже никакой header("Location: $url_lin"); не будет работать. Ну включите уже вывод ошибок PHP, что ли: error_reporting(E_ALL);.
Ответ написан
@sprashivatel
Это делается примерно вот так и без всяких сессий:

header('location: ' . $_SERVER['HTTP_REFERER'] ?? '/');
exit();
Ответ написан
@Misha5 Автор вопроса
профессиональный бомж
Крч проблема решалась проще чем я думал. Просто не там указал name="close" - оно было на форме, а должно было быть на инпуте.

Было:
<form method="post" id="closeForm" name="close">
  <input type="submit" style="position: absolute; margin-top: 0px;">
</form>


Стало:
<form method="post" id="closeForm">
  <input type="submit" style="position: absolute; margin-top: 0px;" name="close">
</form>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы