2

たとえば、header.tpl と footer.tpl があり、その間に body.tpl があるとします。

特定のセッションが次のように設定されているかどうかを確認して、body.tpl へのアクセスを制限したいとします。

session_start();
if (isset($_SESSION['limited'])) {
  //render body.tpl
} else {
  //direct somewhere else
}

session_start(); if (isset()) {部品が header.tpl にあり、部品がfooter.tpl ファイルにある場合、これ} else {}は機能しますか?

私の計画は、すべてのページに含まれるヘッダーとフッターでセッション チェックを行うことです。そのため、テンプレートをレンダリングする PHP ファイルでそれを行う必要はありません。

このように(body.tplの内容):

<?php require_once(TEMPLATE_PATH. "/header.tpl"); ?>
//body.tpl contents
<?php require_once(TEMPLATE_PATH. "/footer.tpl"); ?>

body.tpl は PHP ファイルを介して呼び出されrequires、必要なすべてのファイルが含まれ、tpl ファイルに入力するために使用されるすべてのクラスがインスタンス化されます。PHPファイルでセッションチェックを行うと、意図したとおりに機能します。

4

2 に答える 2

0

リクエストの実行中に、任意のPHPコードから$_SESSIONオブジェクトにアクセスできます。session_startを1回だけ呼び出すようにしてください。

ps。このアプローチはコードの重複をもたらし、後悔するでしょう。

于 2013-03-07T11:41:55.790 に答える
0

テンプレート エンジンを使用した方がよいでしょう ( http://www.smarty.net/を試してください) 。

これだけでなく、さらに多くのことを非常に簡単に行うことができます。これらの線に沿って何かを行うことができます。

ページ foo.tpl を表示したいと仮定します。他に 2 つのスマート テンプレート 1. header.tpl 2. footer.tpl があります。

foo.tpl は次のようになります

{include file="header.tpl"}

{$foo}

{include file="footer.tpl"}

次に、phpページで、必要なロジックを実行し、出力を変数にロードします

$smarty-assign('foo',$my_content);
$smarty->display( "foo.tpl" );

これは foo.tpl をレンダリングし、header.tpl と footer.tpl の内容を $foo とともに含めます。

于 2013-03-07T11:47:13.047 に答える