会话有价值但无法识别

时间:2013-09-02 10:51:18

标签: php session laravel laravel-4

我想知道为什么Session似乎没有保留它的价值,但它实际上打印了它的价值? 我打印出Session的值,但是当我在另一个选项卡上访问同一页面时,它无法识别它有值。 当页面刷新时Session变为空...? 另一件事我不确定我在Log Out按钮中做了什么是正确的

这就是我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');
    }
}

这是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

uservalid.blade.php

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

感谢,

2 个答案:

答案 0 :(得分:0)

我添加了

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

{{ Session::flash('username', $username) }}
uservalid.php中的

因此,当刷新页面时,它显示相同的页面(这是正确的),并且当页面在新窗口中打开时,它不会注销或现在不像之前的任何内容

虽然对我来说似乎有点......任何建议/ s?

答案 1 :(得分:0)

真的,您应该使用Auth类来做这样的事情,你会发现它会为你处理所有与会话相关的身份验证。