$ _SESSION的“未定义索引:用户类型”错误

时间:2019-02-18 05:54:07

标签: php laravel session routes

尽管我在Laravel项目中设置了会话索引,但还是出现了错误

  

未定义索引:用户类型

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

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

控制器

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

4 个答案:

答案 0 :(得分:2)

如果您使用的是laravel,则只需使用以下laravel会话方法,

<uses-permission android:name="android.permission.INTERNET"/>

答案 1 :(得分:1)

您的问题中有很多要强调的地方:

  • 您应该使用Hash::门面作为密码,而不是简单的md5
  • 已选中登录名,您可以使用Auth::attempt()来维持用户会话,直到用户注销,或者您致电Auth::logout()参见this博客文章以了解更多信息 li>
  • 要在Laravel中处理sessions,laravel提供了多种管理session密钥的方式,因此您不必直接使用$_SESSION。像$request->session()->get('usertype')session()->get('usertype')SESSION::get('usertype')
  • 此外,在直接引用会话密钥之前,最好检查它是否存在。 Laravel的任何会话实现均随附has('key'),如果您要求的key是否存在于会话中,则返回布尔值。

例如:

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

答案 2 :(得分:1)

在控制器中调用Session Facade或使用$request->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

答案 3 :(得分:1)

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