Laravel по-русски

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

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

#1 03.02.2018 08:53:16

Как пускать на определённую страницу только тех кто отправил обр.связь

Прошу прощения за заголовок — не хватило символов.

Как пропустить на страницу «Спасибо за заявку» только тех, кто заполнил и успешно отправил форму обратной связи?

Мои маршруты (актуальные в данном вопросе):

PHP
// Отправка заявки
Route::post('/submit-request', [
    
'as' => 'submitConsultationRequest',
    
'uses' => 'Open\FeedbackController@submitConsultationRequest'
]);

// Страинца благодарности
Route::get('/thanks', [
    
'as' => 'thanksForConsultationRequest',
    
'uses' => 'MainController@renderThanksForConsultationRequestPage'
]);

Если сделать это таким образом, как приведено ниже, то URL::previous() будет являться не post-запрос отправки сообщения (thanksForConsultationRequest), а URL той страницы, с которой произошла отправка сообщения.

PHP
if (URL::previous() !== URL::route('submitConsultationRequest')) {
    return 
redirect() -> back();
}

Изменено Gleb2708 (03.02.2018 10:04:00)

Не в сети

#2 03.02.2018 10:00:51

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

А если просто сделать редирект на эту страницу?

Не в сети

#3 03.02.2018 10:06:07

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

Редирект-то сделать можно, и я его делаю после успешной отправки сообщения, но нам нужно предотвратить то, чтобы кто-то, введя в поисковую строку соответствующий URL, попал на страницу благодарности — это может быть ошибочный засчёт конверсии.

И, кстати, я забыл добавить небольшой кусок кода в конец сообщения. Исправил это.

Не в сети

#4 03.02.2018 10:08:25

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

Как вариант - заносить отправившего юзера в БД, а на странице с благодарностью делать проверку. Или сделать мидлваре и в роуте его прописать.

Не в сети

#5 03.02.2018 10:13:16

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

А ещё какие варианты есть? Может, в сессии записать?

Не в сети

#6 03.02.2018 10:16:31

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

Можно вместе с формой передавать какой-нить параметр, например flag, а уже в контроллере проверять его наличие

Не в сети

#7 03.02.2018 10:53:34

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

Gleb2708 пишет:

А ещё какие варианты есть? Может, в сессии записать?

если регистрации нет, параметр в сессии это самый очевидный вариант.
если есть регистрация и она обязательна, то надо менять какой-то атрибут пользователя и проверять его (через  Gate)

Изменено artoodetoo (03.02.2018 11:13:28)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#8 04.02.2018 05:39:50

Re: Как пускать на определённую страницу только тех кто отправил обр.связь

Благодарю Всех за ответы!

Не в сети

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