【问题标题】:Session not destroying in laravel会话没有在 laravel 中破坏
【发布时间】:2017-02-13 16:24:56
【问题描述】:

我的会话有问题。我不会破坏我的会话。在我的会话中,我输入了 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();
    }

请大家帮我解决这个问题

【问题讨论】:

    标签: php laravel session session-cookies


    【解决方案1】:

    您的会话值没有被破坏,因为您在调用刷新之前返回了函数。 改变

    return redirect($current_url);
    Session::flush();
    

    Session::flush();
    return redirect($current_url)
    

    【讨论】:

    • 如果我会这样做,那么如果我从任何其他页面注册并且也没有获得任何 $current_url 值,我将无法重定向到该页面
    • 是否无法从其他页面删除会话变量。或者使用 session::flash() - 它只为一个请求存储变量。
    • 我该怎么做
    • Session::flash('current_url', 'value');而是如果 session::get()
    • 编辑:上面的评论应该是 Session::flash('current_url', 'value');相反,如果 session::put() ...not get().
    【解决方案2】:

    答案是

    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();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-15
      • 2011-09-19
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多