Если это статический URL, то вы можете включить его в форму в качестве скрытого поля и затем перенаправить на него в своем коде, т.е.
<input type='hidden' name='return' value='/thankyou.html' />
Затем в функции отправки ...
header("Location: $_POST['return']");
В процессе работы вы, очевидно, захотите зашифровать URL-адрес в скрытом поле, а затем расшифровать его и проверить как хороший URL-адрес перед вызовом функции header (), но это должно дать вам идею.
Некоторые люди используют куки, другие имеют таблицу поиска в БД.На самом деле не имеет значения, где вы храните URL-адрес, просто важно очистить его перед заголовком ().
РЕДАКТИРОВАТЬ: Очистка
function isValidURL($url) {
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}
if ( isValidURL($_POST['return']) )
header("Location: {$_POST['return']}");
КакКак я уже говорил ранее, если вы хотите быть еще более осторожным, вы можете зашифровать / расшифровать фактический URL-адрес перед отображением в форме и перед проверкой.Существует множество хороших библиотек шифрования / дешифрования.
Урок, который можно взять домой, заключается в том, чтобы на самом деле никогда ничего не «делать» (например, вставить значения в базу данных, выполнить команду оболочки, перенаправить на URL и т. Д.) с данными, которые поступают через форму.Кто-то может манипулировать этим скрытым полем и вставлять код в ваше приложение или базу данных, будучи хитрым.Тысячи сообщений - примеры того, что люди будут делать с помощью инъекций форм.