laravel part 4

這篇會展是簡單的登入檢查、登入的Session建立、登出,這三個;主要是會使用到一些簡單的routelaravel的驗證、Session的建立。廢話不多說,往下看吧。

首先建立一個簡單的view用來查看目前登入狀態,建立的路徑是app/views/show/index.blade.php,我刻意多開了一個show資料夾。

1
2
3
4
app
⌞views
⌞show
⌞index.blade.php

show/index.blade.php的code如下(這邊可以先忽略變數怎麼來的…往下看你就可以知道了):

再來就是增加route的設定,開啓routes.php,加入下面的code:

routes.php
1
2
3
4
5
6
7
8
// 登入
Route::post('login', ['uses' => 'HomeController@doLogin']);

// 登出
Route::get('logout', ['uses' => 'HomeController@doLogout']);

// show
Route::get('show', ['uses' => 'HomeController@show']);

這邊我都香要使用的方法都寫在HomeController內。因此會依據網址的不同執行HomeController內對應的方法。

HomeController.php加入的code如下,解釋我都寫在註解上了。

HomeController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// 登入
public function doLogin()
{
// 驗證規則
$rules = array(
'email' => 'required|email', // 必填欄位,email格式
'password' => 'required|alphaNum|min:3' // 必填欄位,必須是字母或數字,不得小於3位
);

// 驗證
$validator = Validator::make(Input::all(), $rules);

// 規則驗證失敗
if ($validator->fails()) {

// 回到首頁,並回傳錯誤訊息,與所有輸入的欄位,除了密碼
return Redirect::to('/')
->withErrors($validator)
->withInput(Input::except('password'));
}
else {
$userdata = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);

// 與資料庫驗證
if (Auth::attempt($userdata)) {

// 驗證成功,並增加一個session key value值
Session::put('login_success', 1);

// 導向show/index.blade.php
return Redirect::to('/show');
}
else {
return Redirect::to('/');
}
}
}

public function doLogout()
{
Auth::logout();

// 刪除登入成功的key 值
Session::forget('login_seuccess');
return Redirect::to('/');
}

public function show()
{
// 取得所有session的資料
$all_session_data = Session::all();
$data['all_session_data'] = $all_session_data;

if ( Session::has('login_success') && Auth::check() ) {
$data['login_status'] = 'success';
}
else {
$data['login_status'] = 'failure';
}

// 這邊可以注意$data的login_status這個key值
// 跟 show/index.blade.php 使用的變數做對應
$view = View::make('show.index', $data);
return $view;
}

如果登入成功的話,可以看到登入成功的訊息