FuelPHP・ユーザー管理6:ログイン後のページ(現在、ログイン中か否か)
2014/07/27
FuelPHPでユーザー管理をやりたい6。現在、ログイン中なのか未ログインの状態なのか表示したい。
基本
今回は、トップページに「ログイン前」「ログイン済み」を表示させ、ログアウト・ログインページへのリンクを設置する。
コントローラーの修正
ログイン済みか未ログインかのチェックをするためにaction_index()の編集。
これで「http://○○○/」にアクセスした際にログイン済みか未ログインか判定が可能。今回は単純にテンプレートを切り替える。
fuel/app/classes/controller/home.php
<?php
class Controller_home extends Controller {
public function action_index() {
$view = View::forge(‘home/index’);
if(!Auth::check()) {
// 認証していない場合
// リダイレクトさせる場合:ログインページへ移動
// Response::redirect(‘sample1/login’);
// 「ログイン前」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login_no”);
}
else {
// 「ログイン後」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login”);
}
return $view;
}
public function action_404() {
return Response::forge(View::forge(‘home/404’), 404);
}
}
class Controller_home extends Controller {
public function action_index() {
$view = View::forge(‘home/index’);
if(!Auth::check()) {
// 認証していない場合
// リダイレクトさせる場合:ログインページへ移動
// Response::redirect(‘sample1/login’);
// 「ログイン前」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login_no”);
}
else {
// 「ログイン後」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login”);
}
return $view;
}
public function action_404() {
return Response::forge(View::forge(‘home/404’), 404);
}
}
※ログイン前か済みか、ログイン前ならログインページへのリンク・ログイン済みならログアウトのリンクを記載。
ビューの編集(トップページ)
fuel/app/views/home/index.php
<!DOCTYPE HTML>
<html>
<head>
<meta charset=”utf-8″>
<title>FuelPhpのトップ</title>
</head>
<body>
FuelPhpのトップ<br />
<br />
<div>
▼現在のログイン状況<br />
<?php echo $htmlChkLogin; ?>
</div>
</body>
</html>
<html>
<head>
<meta charset=”utf-8″>
<title>FuelPhpのトップ</title>
</head>
<body>
FuelPhpのトップ<br />
<br />
<div>
▼現在のログイン状況<br />
<?php echo $htmlChkLogin; ?>
</div>
</body>
</html>
ビューの編集(トップページ:ログイン済みのパーツ)
fuel/app/views/home/chk_login.php
<p>ログイン済み</p>
<p><a href=”logout”>ログアウト</a></p>
<p><a href=”logout”>ログアウト</a></p>
※「ログイン済み」なら「ログアウト」ページのリンクを付け加える。(※「http://○○○/logout」へのリンクになるので後でルーティングの設定が必要)
ビューの編集(トップページ:未ログインのパーツ)
fuel/app/views/home/chk_login_no.php
<p>ログイン前</p>
<p><a href=”sample1/login”>ログイン</a></p>
<p><a href=”sample1/login”>ログイン</a></p>
※「未ログイン」なら「ログイン」ページへのリンクを付け加える。
ログアウトページ(ルーティング)の修正
「http://○○○/logout」を設定する(コントローラーで「fuel/app/classes/controller/logout.php」を用意するってのもアリ)
fuel/app/config/routes.php
<?php
return array(
‘_root_’ => ‘home/index’, // The default route
‘_404_’ => ‘home/404’, // The main 404 route
‘index’ => ‘home/index’,
‘logout’ => ‘home/logout’,
//’hello(/:name)?’ => array(‘welcome/hello’, ‘name’ => ‘hello’),
);
return array(
‘_root_’ => ‘home/index’, // The default route
‘_404_’ => ‘home/404’, // The main 404 route
‘index’ => ‘home/index’,
‘logout’ => ‘home/logout’,
//’hello(/:name)?’ => array(‘welcome/hello’, ‘name’ => ‘hello’),
);
ログアウトページ(コントローラー)の修正
※「action_logout()」を追加
fuel/app/classes/controller/home.php
<?php
class Controller_home extends Controller {
public function action_index() {
$view = View::forge(‘home/index’);
if(!Auth::check()) {
// 認証していない場合
// リダイレクトさせる場合:ログインページへ移動
// Response::redirect(‘sample1/login’);
// 「ログイン前」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login_no”);
}
else {
// 「ログイン後」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login”);
}
return $view;
}
public function action_404() {
return Response::forge(View::forge(‘home/404’), 404);
}
public function action_logout() {
$view = View::forge(‘home/logout’);
// ログアウト
Auth::logout();
//ログアウト画面の表示
return $view;
}
}
class Controller_home extends Controller {
public function action_index() {
$view = View::forge(‘home/index’);
if(!Auth::check()) {
// 認証していない場合
// リダイレクトさせる場合:ログインページへ移動
// Response::redirect(‘sample1/login’);
// 「ログイン前」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login_no”);
}
else {
// 「ログイン後」のレイアウトを読み込む
$view->htmlChkLogin = View::forge(“home/chk_login”);
}
return $view;
}
public function action_404() {
return Response::forge(View::forge(‘home/404’), 404);
}
public function action_logout() {
$view = View::forge(‘home/logout’);
// ログアウト
Auth::logout();
//ログアウト画面の表示
return $view;
}
}
ビューの追加
fuel/app/views/home/logout.php
<!DOCTYPE HTML>
<html>
<head>
<meta charset=”utf-8″>
<title>FuelPhpのトップ:ログアウト</title>
</head>
<body>
<p>ログアウトしました</p>
<p><a href=”sample1/login”>ログインページへ</a></p>
</body>
</html>
<html>
<head>
<meta charset=”utf-8″>
<title>FuelPhpのトップ:ログアウト</title>
</head>
<body>
<p>ログアウトしました</p>
<p><a href=”sample1/login”>ログインページへ</a></p>
</body>
</html>