Session has value but is not recognised

不问归期 提交于 2020-01-07 07:43:18

问题


I was wondering why does the Session doesn't seem to remain it's value but it actually prints its value? I print out the the value of the Session but when I access the same page on a different tab it doesn't recognize that it has a value. Also when the page is refreshed Session becomes null...? And another thing I'm not sure if what I did in the Log Out button is correct

This is what I have in my LogInController.php

<?php

class LogInController extends BaseController {
    public function actionLogIn() {
        $username = Input::get('username');
        $password = Input::get('password');
        if(($username == 'batman' and $password == '12345') or ($username == 'robin' and $password == '54321')){
            Session::put('username', $username);
            return Redirect::route('welcome')
                ->with('username', $username)
                ->with('title', 'Welcome!');

        }else {
            Session::flush();
            return Redirect::to('login')
                ->with('asterisk', 'Invalid username or password')
                ->with('title', 'Login');
        }
    }
    public function actionLogOut() {
        Session::flush();
        return View::make('login.formlogin')
            ->with('title', 'Login');
    }
}

Here's routes.php

Route::get('/', function()
    { return View::make('hello'); });

Route::get('login', array('as' => 'login', function ()
    { return View::make('login.formlogin')
        ->with('title', 'Login'); 
    }));

Route::post('login', array('uses'=>'LogInController@actionLogIn'));

Route::get('error', array('uses'=>'LogInController@actionLogOut'));

Route::get('welcome', array('as' => 'welcome', function ()
    { return View::make('login.uservalid'); }));

formlogin.blade.php

@extends('login.login')
@section('content')
    <h3>Login</h3>
    {{ Form::open(array('method'=>'post')) }}
        <div id="asterisk">{{ Session::get('asterisk') }}</div>
        {{ Form::label('username', 'Username:') }}
        {{ Form::text('username') }}<br/>
        {{ Form::label('password', 'Password:') }}
        {{ Form::password('password') }}<br/>
        {{ Form::submit('Log In') }}
    {{ Form::close() }}
@endsection

uservalid.php

@extends('login.layouts')
@section('content')


    {{ Form::open(array('method'=>'get')) }}
        welcome
        {{ Session::get('username') }}
        <br/>
        {{ Form::submit('Log Out') }}
    {{ Form::close(0) }}

@endsection

layouts.blade.php for uservalid.blade.php

<html>
<header>
    <title></title>
</header>
<body>
    @if(Session::has('username'))
        @yield('content')
    @else
        nothing to do here
    @endif
</body>
</html>

thanks,


回答1:


I added

<?php
$username = Session::get('username');
?>

and

{{ Session::flash('username', $username) }}

in uservalid.php so when page is refreshed it display the same page (which is correct) and also when page is open in new window, it doesn't log out or anything now unlike before

it kinda seem iffy to me though .. any suggestion/s ?




回答2:


Really, you should probably be using the Auth class for something like this, you'll find it handles all the session-related authentication stuff for you.



来源:https://stackoverflow.com/questions/18571443/session-has-value-but-is-not-recognised

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!