2010-05-24 1 views
1

새로운 전자 상거래 관련 PHP 응용 프로그램을 만드는 중입니다. 우리는 고객 요구에 맞게 템플릿을 어떻게 풀어야하는지 생각하기 시작했습니다.PHP 응용 프로그램을위한 템플릿 접근 방식

우리가하고자하는 것은 고객이 회사의 프로필에 맞게 템플릿을 업로드하거나 수정할 수있는 기능을 제공하는 것입니다. 초기 생각은 우리가 바퀴를 재발 명하지 않아 고객이 FTP를 사용하여 템플릿을 업로드하게하므로 기본적인 HTML 기술이 필요할 것입니다. 템플리트를 수정/사용자 정의하고자하는 고객에게 지식이있는 경우 해당 서비스도 제공합니다.

XSS를 예방하고 업로드 된 각 파일을 통해 잠재적 인 보안 위협 등을 검사하는 스크립트 작성과 같이 안전하다고 생각하기 전에 해결해야 할 여러 가지 문제가 있음을 알고 있습니다. 물론 고객이 스스로 수정할 수있는 복잡한 부분이 있으므로 프론트 엔드 응용 프로그램의 모든 < < 템플릿 파일에는이 방법이 적용되지 않을 수 있습니다.

하지만 그 외에, 이것을 처리하는 좋은 방법은 무엇입니까?

답변

1

당신은 도움이 TinyButStrong 템플릿 엔진을 살펴보고 찾을 수 있습니다.TBS는 템플릿 내부에 별도의 스크립트 언어를 구현하려고하지 않는다는 점에서 대부분의 다른 템플릿 엔진에서 차이가 있지만,

같은 장소 홀더 플러스 깨끗하게 대괄호 사이의 HTML 코드에서 분리되는 속성의 시스템을 사용
[blk.myfieldname;block=tr] 

이 매우 쉽게로 PHP 의존하는 코드가 템플릿에 어디 디자이너가 볼 수 있도록, Dreamweaver와 같은 WYSIWYG 도구를 사용하기 매우 간단한 시스템을 만드는 - 기본적으로 광장 안에 아무것도 만지지 마세요 ' 괄호 '

비록 꽤 나는 여러 프로젝트에 대한 작업을했습니다 자신과 같은 상황에서 어디 I'v을 완성 된 페이지는 기본 레이아웃으로 완벽하게 기능을 수행 한 다음 HTML 템플리트 (+ CSS)를 설계자에게 넘겨 준 후 디자이너에게 최종 사이트를 수정합니다. TBS가 제공하는 코드와 place-holder 변수가 명확하게 분리되어 있기 때문에이 접근 방식으로는 길을 잃지 않습니다. 템플릿 스크립팅 언어가 없기 때문에 보안 문제가 훨씬 더 많이 통제됩니다.

+0

안녕! 그것은 대담 해 보인다! 확실히 그것을 체크 할 것입니다. 그것은 확실히 시간을 절약 할 것입니다! 꽤 가벼운 것 같아요! – Industrial

+1

@Industrial - TBS는 아마도 난 여전히 PHP 작은 사이트를 만드는 주요 이유의 사실 절대 마법이다. 나는 Smarty, vLib 및 기타 템플릿 엔진을 사용하는 고객을 위해 다른 사이트를 선택하고 수정했으며 그 중 어느 것도 우아하고 깨끗한 유지 보수 가능 코드와 관련이 없습니다. 당신이 관찰 한대로 그것은 실제로 매우 가볍지 만, 동시에 내가 만든 수백 페이지에서 필요한 것을 할 수없는 것을 발견하지 못했습니다. 대개의 경우 코드베이스가 거의 필요하지 않습니다. 그러나 필요할 때이를 백업 할 수있는 충분한 깊이가 있습니다. – Cruachan

+0

좋은 물건, 지금까지 당신이 말한 것만큼이나 마술처럼 보입니다! 이것이 서브 템플릿을로드하기위한 적절한 방법입니까? "[onload; file = 'menu.htm']"? – Industrial

1

이미지, 색상, 글꼴, div 배치 등을 변경할 수 있기를 원한다면 고객이 CSS 파일을 편집하고 보안 문제를 해결할 수 있다고 생각했습니다.

2

php 또는 javascript를 웹 사이트에 통합하지 못하게해야합니다. 모든 이미지 업로드는 다른 형식으로 변환 한 다음 업로드시 다시 포맷해야합니다.

문제는 대부분의 편집자가 페이지 조각을 만들 수 없다는 것입니다. Samuel이 말했듯이 CSS를 편집하고 (자신의 그래픽 콘텐츠를 게시하는 것) 제한 할 수는 있지만 다소 제한적일 수 있습니다. 이 문제를 해결하기위한 한 가지 접근 방법은 ESI입니다.하지만 관련된 모든 사람들을 위해 기술에 대한 높은 수준의 기술이 필요합니다. 그리고 peolpe가 어려운 일을해서는 안되는 것을 막으려 고 시도합니다.

또 다른 방법은 일치하는 태그를 포함하고 HTML 이외의 위치/글꼴 정보가없는 HTML 조각 집합을 제공하고 고객이 콘텐츠를 삽입하는 자리 표시 자 집합을 HTML 페이지로 제공하게하는 것입니다. , 예. 고객이 제공

<html> 
<title>{%PAGE_TITLE%}</title> 
<link rel="stylesheet" href="{%STANDARD_CSS%}"> 
<link rel="stylesheet" href="{%CUSTOMER_CSS%}"> 
<script src="{%STANDARD_JS%}"></script> 
.... 

또 다른 방법은 온라인을 통해 - 더 - 웹 편집기로 고객을 제공하는 것입니다. 사용할 수있는 매쉬업 도구 중 일부를 살펴볼 수 있습니다. Radria.

HTH

C.