#php #laravel #session #session-cookies
#php #laravel #сессия #сессия-файлы cookie
Вопрос:
У меня проблема в моей сессии. Я не уничтожаю свою сессию. В моем сеансе я ввожу значение моего current_url, чтобы, если я регистрируюсь со страницы бронирования, я ПЕРЕНАПРАВЛЯЛ ОБРАТНО НА СТРАНИЦУ ПОСЛЕ РЕГИСТРАЦИИ. Но если я зарегистрируюсь с домашней страницы, она также перенаправит обратно на страницу бронирования. Мой контроллер
public function helpPeopleStore (Request $request) {
if (Auth::check()) {
$current_url = Session::get('current_url');
$user = Auth::user();
$industry = $request->input('industry');
if (empty($industry)) {
Session::flash('error', 'Industry is needed');
return redirect()->back()->withInput();
}
$degrees = $request->input('degrees');
if (empty($degrees)) {
Session::flash('error', 'Degree is needed');
return redirect()->back()->withInput();
}
$area_of_experiences = $request->input('area_of_experiences');
if (empty($area_of_experiences)) {
Session::flash('error', 'area of experiences is needed');
return redirect()->back()->withInput();
}
$user_industry = UserIndustry::where('user_id', $user->id)->first();
if (!empty($user_industry)) {
$user_industry = $user_industry;
} else {
$user_industry = new UserIndustry();
}
$user_degrees_exists = UserDegree::where('user_id', $user->id)->get();
if (!empty($user_degrees_exists)) {
foreach ($user_degrees_exists as $user_degree_exist) {
UserDegree::destroy($user_degree_exist->id);
}
}
$user_area_of_experiences_exists = UserAreaOfExperience::where('user_id', $user->id)->get();
if (!empty($user_area_of_experiences_exists)) {
foreach ($user_area_of_experiences_exists as $user_area_of_experience_exist) {
UserAreaOfExperience::destroy($user_area_of_experience_exist->id);
}
}
$user_industry->user_id = $user->id;
$user_industry->industry_id = $industry;
$user_industry->save();
if (!empty($degrees)) {
foreach ($degrees as $degree) {
$user_degrees = new UserDegree();
$user_degrees->user_id = $user->id;
$user_degrees->degree_id = $degree;
$user_degrees->save();
}
}
if (!empty($area_of_experiences)) {
foreach ($area_of_experiences as $area_of_experience) {
$user_area_of_experiences = new UserAreaOfExperience();
$user_area_of_experiences->user_id = $user->id;
$user_area_of_experiences->area_of_experience_id = $area_of_experience;
$user_area_of_experiences->save();
}
}
return redirect($current_url);
Session::flush();
} else {
return redirect('user/registration');
}
Session::flush();
}
Пожалуйста, ребята, помогите мне решить эту проблему
Ответ №1:
Ответ будет
public function helpPeopleStore (Request $request) {
if (Auth::check()) {
$current_url = Session::get('current_url');
$user = Auth::user();
$industry = $request->input('industry');
if (empty($industry)) {
Session::flash('error', 'Industry is needed');
return redirect()->back()->withInput();
}
$degrees = $request->input('degrees');
if (empty($degrees)) {
Session::flash('error', 'Degree is needed');
return redirect()->back()->withInput();
}
$area_of_experiences = $request->input('area_of_experiences');
if (empty($area_of_experiences)) {
Session::flash('error', 'area of experiences is needed');
return redirect()->back()->withInput();
}
$user_industry = UserIndustry::where('user_id', $user->id)->first();
if (!empty($user_industry)) {
$user_industry = $user_industry;
} else {
$user_industry = new UserIndustry();
}
$user_degrees_exists = UserDegree::where('user_id', $user->id)->get();
if (!empty($user_degrees_exists)) {
foreach ($user_degrees_exists as $user_degree_exist) {
UserDegree::destroy($user_degree_exist->id);
}
}
$user_area_of_experiences_exists = UserAreaOfExperience::where('user_id', $user->id)->get();
if (!empty($user_area_of_experiences_exists)) {
foreach ($user_area_of_experiences_exists as $user_area_of_experience_exist) {
UserAreaOfExperience::destroy($user_area_of_experience_exist->id);
}
}
$user_industry->user_id = $user->id;
$user_industry->industry_id = $industry;
$user_industry->save();
if (!empty($degrees)) {
foreach ($degrees as $degree) {
$user_degrees = new UserDegree();
$user_degrees->user_id = $user->id;
$user_degrees->degree_id = $degree;
$user_degrees->save();
}
}
if (!empty($area_of_experiences)) {
foreach ($area_of_experiences as $area_of_experience) {
$user_area_of_experiences = new UserAreaOfExperience();
$user_area_of_experiences->user_id = $user->id;
$user_area_of_experiences->area_of_experience_id = $area_of_experience;
$user_area_of_experiences->save();
}
}
return redirect($current_url);
Session::flush();
} else {
return redirect('user/registration');
}
Session::flush();
}
Ответ №2:
Ваши значения сеанса не уничтожаются, потому что вы возвращаете функцию перед вызовом flush. Изменить
return redirect($current_url);
Session::flush();
Для
Session::flush();
return redirect($current_url)
Комментарии:
1. если я сделаю это, я не смогу перенаправить на страницу, если я зарегистрируюсь с любой другой страницы, а также не получу никакого значения $current_url
2. Невозможно ли удалить переменную сеанса с другой страницы. Или используйте session::flash() — он сохраняет переменную только для одного запроса.
3. Как я могу это сделать
4. Session::flash(‘current_url’, ‘value’); вместо этого, если session:: get()
5. Редактировать : комментарий выше должен был быть Session::flash(‘current_url’, ‘value’); вместо этого, если session::put() … не get() .