Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.07.2017 03:28:32

Как сделать редирект со страницы если её url введён вручную

Из-за ограничения максимальной длины заголовка темы не смог сформулировать вопрос достаточно точно. Если же быть точнее, то вопрос будет "Как сделать редирект со страницы "Спасибо за заявку", если на неё пришли НЕ со страницы с формой заявки?".

На данный момент у меня такие маршруты:

// Страница с формой
Route::get('/feedback', [   'as' => 'feedback',
                                        'uses' => 'FeedbackController@renderFeedbackPage']);

// Отправить заявку
Route::post('/feedback', [   'as' => 'sendFeedback',
                                        'uses' => 'FeedbackController@sendFeedback']);

// Страница "Спасибо за заявку"
Route::get('/thanks', [   'as' => 'thanks',
                                        'uses' => 'FeedbackController@renderThanksPage']);

Если введённые данные будут валидны, произойдёт перенаправление на страницу `/thanks`. Однако, на неё можно прийти и по-другому, например, введя соответствующий URL в адресную строку. Это недопустимо, т. к. произойдёт ложный зачёт конверсии. Как сделать редирект со страниы `/thanks`, если на неё пришли не со страницы формы после успешной валидации?

Не в сети

#2 05.07.2017 01:25:08

Re: Как сделать редирект со страницы если её url введён вручную

Так проверяй http_referer и редиректь юзера куда нужно:

$referer = Request::server('HTTP_REFERER');
if( preg_match('//', $referer) ) {
  redirect_to('');
}

Или более консервативный способ получения реферера:

$referer = $_SERVER['HTTP_REFERER'];

Точно не знаю(т.к. сам нуб во фреймворке), но может можно по другому чекать реферер, например по имени роута('as'=>'thanks').

Не в сети

#3 05.07.2017 07:37:36

Re: Как сделать редирект со страницы если её url введён вручную

Точно не знаю(т.к. сам нуб во фреймворке), но может можно по другому чекать реферер

если нужно получить предыдущий адрес, надо использовать \URL::previous() – у него преимущество в том, что он использует также адреса, которые сохраняются в сессии, то есть он работает даже если у пользователя стоит какой-то лютый анонимайзер, который удаляет рефереры из запросов (редкость, но случается)

Не в сети

Подвал раздела