SHTML dan ASP serupa. Dalam file yang dinamai SHTML, beberapa instruksi SSI digunakan, seperti instruksi di ASP. Anda dapat menulis instruksi SSI dalam file SHTML. Saat klien mengakses file SHTML ini,
Sisi server akan membaca dan menafsirkan file SHTML ini, dan menafsirkan instruksi SSI yang terkandung dalam file SHTML. Misalnya: Anda dapat menggunakan instruksi SSI untuk merujuk ke file HTML lainnya (#include) dalam file SHTML. File yang dikirim oleh server ke klien adalah bahwa SHTML yang sudah dijelaskan tidak memiliki instruksi SSI. Ini mengimplementasikan fungsi yang tidak dimiliki HTML, yaitu, dapat mengimplementasikan dinamika
SHTML dapat dikatakan sebagai evolusi HTML. Seperti sistem berita Sina, konten berita sudah diperbaiki, tetapi iklan dan menu di dalamnya dikutip dalam #include.
Saat ini, terutama ada penggunaan berikut:
1. Tampilkan variabel lingkungan sisi server <#echo>
2. Masukkan konten teks langsung ke dalam dokumen <#include>
3. Tampilkan Informasi Terkait Dokumen Web <#FlastMod> <#fsize> (seperti tanggal/ukuran pembuatan file, dll.)
4. Langsung menjalankan berbagai program di server <#exec> (seperti CGI atau program yang dapat dieksekusi lainnya)
5. Atur format tampilan informasi SSI <#Config> (seperti metode Tanggal Pembuatan File/Metode Tampilan Ukuran)
SSI tingkat lanjut <xssi> dapat mengatur variabel untuk digunakan jika pernyataan bersyarat.
Menggunakan SSI
SSI adalah seperangkat perintah yang disediakan untuk server web. Perintah -perintah ini hanya tertanam langsung ke dalam konten komentar dari dokumen HTML. menyukai:
<#include file = info.htm->
Ini adalah arahan SSI, yang digunakan untuk menyalin konten info.htm ke halaman saat ini. Ketika pengunjung menelusuri, ia akan melihat bahwa dokumen HTML lainnya menampilkan konten info.htm.
Bentuk penggunaan instruksi SSI lainnya pada dasarnya sama dengan yang disebutkan sekarang. Dapat dilihat bahwa penggunaan SSI hanya memasukkan sedikit kode, dan bentuk penggunaannya sangat sederhana.
Tentu saja, jika server web tidak mendukung SSI, itu hanya akan memperlakukannya sebagai informasi anotasi dan melewatkan konten secara langsung; Browser juga akan mengabaikan informasi ini.
Bagaimana cara mengkonfigurasi fungsionalitas SSI di server web saya?
Pada beberapa server web (seperti IIS 4.0/Sambar 4.2), file yang berisi arahan #include harus menggunakan ekstensi yang telah dipetakan ke penerjemah SSI; Kalau tidak, server web tidak akan memproses arahan SSI; Secara default, ekstensi .stm, .shtm, dan .shtml dipetakan ke penerjemah (ssinc.dll).
Apache didasarkan pada pengaturan Anda, memodifikasi srm.conf seperti:
Teks AddType/X-Server-Parsed-html .shtml akan menguraikan arahan SSI hanya untuk file dengan ekstensi .shtml
Teks AddType/X-Server-Parsed-html .html akan menguraikan arahan SSI untuk semua dokumen html
Netscape Web Server dapat secara langsung menggunakan server administrasi (server administrasi) untuk mengaktifkan fungsi SSI.
Situs web menggunakan tag pemetaan di program admin server, dan menambahkan jenis konten sebagai: wwwserver/html-ssi
Server CERN tidak mendukung SSI. Anda dapat menggunakan metode penipuan SSI. Unduh skrip Perl di http://sw.cse.bris.ac.uk/webtools/fakessi.html untuk membuat server CERN Anda menggunakan beberapa instruksi SSI. (Petunjuk eksekutif tidak didukung.)
Format Instruksi SSI Dasar
Format Instruksi SSI Dasar:
Kode Program:
<! ---- Nama Instruksi = Parameter Instruksi>
<! ---- Nama Instruksi = Parameter Instruksi>
menyukai
Kode Program:
<#include file = info.htm->
<#include file = info.htm->
menjelaskan:
1. <!--> adalah anotasi dalam sintaks HTML. Informasi ini akan diabaikan ketika server web tidak mendukung SSI.
2. #Include adalah salah satu arahan SSI.
3. File adalah parameter dari include, info.htm adalah nilai parameter, dan mengacu pada nama dokumen yang akan dimasukkan dalam instruksi ini.
Melihat:
1. <!-Tidak ada ruang antara nomor #, hanya instruksi dan parameter SSI.
2. Tanda baca di atas =, tidak ada yang bisa hilang.
3. Instruksi SSI sensitif terhadap kasus, sehingga parameter harus menjadi huruf kecil untuk bekerja.
Penjelasan terperinci tentang penggunaan instruksi SSI
Demonstrasi #echo
memengaruhi:
Masukkan variabel lingkungan ke dalam halaman.
tata bahasa:
Kode Program:
<!-#echo var = Nama variabel->
<!-#echo var = Nama variabel->
Nama Dokumen Ini: Kode Program:
<!-#echo var = document_name->
<!-#echo var = document_name->
Waktu Saat Ini: Kode Program:
<!-#echo var = date_local->
<!-#echo var = date_local->
Alamat IP Anda adalah kode program:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#termasuk demonstrasi
memengaruhi:
Masukkan isi file teks langsung ke halaman dokumen.
tata bahasa:
Kode Program:
<#include file = nama file->
<#include virtual = nama file->
<#include file = nama file->
<#include virtual = nama file->
Nama file file adalah jalur relatif relatif terhadap direktori tempat dokumen menggunakan #include Directive berada. File yang disertakan dapat berada di direktori level yang sama atau subdirektori, tetapi tidak di direktori level sebelumnya. Jika dokumen nav_head.htm di direktori saat ini adalah file = nav_head.htm.
Nama file virtual adalah jalur lengkap ke direktori virtual di situs web. Jika itu berarti file nav_head.htm di direktori hoyi di bawah direktori root dokumen server; Maka itu adalah file =/hoyi/nav_head.htm
parameter:
File Menentukan lokasi file yang berisi relatif terhadap dokumen ini
Virtual Menentukan lokasi relatif terhadap direktori root dokumen server
Melihat:
1. Nama file harus memiliki ekstensi.
2. File yang disertakan dapat memiliki ekstensi file apa pun. Saya pikir paling nyaman untuk menggunakan ekstensi HTM secara langsung. Microsoft merekomendasikan penggunaan ekstensi .inc (tergantung pada hobi Anda).
Contoh:
Kode Program:
<#include file = nav_head.htm-> Masukkan file header ke halaman saat ini
<#include file = nav_foot.htm-> Masukkan file ekor ke halaman saat ini
<#include file = nav_head.htm-> Masukkan file header ke halaman saat ini
<#include file = nav_foot.htm-> Masukkan file ekor ke halaman saat ini
#FlastMod dan #FSize Demonstrasi
Fungsi: #FlastMod File Tanggal Pembaruan Terakhir
Panjang file #fsize
tata bahasa:
Kode Program:
<!-#FLASTMOD File = Nama file->
<!-#fsize file = nama file->
<!-#FLASTMOD File = Nama file->
<!-#fsize file = nama file->
parameter:
File Menentukan lokasi file yang berisi relatif terhadap dokumen ini, seperti info.txt, yang mewakili dokumen info.txt di direktori saat ini.
Virtual Menentukan lokasi relatif terhadap direktori root dokumen server, seperti /hoyi/info.txt
Melihat:
Nama file harus memiliki ekstensi.
Contoh:
Kode Program:
<!-#FLASTMOD File = news.htm->
<!-#FLASTMOD File = news.htm->
Masukkan tanggal pembaruan terbaru dari file news.htm di direktori saat ini ke halaman saat ini
Kode Program:
<!-#fsize file = news.htm->
<!-#fsize file = news.htm->
Masukkan ukuran file news.htm di direktori saat ini ke halaman saat ini
Demonstrasi #Exec
memengaruhi:
Masukkan output program eksternal ke dalam halaman. Ini dapat dimasukkan ke dalam program CGI atau input dari aplikasi reguler, tergantung pada apakah parameter yang digunakan adalah CMD atau CGI.
tata bahasa:
Kode Program:
<!-#exec cmd = nama file->
<!-#Exec CGI = Nama File->
<!-#exec cmd = nama file->
<!-#Exec CGI = Nama File->
parameter:
Aplikasi reguler CMD
Program skrip CGI CGI
Contoh:
Kode Program:
<!-#exec cmd = cat /etc /passwd-> akan menampilkan file kata sandi
<!-#exec cmd = dir /b-> akan menampilkan daftar file di direktori saat ini
<!-#Exec CGI =/CGI-BIN/GB.CGI-> Program CGI GB.CGI akan dieksekusi.
<!-#Exec CGI =/CGI-BIN/ACCESS_LOG.CGI-> Program CGI ACCESS_LOG.CGI akan dieksekusi.
<!-#exec cmd = cat /etc /passwd-> akan menampilkan file kata sandi
<!-#exec cmd = dir /b-> akan menampilkan daftar file di direktori saat ini
<!-#Exec CGI =/CGI-BIN/GB.CGI-> Program CGI GB.CGI akan dieksekusi.
<!-#Exec CGI =/CGI-BIN/ACCESS_LOG.CGI-> Program CGI ACCESS_LOG.CGI akan dieksekusi.
Melihat:
Seperti yang dapat dilihat dari contoh di atas, instruksi ini cukup nyaman, tetapi ada juga masalah keamanan.
Metode terlarang:
. Apache, Hapus Opsi Termasuk garis ExecCGI di Access.conf;
. Di IIS, untuk menonaktifkan perintah #exec, Anda dapat memodifikasi metadatabase ssiexecdisable;
#config
Fungsi: Menentukan format pesan kesalahan, tanggal dan ukuran file yang dikembalikan ke browser klien.
tata bahasa:
Kode Program:
<!-#configerrmsg = pesan kesalahan khusus->
<!-#configsizefmt = unit tampilan->
<!-#configTimefmt = format display->
<!-#configerrmsg = pesan kesalahan khusus->
<!-#configsizefmt = unit tampilan->
<!-#configTimefmt = format display->
parameter:
ERRMSG Pesan Kesalahan Eksekusi SSI Kustom dapat digunakan dengan cara apa pun yang Anda suka.
Metode Tampilan Ukuran File Sizefmt, Default adalah metode byte (byte) dapat diubah menjadi metode kilobyte (abbrev)
Metode tampilan waktu waktu, atribut konfigurasi yang paling fleksibel.
Contoh: Menunjukkan ukuran file yang tidak ada
Kode Program:
<!-#configerrmsg = Kesalahan eksekusi server, silakan hubungi administrator [email protected], terima kasih! ->
<!-#fsize file = no file.htm->
<!-#configerrmsg = Kesalahan eksekusi server, silakan hubungi administrator [email protected], terima kasih! ->
<!-#fsize file = no file.htm->
Tampilkan ukuran file dalam kilobytes
Kode Program:
<!-#configsizefmt = abbrev->
<!-#fsizeFile = news.htm->
<!-#configsizefmt = abbrev->
<!-#fsizeFile = news.htm->
Tampilkan waktu dalam format waktu tertentu
Kode Program:
<!-#configTimefmt = %y tahun/ %m bulan %d hari dan minggu %w beijing waktu %h: %m: %s, %y tahun telah berlalu %j hari hari ini adalah %u minggu %y tahun->
<!-#echo var = date_local-> menunjukkan hari apa dalam seminggu, bulan, dan zona waktu seperti sekarang ini
<!-#configTimefmt = hari ini %A, %b, zona waktu server adalah %z, ya->
<!-#echo var = date_local->
<!-#configTimefmt = %y tahun/ %m bulan %d hari dan minggu %w beijing waktu %h: %m: %s, %y tahun telah berlalu %j hari hari ini adalah %u minggu %y tahun->
<!-#echo var = date_local-> menunjukkan hari apa dalam seminggu, bulan, dan zona waktu seperti sekarang ini
<!-#configTimefmt = hari ini %A, %b, zona waktu server adalah %z, ya->
<!-#echo var = date_local->
Xssi
XSSI (Extended SSI) adalah satu set instruksi SSI canggih yang dibangun ke dalam modul mod-termasuk Apache 1.2 atau lebih baru.
Di antara mereka, instruksi yang tersedia adalah:
#printenv
#mengatur
#jika
#printenv
Fungsi: Menampilkan semua variabel lingkungan yang saat ini ada di lingkungan server web.
Sintaks: Kode Program:
<!-#printenv->
<!-#printenv->
Parameter: Tidak ada
Contoh:
Kode Program:
<!-#printenv->
<!-#printenv->
#mengatur
Fungsi: Anda dapat menetapkan nilai ke variabel yang akan digunakan dalam pernyataan IF berikutnya.
Sintaks: Kode Program:
<!-#set var = variabel name value = nilai variabel->
<!-#set var = variabel name value = nilai variabel->
Parameter: Tidak ada
Contoh: Kode Program:
<!-#set var = colorValue = red->
<!-#set var = colorValue = red->
#jika
Fungsi: Buat halaman yang dapat mengubah data, yang ditampilkan sesuai dengan persyaratan perhitungan saat menggunakan pernyataan IF.
Sintaks: Kode Program:
<!-#if expr = $ variable name = nilai variabel a->
Tampilkan konten
<!-#Elif expr = $ variable name = Nilai variabel b->
Tampilkan konten
<!-#else->
Tampilkan konten
<!-#endif->
<!-#if expr = $ variable name = nilai variabel a->
Tampilkan konten
<!-#Elif expr = $ variable name = Nilai variabel b->
Tampilkan konten
<!-#else->
Tampilkan konten
<!-#endif->
Contoh:
Kode Program:
<!-#if expr = $ server_name = http: //www.31896.net/--->
Selamat datang di area diskusi keamanan server http://www.31896.net/.
<!-#Elif expr = $ server_name = http: //www.fineerer.org/->
Selamat datang di Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Selamat datang di Area Diskusi Keamanan Server!
<!-#endif->
<!-#if expr = $ server_name = http: //www.31896.net/--->
Selamat datang di area diskusi keamanan server http://www.31896.net/.
<!-#Elif expr = $ server_name = http: //www.fineerer.org/->
Selamat datang di Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Selamat datang di Area Diskusi Keamanan Server!
<!-#endif->
Catatan: Backslash yang digunakan dalam instruksi sebelumnya digunakan untuk mengganti kutipan internal sehingga tidak ditafsirkan sebagai ekspresi akhir. Tidak dihilangkan.
1. Perintah konfigurasi
Perintah konfigurasi terutama digunakan untuk memodifikasi pengaturan default SSI. di dalam:
ERRMSG: Setel pesan kesalahan default. Untuk mengembalikan informasi kesalahan yang ditetapkan oleh pengguna secara normal, parameter ERRMSG harus ditempatkan di depan perintah SSI lain dalam file HTML, jika tidak klien hanya dapat menampilkan informasi kesalahan default alih -alih informasi khusus yang ditetapkan oleh pengguna.
<!-#configerrmsg = error! Silakan kirim email ke [email protected] ->
TimeFMT: Menentukan format penggunaan tanggal dan waktu. Parameter TimeFMT harus digunakan sebelum perintah Echo.
<!-#configTimefmt = %a, %b %d, %y->
<!-#echo var = last_modified->
Hasilnya ditampilkan sebagai:
Rabu, 12 April 2000
Mungkin pengguna tidak terbiasa dengan %A %B %D yang digunakan dalam contoh di atas. Mari kita ringkas beberapa format tanggal dan waktu yang lebih umum digunakan dalam SSI dalam bentuk tabel.
Sizefmt: Menentukan apakah ukuran file dinyatakan dalam byte, kilobytes atau megabyte. Jika dalam byte, nilai parameter adalah byte; Singkatan dapat digunakan untuk kilobytes dan megabyte. Demikian pula, parameter Sizefmt harus ditempatkan sebelum perintah fsize untuk digunakan.
<!-#configsizefmt = bytes->
<!-#fsize file = index.html->
2. Sertakan perintah
Perintah termasuk dapat memasukkan teks atau gambar dari dokumen lain ke dalam dokumen yang saat ini diuraikan, yang merupakan kunci dari seluruh SSI. Melalui perintah incert, Anda hanya perlu mengubah satu file untuk memperbarui seluruh situs secara instan!
Perintah termasuk memiliki dua parameter yang berbeda:
Virtual: Memberikan jalur virtual ke dokumen di sisi server. Misalnya:
<#include virtual =/include/header.html ->
File: Memberikan jalur relatif ke direktori saat ini, di mana ../ tidak dapat digunakan, juga jalur absolut tidak dapat digunakan. Misalnya:
<#include file = header.html ->
Ini mensyaratkan bahwa setiap direktori berisi file header.html.
3. perintah gema
Perintah Echo dapat menampilkan variabel lingkungan berikut:
Document_name: Menampilkan nama dokumen saat ini.
<!-#echo var = document_name->
Hasilnya ditampilkan sebagai:
index.html
Document_uri: Menampilkan jalur virtual ke dokumen saat ini. Misalnya:
<!-#echo var = document_uri->
Hasilnya ditampilkan sebagai:
/Yourdirectory/yourfilename.html
Saat situs web terus tumbuh, URL yang semakin lama pasti akan menjadi sakit kepala. Jika Anda menggunakan SSI, semuanya akan diselesaikan. Karena kita dapat menggabungkan nama domain situs web dan perintah SSI untuk menampilkan URL lengkap, yaitu:
http: // yourdomain%3c!-/#echo var = & ... uot; ->
Query_string_unescaped: Menampilkan string kueri yang dikirim oleh klien yang belum diloloskan, dengan semua karakter khusus didahului oleh karakter pelarian. Misalnya:
<!-#echo var = query_string_unescaped->
Date_local: Menampilkan tanggal dan waktu zona waktu pengaturan server. Pengguna dapat menyesuaikan informasi output berdasarkan parameter TimeFMT dari perintah Config. Misalnya:
<!-#configTimefmt = %a, %d dari %b, di tahun %y->
<!-#echo var = date_local->
Hasilnya ditampilkan sebagai:
Sabtu, 15 April, pada tahun 2000
Date_gmt: Fungsinya sama dengan date_local, kecuali bahwa ia mengembalikan tanggal berdasarkan GMT. Misalnya:
<!-#echo var = date_gmt->
Last_modified: Menampilkan waktu pembaruan terakhir dari dokumen saat ini. Demikian pula, ini adalah fitur yang sangat praktis di SSI. Selama Anda menambahkan teks sederhana berikut ke dokumen HTML, Anda dapat secara dinamis menampilkan waktu pembaruan pada halaman.
<!-#echo var = last_modified->
Variabel Lingkungan CGI
Selain variabel lingkungan SSI, perintah Echo juga dapat menampilkan variabel lingkungan CGI berikut:
Server_Software: Menampilkan nama dan versi perangkat lunak server. Misalnya:
<!-#echo var = server_software->
Server_name: Menampilkan nama host server, alias DNS, atau alamat IP. Misalnya:
<!-#echo var = server_name->
Server_Protocol: Menampilkan nama dan versi protokol yang digunakan oleh permintaan klien, seperti HTTP/1.0. Misalnya:
<!-#echo var = server_protocol->
Server_port: Menampilkan port respons server. Misalnya:
<!-#echo var = server_port->
Request_method: Menampilkan metode permintaan dokumen klien, termasuk GET, HEAD, dan POST. Misalnya:
<!-#echo var = request_method->
Remote_host: Menampilkan nama host klien yang mengeluarkan pesan permintaan.
<!-#echo var = remote_host->
Remote_addr: Menampilkan alamat IP klien yang mengeluarkan informasi permintaan.
<!-#echo var = remote_addr->
AUTH_TYPE: Menampilkan metode otentikasi identitas pengguna.
<!-#echo var = auth_type->
Remote_user: Menampilkan nama akun yang digunakan oleh pengguna mengakses halaman yang dilindungi.
<!-#echo var = remote_user->
4. FSize: Menampilkan ukuran file yang ditentukan. Anda dapat menyesuaikan format output dengan parameter SIZEFMT dari perintah config.
<!-#fsize file = index_working.html->
5. FLASTMOD: Menampilkan tanggal modifikasi terakhir dari file yang ditentukan. Anda dapat mengontrol format output dengan parameter TimeFMT dari perintah config.
<!-#configTimefmt = %a, %d dari %b, di tahun %y->
<!-#FLASTMOD File = file.html->
Di sini, kita dapat menggunakan parameter FLASTMOD untuk menampilkan tanggal pembaruan semua halaman yang ditautkan pada halaman. Metode ini adalah sebagai berikut:
<!-#configTimefmt = %b %d, %y->
<A href =/direktori/file.html> file </a>
<!-#FLASTMOD Virtual =/Directory/File.html->
<A href =/lain_directory/lain_file.html> File lain </a>
<!-#FLASTMOD Virtual =/Other_directory/Other_file.html->
Hasilnya ditampilkan sebagai:
File 19 April 2000
File lain 08 Januari 2000
6. EXEC
Perintah EXEC dapat menjalankan skrip CGI atau perintah shell. Cara menggunakannya adalah sebagai berikut:
CMD: Gunakan /bin /sh untuk menjalankan string yang ditentukan. Jika SSI menggunakan opsi inclubleNoExec, perintah akan diblokir.
CGI: Dapat digunakan untuk menjalankan skrip CGI. Misalnya, dalam contoh berikut, gunakan program skrip counter.pl di bawah direktori server CGI-bin untuk menempatkan penghitung pada setiap halaman:
<!-#exec cgi =/cgi-bin/counter.pl->