>  기사  >  웹 프론트엔드  >  Shtml 간소화된 튜토리얼_HTML/Xhtml_웹페이지 제작

Shtml 간소화된 튜토리얼_HTML/Xhtml_웹페이지 제작

WBOY
WBOY원래의
2016-05-16 16:42:152007검색

shtml과 asp 사이에는 몇 가지 유사점이 있습니다. shtml이라는 파일에는 asp의 지침과 마찬가지로 일부 SSI 지침이 사용됩니다. 클라이언트가 이러한 shtml 파일에 액세스할 때 SSI 지침을 작성할 수 있습니다. 서버는 이러한 SHTML 파일을 읽고 해석하며 SHTML 파일에 포함된 SSI 명령어를 해석합니다. 예를 들어 SHTML 파일의 SSI 명령어를 사용하여 다른 HTML 파일(#include)을 참조할 수 있으며 서버는 이를 클라이언트에 보냅니다. . 이미 SHTML로 해석된 파일에는 SSI 지시어가 없습니다. HTML이 가지고 있지 않은 기능, 즉 HTML의 진화라고 할 수 있는 동적인
을 구현할 수 있는 SHTML을 구현한 것입니다. 시나의 뉴스 시스템은 이렇습니다. 뉴스 내용은 고정되어 있지만 그 안에 있는 광고와 메뉴는 #include를 사용하여 참조됩니다.
현재 주로 다음과 같은 용도로 사용됩니다.
1. 서버 측 환경 변수 표시
2. 문서에 직접 텍스트 내용 삽입
3. 정보
(예: 파일 생성 날짜/크기 등) 4. 서버에서 다양한 프로그램을 직접 실행
(예: CGI 또는 기타 실행 프로그램) 5. 정보 표시 형식
(예: 파일 생성 날짜/크기 표시 방법) 고급 SSI
는 if 조건문을 사용하여 변수를 설정할 수 있습니다.
SSI 사용
SSI는 웹 서버용으로 제공되는 명령 집합입니다. 이러한 명령은 HTML 문서의 주석 내용에 직접 삽입하기만 하면 됩니다. 예를 들면 다음과 같습니다.

은 SSI 명령입니다. 해당 기능은 방문자가 탐색할 때 다른 HTML 문서처럼 표시되는 정보를 "info.htm"의 내용으로 복사하는 것입니다. .htm 콘텐츠.
다른 SSI 명령어의 사용 형태는 기본적으로 지금의 예시와 동일하며 약간의 코드만 삽입하면 사용 형태가 매우 간단하다는 것을 알 수 있습니다.
물론 웹 서버가 SSI를 지원하지 않는 경우에는 이를 주석 정보로 처리하고 콘텐츠를 직접 건너뛰며 브라우저도 이 정보를 무시합니다.

웹 서버에서 SSI 기능을 어떻게 구성하나요?
일부 웹 서버(예: IIS 4.0/SAMBAR 4.2)에서 #include 지시어가 포함된 파일은 SSI 인터프리터에 매핑된 확장자를 사용해야 합니다. 그렇지 않으면 웹 서버가 기본적으로 SSI 지시어를 처리하지 않습니다. 확장자 .stm, .shtm 및 .shtml은 인터프리터(Ssinc.dll)에 매핑됩니다.
Apache는 설정에 따라 다릅니다.
AddType text/x-server-parsed-html .shtml은 .shtml 확장자를 가진 파일에 대한 SSI 지침만 구문 분석합니다.
AddType text/x- server-parsed-html .html은 모든 HTML 문서에 대한 SSI 지침을 구문 분석합니다.
Netscape 웹 서버는 관리 서버를 직접 사용하여 SSI 기능을 활성화할 수 있습니다.
웹사이트는 Server Admin 프로그램에서 매핑 태그를 사용하며 확장에 추가된 콘텐츠 유형은 wwwserver/html-ssi
Cern 서버는 SSI를 지원하지 않습니다. SSI 사기 방법을 사용할 수 있습니다. http로 이동하세요. //sw.cse.bris. ac.uk/WebTools/fakessi.html에서 PERL 스크립트를 다운로드하여 CERN 서버가 일부 SSI 명령을 사용하도록 하세요. (exec 명령은 지원하지 않습니다.)

SSI 명령 기본 형식
SSI 명령 기본 형식:
프로그램 코드:



예:
프로그램 코드:



지침:
1.
은 HTML 구문의 주석입니다. 웹 서버가 SSI를 지원하지 않는 경우 이 정보는 무시됩니다. 2. #include는 SSI 지시문 중 하나입니다.
3. file은 include의 매개변수이고 info.htm은 이 명령에서 포함할 문서의 이름을 나타내는 매개변수 값입니다.

참고:

1.


문서 이름: 프로그램 코드:



현재 시간: 프로그램 코드:



귀하의 IP 주소는 프로그램 코드:




#include 데모
기능:
텍스트 파일의 내용을 문서 페이지에 직접 삽입합니다.
구문:
프로그램 코드:





file 파일 이름은 상대 경로입니다. 경로는 #include 지시어를 사용하는 문서가 포함된 디렉터리에 상대적입니다. 포함된 파일은 동일한 수준 디렉터리나 하위 디렉터리에 있을 수 있지만 상위 수준 디렉터리에는 있을 수 없습니다. 예를 들어 현재 디렉터리의 nav_head.htm 문서를 나타내는 경우 file="nav_head.htm"입니다.
가상 파일 이름은 웹 사이트에 있는 가상 디렉터리의 전체 경로입니다. 예를 들어 서버 문서 루트 디렉터리 아래의 hoyi 디렉터리에 있는 nav_head.htm 파일을 나타냅니다. file="/hoyi/nav_head.htm"
매개변수:
file은 포함된 파일의 상대 위치를 지정합니다. 이 문서에
virtual은 서버 문서 루트 디렉터리에 상대적인 위치를 지정합니다
참고:
1. 파일 이름에는 확장자가 있어야 합니다.
2. 포함된 파일은 어떤 파일 확장자를 가질 수 있습니다. htm 확장자를 직접 사용하는 것이 가장 편리하다고 생각합니다. (기본 설정에 따라 다름) Microsoft에서는 .inc 확장자를 사용하는 것을 권장합니다.



예:
프로그램 코드:





현재 페이지에 헤더 파일 삽입
현재 페이지에 tail 파일 삽입
현재 페이지에 헤더 파일 삽입
현재 페이지에 tail 파일 삽입

#flastmod and #fsize 데모
기능: #flastmod 파일 마지막 업데이트 날짜
#fsize 파일 길이
구문:
프로그램 코드:





매개변수:
file은 이 문서와 관련하여 포함된 파일의 위치를 ​​지정합니다. 예를 들어 info.txt는 현재 디렉터리의 info.txt 문서를 나타냅니다.
virtual은 지정합니다. 서버 문서 루트 디렉토리에 상대적인 위치 /hoyi/info.txt와 같은 위치는
참고:
파일 이름에 확장자가 있어야 함을 의미합니다.
예:
프로그램 코드:



현재 디렉토리에 있는 news.htm 파일의 최신 업데이트 날짜를 현재 페이지에 삽입
프로그램 코드:



현재 디렉터리에 있는 news.htm의 파일 크기를 현재 페이지에 삽입

#exec 데모
기능:
외부 프로그램의 출력을 페이지에 삽입합니다. 사용된 매개변수가 cmd인지 cgi인지에 따라 CGI 프로그램에 삽입하거나 일반 응용 프로그램에 입력으로 삽입할 수 있습니다.
구문:
프로그램 코드:





매개변수:
cmd 일반 애플리케이션
cgi CGI 스크립트 프로그램
예:
프로그램 코드:

비밀번호 파일을 표시합니다
현재 디렉토리의 파일 목록을 표시합니다
CGI 프로그램 gb.cgi가 실행됩니다.
CGI 프로그램 access_log.cgi가 실행됩니다.
암호 파일이 표시됩니다.
현재 디렉토리의 파일 목록이 표시됩니다.
CGI 프로그램 gb.cgi가 실행됩니다.
CGI 프로그램 access_log.cgi가 실행됩니다.
참고:
위의 예에서 볼 수 있듯이 이 명령은 매우 편리하지만 보안 문제도 있습니다.
금지방법:
. Apache의 경우 access.conf
에서 "Options Contains ExecCGI" 줄을 삭제하세요. IIS에서 #exec 명령을 비활성화하려면 SSIExecDisable 메타베이스를 수정할 수 있습니다.
#config
기능: 클라이언트 브라우저에 반환되는 오류 정보, 날짜 및 파일 크기의 형식을 지정합니다.
구문:
프로그램 코드:







매개변수:
errmsg 원하는 방식으로 SSI 실행 오류 메시지를 사용자 정의합니다.
sizefmt 파일 크기 표시 모드. 기본값은 바이트 모드("bytes")이며 킬로바이트 모드("abbrev")로 변경될 수 있습니다.
timefmt 시간 표시 모드는 가장 유연한 구성 속성입니다.
예: 존재하지 않는 파일의 크기 표시
프로그램 코드:





천 단위 표시 파일 크기(바이트)



프로그램 코드:








특정 시간 형식으로 시간 표시
프로그램 코드:


요일, 월, 시간 표시 오늘은 zone



오늘의 요일, 월, 시간대 표시는



XSSI
XSSI(확장 SSI)는 Apache 1.2 이상의 mod-include 모듈에 내장된 고급 SSI 지시문 세트입니다.
사용 가능한 지침은 다음과 같습니다.
#printenv
#set
#if
#printenv
기능: 현재 웹 서버 환경에 존재하는 모든 환경 변수를 표시합니다.
구문: 프로그램 코드:



매개변수: 없음
예:
프로그램 코드:




#set
기능: 후속 if 문에서 사용할 변수에 값을 할당할 수 있습니다.
구문: 프로그램 코드:



매개변수: 없음
예: 프로그램 코드:




#if
기능: 데이터를 변경할 수 있는 페이지를 생성합니다. if 문을 사용할 때 계산된 요구 사항에 따라 데이터가 표시됩니다.
구문: 프로그램 코드:


콘텐츠 표시

콘텐츠 표시

콘텐츠 표시


콘텐츠 표시

콘텐츠 표시

콘텐츠 표시

예:
프로그램 코드:


서버 보안 토론 포럼 http://www.31896.net/에 오신 것을 환영합니다.

Fineacer 컴퓨터 네트워크 보안 온라인 http://www.fineacer.org/에 오신 것을 환영합니다.

서버 보안 토론 포럼에 오신 것을 환영합니다!


서버 보안 토론 포럼 http://www.31896.net/에 오신 것을 환영합니다.

Fineacer 컴퓨터 네트워크 보안 온라인 http://www.fineacer.org/에 오신 것을 환영합니다.

서버 보안 토론 포럼에 오신 것을 환영합니다!

참고: 이전 지시문에 사용된 백슬래시는 내부 따옴표를 대체하는 데 사용되므로 표현식을 종료하는 것으로 해석되지 않습니다. 생략할 수 없습니다.


1. Config 명령

Config 명령은 주로 SSI의 기본 설정을 수정하는 데 사용됩니다. 그중에는:

Errmsg: 기본 오류 메시지를 설정합니다. 사용자가 설정한 오류 메시지를 정상적으로 반환하려면 Errmsg 매개변수를 HTML 파일의 다른 SSI 명령 앞에 배치해야 합니다. 그렇지 않으면 클라이언트는 사용자가 설정한 사용자 정의 메시지 대신 기본 오류 메시지만 표시할 수 있습니다.



Timefmt: 날짜 및 시간에 사용되는 형식을 정의합니다. Timefmt 매개변수는 echo 명령 전에 사용해야 합니다.






결과는 다음과 같습니다.

2000년 4월 12일 수요일

아마도 사용자는 위의 예에서 사용된 %A %B %d에 매우 익숙하지 않습니다. 아래에서는 SSI에서 가장 일반적으로 사용되는 날짜 및 시간 형식을 표 형식으로 요약합니다.

Sizefmt: 파일 크기를 바이트, 킬로바이트 또는 메가바이트로 표시할지 결정합니다. 바이트 단위인 경우 매개변수 값은 "바이트"입니다. 킬로바이트 및 메가바이트에는 약어를 사용할 수 있습니다. 마찬가지로 sizefmt 매개변수는 사용할 fsize 명령 앞에 배치되어야 합니다.




2. 포함 명령

포함 명령은 현재 구문 분석된 문서에 다른 문서의 텍스트나 이미지를 삽입할 수 있습니다. 전체 SSI의 열쇠입니다. 포함 명령을 사용하면 파일 하나만 변경하면 전체 사이트가 즉시 업데이트됩니다!

Include 명령에는 두 가지 매개 변수가 있습니다.

Virtual: 서버측 문서에 대한 가상 경로를 제공합니다. 예:



파일: 현재 디렉터리에 대한 상대 경로를 제공합니다. 여기서 "../"는 사용할 수 없으며 절대 경로는 사용할 수 없습니다. 예:



이렇게 하려면 각 디렉터리에 header.html 파일이 있어야 합니다.

3. Echo 명령

Echo 명령은 다음 환경 변수를 표시할 수 있습니다.

DOCUMENT_NAME: 현재 문서의 이름을 표시합니다.



표시된 결과는 다음과 같습니다.

index.html

DOCUMENT_URI: 현재 문서의 가상 경로를 표시합니다. 예:



표시된 결과는 다음과 같습니다.

/YourDirectory/YourFilename.html

웹사이트가 계속 발전함에 따라 URL 주소가 점점 길어지면 사람들이 머리를 아프게 할 것입니다. . SSI를 사용하면 모든 것이 해결됩니다. 웹사이트의 도메인 이름과 SSI 명령을 결합하여 전체 URL을 표시할 수 있기 때문입니다. 즉,

http://yourdomain

QUERY_STRING_UNESCAPED: 이스케이프되지 않은 URL을 표시합니다. 클라이언트가 보낸 쿼리 문자열의 경우 모든 특수 문자 앞에는 이스케이프 문자 ""가 옵니다. 예:



DATE_LOCAL: 서버에서 설정한 시간대에 따라 날짜와 시간을 표시합니다. 사용자는 config 명령의 timefmt 매개변수를 결합하여 출력 정보를 사용자 정의할 수 있습니다. 예:


 

표시된 결과는 다음과 같습니다.

2000년 4월 15일 토요일

DATE_GMT: 그리니치 표준시를 기준으로 날짜를 반환한다는 점을 제외하면 함수는 DATE_LOCAL과 동일합니다. 예:



LAST_MODIFIED: 현재 문서의 마지막 업데이트 시간을 표시합니다. 마찬가지로 이는 SSI의 매우 실용적인 기능입니다. 다음과 같은 간단한 텍스트 줄을 HTML 문서에 추가하면 업데이트 시간이 페이지에 동적으로 표시될 수 있습니다.



CGI 환경 변수

SSI 환경 변수 외에도 echo 명령은 다음 CGI 환경 변수도 표시할 수 있습니다.

SERVER_SOFTWARE : 서버 소프트웨어의 이름과 버전을 표시합니다. 예:

SERVER_NAME: 서버의 호스트 이름, DNS 별칭 또는 IP 주소를 표시합니다. 예:

SERVER_PROTOCOL: HTTP/1.0과 같이 클라이언트 요청에 사용되는 프로토콜 이름과 버전을 표시합니다. 예:

SERVER_PORT: 서버의 응답 포트를 표시합니다. 예:

REQUEST_METHOD: GET, HEAD 및 POST를 포함한 클라이언트의 문서 요청 방법을 표시합니다. 예:

REMOTE_HOST: 요청된 정보를 발행한 클라이언트 호스트 이름을 표시합니다.

REMOTE_ADDR: 요청 정보를 발행한 클라이언트의 IP 주소를 표시합니다.

AUTH_TYPE: 사용자 신원 확인 방법을 표시합니다.

REMOTE_USER: 보호된 페이지에 접속한 사용자가 사용한 계정 이름을 표시합니다.




4. Fsize: 지정된 파일의 크기를 표시합니다. 출력 형식은 config 명령의 sizefmt 매개변수를 결합하여 사용자 정의할 수 있습니다.






5. Flastmod: 지정된 파일의 마지막 수정 날짜를 표시하며 config 명령의 timefmt 매개변수와 결합될 수 있습니다. 출력 형식을 제어합니다.




여기서 flashmod 매개변수를 사용하여 페이지에 링크된 모든 페이지의 업데이트 날짜를 표시할 수 있습니다. 방법은 다음과 같습니다.


파일

다른 파일

표시 결과:
2000년 4월 19일 파일
2000년 1월 8일 다른 파일

6. Exec

Exe 명령은 CGI 스크립트 또는 셸 명령을 실행할 수 있습니다. 사용법은 다음과 같습니다.

Cmd: /bin/sh를 사용하여 지정된 문자열을 실행합니다. SSI가 ContainsNOEXEC 옵션을 사용하는 경우 이 명령은 차단됩니다.

Cgi: CGI 스크립트를 실행하는 데 사용할 수 있습니다. 예를 들어, 다음 예에서는 서버의 cgi-bin 디렉토리에 있는 counter.pl 스크립트를 사용하여 각 페이지에 카운터를 배치합니다.

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.