Ошибка «Неопределенный индекс: тип пользователя» для $ _SESSION - PullRequest
0 голосов
/ 18 февраля 2019

Я получаю сообщение об ошибке, хотя я установил индекс сеанса в своем проекте Laravel

Неопределенный индекс: usertype

При входе пользователя в систему я установил $_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

Ответы [ 4 ]

0 голосов
/ 18 февраля 2019
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
0 голосов
/ 18 февраля 2019

В вашем вопросе есть несколько моментов, которые нужно выделить:

  • Вам следует использовать Hash:: фасад для паролей, а не простой md5
  • Проверено для входа в систему выможно использовать Auth::attempt(), который также поддерживает пользовательский сеанс до тех пор, пока пользователь не выйдет из системы, или вы не позвоните Auth::logout() См. это сообщение в блоге, чтобы узнать больше о том же
  • Для работы с sessionsLaravel, 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
0 голосов
/ 18 февраля 2019

В вашем контроллере вызовите Session Фасад или используйте $request->session().Здесь я использую Session Фасад.

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
0 голосов
/ 18 февраля 2019

Если вы используете 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...