1

ユーザーが一種の HTML テンプレート モジュールで独自の Smarty コードを使用できる追加のレイヤーを作成しましたが、確実に保存する必要があります。

これまでのところ、{php}-tags の使用を無効にしており、{$smarty.now}アクセスできるのは 1 つだけです。テンプレートに Smarty が存在するため、割り当てられたすべての変数をテンプレートに取得する方法があるかどうか疑問に思っています。もしそうなら、割り当てられたすべての変数のリストがどのように要求されているので、それをチェックして解析から除外することができます (つまり、ユーザーが送信した tpl-source を除外します)。

Smarty アクセスを「保護」/制限するために私が見落としているヘルプや貢献は大歓迎です。

4

2 に答える 2

1

まず第一に、強力すぎるものを採用し、それを制限するのは間違ったアプローチです。有名なことに、Java はブラウザ プラグインで何年にもわたって失敗しています。代わりに、本当に安全なソリューションが必要な場合は、ユーザーに提供する必要がある機能のみを備えた独自の小さなテンプレート エンジンを作成することをお勧めします。その場合、悪者による搾取の方法はありません。

于 2013-02-08T10:31:27.653 に答える
0

私があなたを正しく理解していれば、あなたが探しているのは$smarty->getTemplateVars();これで、割り当てられたテンプレート変数の名前/値の配列が得られます。

API ドキュメントからの引用:

名前

getTemplateVars() — 割り当てられた変数値を返す

説明

array getTemplateVars(string varname);

パラメータが指定されていない場合、割り当てられたすべての変数の配列が返されます。

例14.31。getTemplateVars

<?php
// get assigned template var 'foo'
$myVar = $smarty->getTemplateVars('foo');

// get all assigned template vars
$all_tpl_vars = $smarty->getTemplateVars();

// take a look at them
print_r($all_tpl_vars);
?>
于 2013-11-15T10:51:25.503 に答える