2014-12-17 3 views
1

내 템플릿 시스템은 Smarty 라이브러리를 사용합니다. 모든 양식에는 CSRF로부터 보안을 위해 해시 (토큰)가 숨겨진 입력이 있습니다. 이로 인해 Smarty는 새로 고침 할 때마다 페이지를 컴파일합니다.Smarty 컴파일 템플릿 PHP

입력이나 양식 또는 코드를 컴파일하지 않도록 Smarty에 알리는 방법은 무엇입니까?

감사합니다.

답변

0

Smarty가 모든 템플릿을 컴파일합니다. 이것이 작동하는 방식입니다. Smarty에게 템플릿을 컴파일하지 말라고 말할 수는 없습니다. Smarty는 템플릿을 컴파일하지만 템플릿에서 변수를 사용하면 변수가 사용되므로 CSRF 토큰이 가변적이면 컴파일 된 템플릿에 저장되지 않습니다.

그러나 아마도 캐싱에 대해 이야기하고있을 것입니다. 이 문제를 해결하거나 문제를 이해하는 데 도움이되는 몇 가지 코드를 게시하려면 캐싱 설정을 살펴 봐야합니다.

+0

나는 템플릿 안에 {include}로 템플릿을 사용합니다. 포함 된 템플릿에서 나는 vars를 사용합니다. 그것을 표시하면 포함 된 템플릿없이 첫 번째 템플릿 만 컴파일 한 후 코드가 표시됩니다. 내가하는 일보다 $ smarty-> fetch 두 번. 하지만 첫 번째 템플릿의 변수는 문자열이 아니고 더 이상 변수가 아닙니다. 어떻게 해결할 수 있을까요? 고맙습니다. –

+0

@Upimform 당신이 성취하려는 것을 모르지만 이것은 fetch 기능이 작동하는 방법입니다. 디스플레이와 동일하게 작동하지만 파싱 된 템플릿을 반환하기 때문에 표시하지 않고 문자열에 저장할 수 있습니다. 아무것도 더. –