PHP Как я могу отправить безопасный URL через POST, чтобы после завершения сценария php он мог перенаправить обратно на страницу, с которой пришел? - PullRequest
1 голос
/ 10 июля 2011

Каков наилучший способ вернуться на страницу, где была отправлена ​​форма?

Например, если я отправляю некоторые данные через POST в «save-data.php», и этот файл, в свою очередь, загружает опубликованные данные в базу данных, как я могу затем вернуться на страницу, которая первоначально отправила данные POST, если URL-адрес не известно?

Я не уверен, что правильно объяснил.

ПОДРОБНЕЕ:

данные публикуются только администратором. Я использую этот код для редактируемой панели навигации, хранящейся в базе данных. Администратор может отредактировать ярлык, а затем сохранить его. Проблема в том, что его можно редактировать с любой страницы сайта, если вы вошли в систему как администратор. Когда вы нажимаете кнопку сохранения (на той же странице, что и панель навигации), она отправляет данные в скрипт php, который вставляет / обновляет базу данных. Мне просто нужно отправить пользователя обратно на страницу, где была нажата кнопка сохранения.

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Если это динамическое значение, вы можете передать скрытое входное значение:

<input type="hidden" name="return" value="myfile.php" />

Не фанат этого, так как он может быть изменен пользователем. Но я часто делаю подобные вещи в своих приложениях, а это примерно так:

<input type="hidden" name="return_action" value="detailview" />

Затем сделайте много вещей, чтобы проверить действие и соответствующие разрешения (больше разговора, чем это.)

Если это статический возврат и вы управляете им, вы можете просто сделать это:

header('Location: myfile.php');
exit();

Просто добавьте это после сохранения и штрафа.

Редактировать Извините, только что заметил, если URL не известен. Вы контролируете все части? Какие части вы контролируете и на каком уровне? Я предполагаю, что вы не просто позволяете всем публиковать данные на URL?

0 голосов
/ 10 июля 2011

Вы можете сделать это с помощью JavaScript:

window.onload = history.go(-1);

Это невозможно сделать в PHP.Вам необходимо знать URL-адрес, по которому вы отправляете туда кого-либо.$_SERVER['HTTP_REFERER'] может содержать реферер, но отправка не гарантируется (некоторые брандмауэры и браузеры удаляют заголовок реферера).

...