PHP自從5.3後彷佛又熱度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已是4.3 基本的結構這裏不講, 要了解能夠在這裏看文檔 http://v4.golaravel.com/docs/4.2 , 下面只是記錄一下身份驗證的實現過程php
/***********************
* 註冊 登陸 登出 路由
***********************/
Route::get('home/login', function(){
return View::make('home.login');
});
Route::post('home/login', 'HomeController@login');
Route::get('home/register', function(){
return View::make('home.register');
});
Route::post('home/register', 'HomeController@register');
Route::get('home/logout', function(){
Auth::logout();
return Redirect::intended('/');
});
Laravel提供了一個MVC的機制,使用Eloquent ORM來處理數據庫操做, 這裏路由定義了HomeController控制器類裏面的兩個Action方法,一個是home/login, 一個是home/register, 分別處理來自 login.blade.php 和 register.blade.php裏頁面裏的提交的數據。 離開動做home/logout沒有使用控制器的動做, 而是直接用Auth類的方法Auth::logout,而後跳轉到網站根目錄laravel
下面是register.blade.php頁面的內容, 咱們看到比較簡單,使用了Blade模板,就是一個Form,提交地址,和一些表格元素。 數據庫
@extends('home.master')
<h1>註冊頁面</h1>
@section('content')
{{ Form::macro('br', function(){
return '<br/>';
})
}}
{{ Form::open(array('action' => 'HomeController@register', 'method'=>'post')) }}
{{
Form::label('name','姓名')." ".Form::text('name').Form::br().
Form::label('email','郵箱')." ".Form::text('email').Form::br().
Form::label('password','密碼')." ".Form::password('password').Form::br().
Form::label('confirm_pass','確認密碼')." ".Form::password('confirm_pass').Form::br().
Form::br().Form::submit('肯定')
}}
{{ Form::close() }}
@endsection
下面也相似的是login.blade.php頁面的內容 app
@extends('home.master')
<h1>登陸頁面</h1>
@section('content')
{{ Form::macro('br', function(){
return '<br/>';
})
}}
{{ Form::open(array('action' => 'HomeController@login', 'method'=>'post')) }}
{{
Form::label('email','郵箱')." ".Form::text('email').Form::br().
Form::label('password','密碼')." ".Form::password('password').
Form::submit('登陸')
}}
{{ Form::close() }}
@endsection
而後提交後,根據路由規則,就來到HomeController控制器的 register() 方法和 login() 方法來處理框架
<?php
class HomeController extends BaseController {
public function index()
{
$page = Input::get('page',1);
$perPage = 5;
$offset = ($page*$perPage)-$perPage;
$all= User::all()->toArray();
$vars['users'] = User::skip($offset)->take($perPage)->get();
$vars['paginate'] = Paginator::make($all, count($all) , $perPage);
return View::make('home.index', $vars);
}
public function register()
{
$user = new User();
$user->fill( Input::all());
$user->password = Hash::make($user->password);
$user = User::create($user->toArray());
if($user->id)
{
if(Auth::loginUsingId($user->id))
{
echo "Login success";
}
return Redirect::intended('/');
}
}
public function login()
{
$email = Input::get('email');
$password = Input::get('password');
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
return Redirect::intended('/');
}
else
{
return 'Login failed!'.Link_to('home/login');
}
}
}
這三個方法有點複雜,之後在寫。 post