月別アーカイブ
検索

何回かに分けて、SmartyでPEAR::Auth を使うためのサンプルを説明しています。

今回は今まで作った Smarty や 認証用のクラスを使ったページを作ります。

index.php

<?php
require_once("define.inc");
require_once("MySmarty.php");
require_once("MyAuth.php");
$smarty  = new MySmarty();
$authobj = new MyAuth();

$authobj->start();
if (!$_POST[LOGOUT_BUTTON_NAME] && $authobj->getAuth()){
  /* この中は認証が必要 */

  /* テンプレート内で使用する変数を入れる */
  $smarty->assign('name',$authobj->getUsername());
  $smarty->assign('auth',$authobj);

  /* テンプレートを呼び出す */
  $smarty->display('index.tpl');
}
$authobj->end();
?>

5行目の $smarty は好きな名前にしてもいいですが、MyAuth.php で global として使用している個所も同じ変数名にしてください。

ログインしていなければ、8行目の start() メソッドの中で (MyAuth.php の )loginFunction が呼ばれ、ログイン画面が表示されます。

ログインしている時は、10~17行目を通ります。ここに、ユーザにだけ見せたいページを記述すればよいわけです。

今回は、Smarty のテンプレート(index.tpl)に渡すために、2つ(ただの文字列変数とクラスオブジェクト変数)を渡してみます。

index.tpl

<!DOCTYPE html> 
<html dir="ltr" lang="ja"> 
<head> 
<meta charset="UTF-8" /> 

{* defineで定義された定数を使う *}
<title>{$smarty.const.APPLICATION_TITLE_NAME}</title>

</head> 
<body>

{* $smarty->assign() で渡された変数を使う *}
<p> {$name} さん?</p>

{* $smarty->assign() で渡された変数のメンバ関数を使う *}
<p> {$auth->getUsername()} さんですよね!?</p>

{* Smary 予約変数を使う *}
<p> 今日は{$smarty.now|date_format:'%Y年%m月%d日'}です。</p>

<form method="post" action="{$smarty.server.PHP_SELF}">
  <input type="submit" name="{$smarty.const.LOGOUT_BUTTON_NAME}" value="ログアウト">
</form>

</body>
</html>

最後に、ログインしたユーザにだけ見せたいページのレイアウトです

index.php から渡された変数は、13行目や16行目のように使います。

21~23行目はログアウトボタンです。

関係ありそうな記事

コメント