【问题标题】:'Undefined index: usertype' error for $_SESSION$_SESSION 的“未定义索引:用户类型”错误
【发布时间】:2019-02-18 05:54:07
【问题描述】:

虽然我在 Laravel 项目中设置了会话索引,但出现错误

未定义索引:用户类型

在用户登录时,我设置了$_SESSION['usertype'] 并重定向到/home url。

但我在设置会话索引时遇到了这个错误。

控制器

public function signin(Request $request)
{
    $username = $request->username;
    $password = md5($request->password);

    $exist = UserTbl::where('username','=', $username)->where('password','=', $password)->get();

    if(count($exist) > 0)
    {
        $_SESSION['usertype'] = $exist[0]->user_type;

        return redirect('/home');
    }
    else
    {
        return redirect('/');
    }
}
public function home()
{
    $_SESSION['active_menu'] = '1';
    return view('home');
}

路线

Route::get('/home','PrescriptionController@home');

查看出现错误的位置

@if($_SESSION['usertype'] == '1') // Got error in this line
                    <li>
                        <a href="{{ url('all-user') }}">
                            <span>All User</span>
                        </a>
                    </li>
                    <li>
                        <a href="{{ url('create-user') }}">
                            <span>Create User</span>
                        </a>
                    </li>
                @endif

【问题讨论】:

  • 像这样使用isset()函数@if(isset($_SESSION['usertype']) &amp;&amp; $_SESSION['usertype'] == '1')
  • if(count($exist) > 0) { $_SESSION['usertype'] = $exist[0]->user_type;回声 $_SESSION['usertype'] ;死; //检查会话使用类型是否设置...
  • @SayedMohdAli......我已经检查了$_SESSION['usertype']......并且已经设置好了
  • 使用 Laravel 会话类而不是直接访问会话用户全局。我还建议从控制器中的会话中获取值,然后将其传递给视图以保持视图尽可能精简。

标签: php laravel session routes


【解决方案1】:

如果您使用的是 laravel,那么您可以简单地使用 laravel 会话方法,如下所示,

//For set value in session

$request->session()->put('usertype',$exist[0]->user_type);

//For getting value from session

$request->session()->get('usertype');

//For getting session value in blade file

Session::get('usertype')

【讨论】:

  • 尚未解决.... 错误未显示,但我的列表项仍未显示
  • 检查错误日志或如果您在日志中发现错误可能会发布错误
  • 是的,现在它是正确的......所有答案都是正确的......但是你给出了第一个答案,这就是我接受你的答案的原因
【解决方案2】:

您的问题中有很多要强调的内容:

  • 你应该使用Hash::门面作为密码,而不是简单的md5
  • 检查登录后,您可以使用Auth::attempt(),它还可以维护用户会话,直到用户注销或致电Auth::logout(),请参阅this 博客文章了解更多信息
  • 为了在 Laravel 中处理 sessions,laravel 提供了不同的方法来管理 session 键,因此您不必直接使用 $_SESSION。喜欢$request-&gt;session()-&gt;get('usertype')session()-&gt;get('usertype')SESSION::get('usertype')
  • 另外,在直接引用会话密钥之前,最好检查它是否存在。 Laravel 的任何会话实现都带有 has('key'),如果您要求的 key 在会话中存在,它会返回布尔值。

例如:

@if(session()->has('usertype') &&  session()->get('usertype') == '1')
  ...
@endif

【讨论】:

    【解决方案3】:

    在您的控制器中调用Session Facade 或使用$request-&gt;session()。这里我使用Session Facade。

    use Session;
    
    public function signin(Request $request)
    {
        $username = $request->username;
        $password = md5($request->password);
    
        $exist = UserTbl::where('username','=', $username)->where('password','=', $password)->first();
    
        if(isset($exist->user_type))
        {
            Session::put('user_type') = $exist->user_type;
    
            return redirect('/home');
        }
        else
        {
            return redirect('/');
        }
    }
    
    public function home()
    {
        Session::put('active_menu') = '1';
        return view('home');
    }
    

    查看

    @if(Session::get('user_type')==1)
                    <li>
                        <a href="{{ url('all-user') }}">
                            <span>All User</span>
                        </a>
                    </li>
                    <li>
                        <a href="{{ url('create-user') }}">
                            <span>Create User</span>
                        </a>
                    </li>
                @endif
    

    【讨论】:

      【解决方案4】:
      set session value
      $request->session()->put('usertype', $exist[0]->user_type);
      
      get session value 
      @if(Session::get('variableName') == '1') // Got error in this line
                          <li>
                              <a href="{{ url('all-user') }}">
                                  <span>All User</span>
                              </a>
                          </li>
                          <li>
                              <a href="{{ url('create-user') }}">
                                  <span>Create User</span>
                              </a>
                          </li>
                      @endif
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多