У меня есть форма, называемая insert_comment.php, которая содержит эту функцию:
function died($error) { // if something is incorect, send to given url with error msg header("Location: http://mydomain.com/post/error.php?error=" . urlencode($error)); die(); }
Далее вниз код, $ error_message отправляется на функцию die, тогда функция die перенаправляет пользователя на mydomain.com/post/error.php, где я получаю сообщение об ошибке из URL:
$error = $_GET["error"]; echo 'some text '. $error .' sometext';
Есть ли способ сделать то же самое с помощью перенаправления POST? Мне не нравится отображать полное сообщение об ошибке в URL-адресе, оно выглядит очень уродливо.
Хотя это возможно, хотя и сложно сделать это с помощью POST, это неправильная стратегия, а не цель запроса POST.
Правильная стратегия состоит в том, чтобы поместить эту информацию в сеанс и отобразить ее там, а затем удалить ключ сеанса, когда он был показан.
// session_start() must have been called already, before any output: // Best to do this at the very top of your script session_start(); function died($error) { // Place the error into the session $_SESSION['error'] = $error; header("Location: http://mydomain.com/post/error.php"); die(); }
// Read the error from the session, and then unset it session_start(); if (isset($_SESSION['error'])) { echo "some text {$_SESSION['error']} sometext"; // Remove the error so it doesn't display again. unset($_SESSION['error']); }
с// Read the error from the session, and then unset it session_start(); if (isset($_SESSION['error'])) { echo "some text {$_SESSION['error']} sometext"; // Remove the error so it doesn't display again. unset($_SESSION['error']); }
Точная стратегия может быть использована для отображения других сообщений, таких как успешные действия, перед пользователем после перенаправления. Используйте столько разных ключей в $_SESSION
сколько вам нужно, и отключите их, когда сообщение было показано пользователю.