Apa itu ASP
Sebelum mulai
menggunakan, kita perlu mengetahui dasar-dasar Active Server Pages (ASP). ASP
merupakan teknologi yang dikembangkan oleh Microsoft, diluncurkan sekitar tahun
1996. ASP adalah tekonolgi server-side scripting, yang berarti segala proses
programnya dilakukan di server sebelum dikirim ke client. Server-side scripting
ini merupakan kebalikan dari client-side scripting, yang seluruh proses
programnya dilakukan di client, contohnya JavaScript. Karena seluruh prosesnya
berada di server, maka client akan menerima hasil dalam bentuk HTML biasa.
Berbeda dengan client-side scripting, dimana client juga menerima script. Jelas
server-side scripting ini lebih aman dan lebih bebas untuk dikembangkan.
Yang biasanya
kita katakan sebagai halaman ASP, sebenarnya terdiri dari 3 bagian.
ASP objects.
Sebenarnya, yang dinamakan ASP adalah object, atau lebih tepat Component Object
Model (COM), bukan bahasa pemrograman yang sering kita lihat. ASP dikembangkan
diatas dasar ISAPI. ASP hanya terdiri dari 6 object yang sangat sederhana,
tetapi karena digabungkan dengan struktur teknologi Microsoft lainnya, object
ini menjadi sangat berguna. Keenam object tersebut adalah Application, Session,
Response, Request, Server, dan ObjectContext.
Bahasa
Scripting. Dalam bahasa scripting inilah object-object ASP dimanipulasi sesuai
dengan yang kita kehendaki. Bahasa scripting yang diberikan oleh Microsoft
adalah VBScript dan JScript. Keduanya dapat dipakai untuk menulis script ASP.
Perbedaan antara dua bahasa tersebut hanyalah masalah selera. Standarnya adalah
VBScript, dan bahasa ini yang paling banyak dipakai oleh developer ASP di
seluruh dunia. ASPIndonesia.net juga memakai bahasa dalam artikel-artikel yang
ada. Ada pihak ketiga yang kini mengembangkan PerlScript, favorit dari mereka
yang berpengalaman di Unix.
ActiveX Server
Component. Object ASP hanyalah perekat antara halaman HTML dengan program yang
berada di server. Bahasa scripting hanya digunakan untuk membuat alur logika
yang diperlukan. Untuk masalah akses ke database, akses ke program lain, dan
sebagainya, maka diperlukanlah ActiveX Server Component. ActiveX Server
Component ini sering dipakai dalam halaman ASP seperti ini :
Set oConn =
Server.CreateObject("ADODB.Connection")
Perintah diatas
membuat server memanggil ActiveX Server Component yang bersangkutan. ActiveX
Server Component ini dapat dibuat dengan banyak bahasa pemrograman, contohnya
Visual Basic, Visual C++, Delphi, Java, dll.
Dengan adanya
ketiga bagian diatas, sebuah halaman ASP bisa menjalankan program-program yang
sangat rumit di server. Inilah yang menjadi keunggulan ASP yang terutama.
Biasanya kita sering melakukan akses database dengan ADODB, mengirim e-mail
dengan CDONTS, tetapi ASP juga bisa melakukan hal lain yang jauh lebih rumit
dengan komponen yang kita buat sendiri. Semuanya ini didasarkan dari teknologi
Component Object Model (COM).
Dengan adanya
teknologi ASP ini dalam halaman web dapat diisikan HTML tag, ASP script,
panggilan ke komponent di server. Kombinasi ini menghasilkan aplikasi web yang
canggih.
ASP FAQ
oleh: Tirta K.
Untario
Inilah beberapa
pertanyaan yang sering ditanyakan mengenai ASP. Daftar FAQ ini akan terus
ditambah jika ada perkembangan baru.
Apa itu
ASP?
Active Server
Pages adalah teknologi server-side scripting yang dikembangkan oleh Microsoft,
memungkinkan Anda untuk menjalankan ActiveX Script dan ActiveX Server
Component. Gabungan kedua teknologi ini memungkinkan Anda untuk membuat web
yang dinamis. Untuk penjelasan lebih lanjut, bacalah artikel Apa itu ASP.
Apa
maksudnya web yang dinamis?
Web yang dinamis
adalah web yang halaman-halamannya dibentuk ketika ada request pada server.
Halaman-halaman ditampilkan pada client kelihatan seperti halaman HTML biasa,
tetapi sebenarnya terjadi proses di server untuk membentuk isi dari halaman
tersebut setiap kali ada request. Contoh yang mudah ditemukan adalah serach
engine. Tiap orang bisa memasukkan query mereka sendiri dan hasilnya
ditampilkan secara dinamis, berbeda-beda untuk tiap query.
Siapa yang
perlu menggunakan Active Server Pages?
Siapa saja yang
ingin mengembangkan web-based application. ASP mudah dipelajari oleh setiap
orang walalupun mereka bukan seorang programmer profesional. Pengetahuan dasar
untuk mengembangkan ASP hanyalah pengetahuan HTML dan scripting, seperti
VBScript atau Jscript.
Apa saja
yang dibutuhkan untuk menjalankan Active Server Pages?
ASP berjalan
didalam lingkungan Internet Information Server 2.0 keatas dan Personal Web
Server. Internet Information Server dijalankan dengan OS Windows NT Server,
sedangkan Personal Web Server dijalankan dengan OS Windows NT Workstation dan
Windows 9x. Untuk Windows 2000 baik Profesional, Server, Advanced Server dan
Data Center, semuanya menggunakan Internet Information Server 5.0.
Apakah ASP
mendukung Java?
Ya. Java dapat
digunakan untuk menulis ActiveX Server Component yang dibutuhkan.
Apakah ASP
kompatibel dengan browser selain Internet Explorer?
Browser apa saja
compatible dengan ASP karena proses ASP dijalankan di server dan hasil
pemrosesannya dalam bentuk plain text. Hasil pemrosesan ini dapat digabungkan
dengan tag-tag HTML atau yang lain sehingga bisa kompatibel dengan browser apa
saja.
Apakah ASP
bisa melakukan akses ke database?
Akses ke database
merupakan fasilitas ASP yang paling sering digunakan. ASP mendukung akses ke
database manapun selama database tersebut mendukung OLEDB atau ODBC.
Di
platform mana saja ASP bisa berjalan?
Pertama kalinya
ASP dikembangkan dengan platform Windows dan komponennya. Belakangan ini sudah
ada beberapa pihak ketiga yang membuat application server untuk ASP yang
berjalan di platform selain Windows, misalnya Linux, Solaris, dll. Salah satu
vendornya adalah Chili!Soft Inc.
Apakah ASP
itu aman?
Karena ASP
merupakan komponen dari IIS, maka ASP memiliki level keamanan seperti yang
dimiliki oleh Windows NT dan Windows 2000. File-file ASP di web dapat diberi
bermacam-macam proteksi sehingga tidak dapat diakses oleh sembarang orang.
Memakai include pada Script ASP
oleh: Tirta K.
Untario
Penting bagi
para programmer ASP untuk memakai include. Kegunaannya yang utama adalah untuk
modularisasi kode. Include ada 2 jenis:
<!--#include
file="namafile" -->
<!--#include
virtual="namafile" -->
Parameter file
Parameter file
menunjukkan posisi relatif file yang dituju dari halaman yang sedang dibuka.
Lihatlah beberapa contoh dibawah ini.
<!--#include
file="library.asp" -->
Contoh diatas
menunjuk pada file library.asp yang berada pada direktori yang sama.
<!--#include
file="scripts/library.asp" -->
Contoh diatas
menunjuk pada file library.asp yang berada pada subdirektori scripts dibawah
direktori yang sekarang.
<!--#include
file="../scripts/library.asp" -->
Contoh diatas
menunjuk pada file library.asp yang berada pada direktori scripts yang sejajar
dengan direktori sekarang.
<!--#include
file="/scripts/library.asp" -->
Jangan pakai
contoh diatas. Ini menunjuk pada file library.asp yang berada pada root
direktori harddisk, dan secara otomatis, hal ini dolarang oleh webserver.
Parameter virtual
Parameter
virtual menunjukkan posisi file yang dituju dari root direktori virtual
address. Lihatlah beberapa contoh dibawah ini. Contoh-contoh dibawah ini
memakai domain http://localhost
<!--#include
virtual="library.asp" -->
Contoh diatas
menunjuk pada file http://localhost/library.asp
<!--#include
virtual="/include/scripts/library.asp" -->
Contoh diatas
menunjuk pada file http://localhost/include/scripts/library.asp
Karakteristik
Nama file yang
akan diinclude tidak bisa berupa variabel.
Contoh:
<%
strIncludeFile = "library.asp" %>
<!--#include
file=strIncludeFile -->
Ketika kita
mencoba memakai conditional include, seperti contoh:
<% If
intIndex = 1 Then %>
<!--#include
file="content1.asp" -->
<% Else %>
<!--#include
file="content2.asp" -->
<% End If
%>
Maka file yang
akan di-include akan dipanggil dulu semuanya, baru operasi IF akan dilakukan.
Prioritas directive include pada script ASP adalah yang pertama, sehingga semua
file include akan dipanggil dan disertakan terlebih dahulu sebelum ada kode ASP
yang mulai diproses.
Directive
include tidak bisa dimasukkan kedalam blok script ASP, melainkan harus diluar
blok script ASP. Contohnya dapat dilihat pada kode-kode diatas.
Tips untuk Keamanan
Jangan menamakan
file include Anda dengan .inc. Jika ada seseorang yang mengetahui posisi file
include Anda, maka dengan mudah ia dapat melihatnya lewat browser, dan mencuri
kode-kode yang mungkin rahasia, karena file .inc akan dianggap sebagai text
file biasa. Mesin pencari dan robot bisa saja menemukan dan mengindeks file
include Anda.
Namakan file
include Anda dengan .asp . File .asp, secara otomatis akan diproses oleh
server, sehingga ketika ada yang berusaha mendownloadnya lewat browser, dia
tidak dapat melihat source code-nya.
Memakai Request Object
oleh: Tirta K.
Untario
Request object,
kebalikan dari Response, melakukan pengambilan data dari client untuk diproses
lebih lanjut. Ada beberapa collection dari Request object yang akan sering
dipakai dalam menulis script ASP.
Request.ServerVariables
Request.ServerVariables,
sesuai namanya, mengambil variabel-variabel HTTP yang tersedia di server
ataupun client.
Penggunaannya
lihat contoh dibawah ini:
<%
Request.ServerVariables("namavariable") %>
Nama variabel ini
dudah ditetapkan sesuai dengan standar. Untuk contoh dan referensi dari
variabel server yang bisa digunakan, silakan klik link dibawah ini.
http://www.aspindonesia.net/demo/00,02,26,1/servervariables.asp
Request.QueryString
Request.QueryString
dipakai untuk mengambil data yang dikirim melalui query (URL yang tertulis
diatas address bar) atau yang dikirim lewat form dengan metode GET. Querystring
dapat dilihat dibelakang tanda ? di address bar.
Contoh
querystring :
http://www.aspindonesia.net/default.asp?querystring...
<%
' nilai diatas
diambil dengan cara seperti ini
strQueryString =
Request.QueryString("variabel")
%>
Contoh
penggunaannya :
http://www.aspindonesia.net/demo/00,02,26,1/querystring.asp
Request.Form
Request.Form
dipakai untuk mengambil data yang dikirim melalui form dengan metode POST.
<html>
<head></head>
<body>
<form
method="post" action="form.asp">
<input type="text"
name="nama">
<input type="submit"
name="submit">
</form>
</body>
</html>
Nilai form
diatas diambil dengan cara seperti ini :
<% strForm =
Request.Form("nama") %>
Contoh
penggunaannya :
http://www.aspindonesia.net/demo/00,02,26,1/form.asp
Request.Cookies
Request.Cookies
dipakai untuk mengambil data yang tersimpan di cookie. Penjelasan lebih lanjut
mengenai pemakaian cookies akan ditulis di artikel lain.
Memakai Response Object
oleh: Tirta K.
Untario
Response object
ini sangat penting dan pasti akan dipakai sepanjang kita memakai ASP. Response,
sesuai dengan namanya, akan mengirimkan data yang kita mau ke client.
Kebalikannya dengan Request, yang akan mengambil data dari client. Ada beberapa
Response yang akan sering dipakai didalam menulis script ASP.
Response.Write
Semua yang
pernah menulis script ASP pasti pernah memakainya. Contoh:
<%
Response.Write "Apakabar" %>
Catatan:
Operasi
penggabungan string pada VBScript menggunakan operator &. Contoh:
strKalimat =
"Ini kalimat" & "yang pertama" &
"<br>"
Response.Cookies
Response.Cookies
ini melakukan operasi penulisan cookies pada browser. Harus dilakukan sebelum
ada data yang dikirimkan dari server ke client. Karena itu harus ditulis di
awal halaman. Jika keadaan memaksa penulisan harus dilakukan ditengah-tengah
halaman HTML, maka Response.Buffer harus di-set ke TRUE.
Untuk
dokumentasi lengkap mengenai Response.Cookies ini, dapat melihat dokumentasi
yang datang dengan PWS atau IIS.
Response.Redirect
Response.Redirect
ini mudah sekali dipahami. Ini akan me-redirect client ke halaman yang dituju.
Contoh:
<%
Response.Redirect "halamankedua.asp" %>
Hasil dari Response.Redirect
ini dikirimkan bersama dengan HTTP Headers. Karena itu, sama seperti
Response.Cookies, Response.Redirect ini harus ditulis sebelum ada data dikirim
ke browser. Jika ingin menulis Response.Redirect ditengah-tengah halaman HTML,
maka Response.Buffer harus di-set TRUE.
Response.Buffer
Ada 2 nilai yang
bisa dimasukkan, yaitu:
Response.Buffer
= FALSE 'Default
Response.Buffer
= TRUE
Nilai FALSE akan
menjadikan script ASP dikirim ke client segera setelah tiap baris/blok selesai
dieksekusi.
Nilai TRUE akan
menjadikan script ASP akan dieksekusi dulu sampai selesai, kemudian hasil
akhirnya baru dikirim client. Hal ini berguna jika kita perlu memakai Response
yang hasilnya harus dikirimkan bersama HTTP Headers, seperti Response.Cookies,
Response.Redirect, dan lainnya. Penggunaan Response.Buffer = TRUE ini
disarankan, karena akan mempercepat eksekusi script.
Response.Buffer
ini harus ditulis pada baris pertama sebuah script, jika script ini tidak
memakai directive @. Jika script memakai directive @, maka Response.Buffer
harus ditaruh di baris kedua sesudahnya.
Response.Flush
Response.Flush
hanya bisa dipakai jika Response.Buffer=TRUE. Response.Flush ini akan
mengirimkan data yang disimpan di-buffer ke client, walaupun eksekusi belum
selesai. Contoh :
<%
Response.Buffer = TRUE %>
<%
' Dalam contoh
ini, nilai x akan dikirimkan secara periodik
' segera setelah
selesai diproses
For x = 1 to
1000
Response.Write "Nilai ke : " &
x
Response.Flush
Next
%>
Response.End
Response.End
hanya bisa dipakai jika Response.Buffer=TRUE. Response.End ini akan
menghentikan eksekusi script dan mengirimkan bagian yang selesai dieksekusi ke
client. Contoh:
<%
Response.Buffer = TRUE %>
<%
' Pada contoh
ini, hanya nilai 1 yang dikirimkan ke client,
' karena
eksekusi script berhenti.
For x = 1 to
1000
Response.Write "Nilai ke : " &
x
Response.End
Next
%>
Response.Clear
Response.Clear
hanya bisa dipakai jika Response.Buffer=TRUE. Response.Clear ini akan menghapus
segala data yang tersimpan di-buffer, dan data tersebut tidak akan dikirimkan
ke client. Contoh:
<%
Response.Buffer = TRUE %>
<%
' Pada contoh
ini, tidak ada data yang dikirim
For x = 1 to
1000
Response.Write "Nilai ke : " &
x
Next
Response.Clear
%>
Untuk method dan
property yang lain dari Response object, biasanya jarang dipakai. Untuk
dokumentasi lengkap mengenai Response object ini, dapat dilihat pada
dokumentasi yang datang bersama PWS atau IIS.
Memakai Server Object
oleh: Tirta K.
Untario
Server object
dapat melakukan akses ke methods atau properties yang ada di server. Inilah
beberapa method dan properties yang sering digunakan.
Server.CreateObject
Server.CreateObject
ini sering sekali dipakai dalam menulis script ASP. Method ini akan membuat
object yang berasal dari komponen yang terpasang di server. Contoh penggunaan :
<% Set
objConn = Server.CreateObject("ADODB.Connection") %>
Server.HTMLEncode
Server.HTMLEncode
ini mengubah tag HTML dalam sebuah string menjadi special character agar tidak
dibaca sebagai tag HTML oleh browser. Contoh penggunaan :
<%
strContoh =
"<b>Percobaan</b>"
strContoh =
Server.HTMLEncode (strContoh)
%>
Hasil dari
operasi diatas adalah : <b>Percobaan</b> , bukan Percobaan
Server.URLEncode
Sebuah nilai
variabel yang dikirim melalui querystring tidak bisa berisi karakter tertentu,
misalnya : spasi, :, /, \, dan beberapa karakter lain. Untuk itu,
Server.URLEncode mempermudah pekerjaan kita dengan melakukan encoding kepada
nilai variabel yang akan dikirim sehingga bisa langsung dipakai kedalam
querystring. Contoh penggunaan :
<%
strContoh =
"http://www.aspindonesia.net"
strContoh =
Server.URLEncode (strContoh)
%>
Hasil dari
operasi diatas adalah : http%3A%2F%2Fwww%2Easpindonesia%2Enet , sehingga nilai
dari strContoh dapat langsung dikirimkan melalui querystring seperti contoh ini
:
http://www.aspindonesia.net/default.asp?url=<%
=strContoh %>
Server.MapPath
Server.MapPath
berguna untuk mendapatkan letak direktori fisik di server. Jika suatu saat kita
perlu menulis script yang berhubungan dengan file di server, Server.MapPath ini
berguna, karena kita tidak perlu memusingkan path dari file tersbut jika pindah
server. Contoh penggunaan :
<% =
Server.MapPath("default.asp") %>
Hasilnya :
D:\Inetpub\aspindonesia\artikel\default.asp
Server.ScriptTimeout
Server.ScriptTimeout
mengijinkan kita untuk mengubah timeout dari script ASP secara langsung dan
berlaku hanya pada satu script, tanpa perlu mengakses properti di server.
Server.ScriptTimeout ini juga dapat digunakan untuk melihat timeout yang
ditentukan untuk sebuah script. Nilai default dari ScriptTimeout adalah 90
detik, jika belum dirubah di server.
<%
' untuk melihat
timeout dari script yang bersangkutan
Response.Write
Server.ScriptTimeout
' untuk
mengganti timeout default di server menjadi 100 detik
Server.ScriptTimeout
= 100
%>
Timeout di
script ini adalah : 90 detik
Redirection dengan ASP
oleh: Tirta K.
Untario
Mudah sekali
untuk melakukan redirection di ASP, sama mudahnya dengan menggunakan
JavaScript. Contoh :
<%
'Jangan
menggunakan tanda kurung
Response.Redirect
"percobaan.asp"
%>
Response.Redirect
ini akan dikirimkan bersama-sama dengan HTTP Header. Karena itu,
Response.Redirect harus ditulis sebelum data dikirim ke browser. Contoh :
<%
Response.Redirect "percobaan.asp" %>
<html>
<!-- Kode
HTML Anda -->
</html>
Jika Anda hendak
menuliskannya ditengah halaman HTML, maka Response.Buffer = TRUE harus
diletakkan pada baris pertama program Anda. Contoh :
<%
Response.Buffer = TRUE %>
<html>
<!-- Kode
HTML Anda -->
<% Response.Redirect
"percobaan.asp" %>
</html>
Konversi Data dari CSV ke Database
oleh: Ivan R. Lanin
Comma Seperated
Value (CSV) adalah file text biasa yang tiap nilai didalamnya dibatasi oleh
karakter koma. Contohnya dapat dilhat dibawah ini:
Contoh file CSV
Ivan R.
Lanin,L,1/16/75,Hylabs,Ranggamalela 18,Bandung
Eril S.
Lanin,L,5/27/78,Zent,Taman Cibeunying 5,Bandung
CSV sering
dipakai untuk melakukan export-import data spreadsheet maupun database karena
formatnya yang berupa text file, sehingga universal. Banyak program spreadsheet
dan database mempunyai plug-in untuk melakukan export-import CSV. Artikel ini
akan menjelaskan bagaimana melakukan import dari CSV untuk dimasukkan kedalam
database Access dengan menggunakan ASP.
Pertama-tama,
pendeklarasian konstanta dan variabel.
Listing program
<%
@Language=VBScript %>
<% Option
Explicit %>
<%
'deklarasi
konstanta yang akan dipakai
const forReading
= 1
const
adOpenKeySet = 1
const
adLockOptimistic = 3
const
adCmdUnknown = 0
'deklarasi
variabel
dim sTextName,
sDBName, sPathName, sDelimiter
dim sFieldCount,
nLoop, sMsg
dim sSQL, oRs,
oConn
dim fso, fs,
sBuffer
dim aField
'nama file CSV
yang akan diimport
sTextName =
"csv.csv"
'nama file
database
sDBName =
"db.mdb"
'delimiter di
file CSV, menggunakan koma
sDelimiter =
","
'jumlah field
dalam CSV dan database
sFieldCount = 6
Berikutnya, kita
perlu membuka koneksi ke database dan file CSV.
on error resume
next
'koneksi
database
sSQL =
"SELECT * FROM tTable"
set oConn =
Server.CreateObject("ADODB.Connection")
set oRs =
Server.CreateObject("ADODB.Recordset")
oConn.Provider =
"Microsoft.Jet.OLEDB.4.0"
oConn.ConnectionString
= "Data Source=" & sDBName
oConn.Open
oRs.Open sSQL,
oConn, adOpenKeySet, adLockOptimistic, adCmdUnknown
'buka file teks
set fso =
Server.CreateObject("Scripting.FileSystemObject")
set fs =
fso.OpenTextFile(sPathName & sTextName, forReading)
Kemudian,
barulah masuk ke proses yang paling penting, konversi data.
'looping file
sampai akhir file
do until
fs.AtEndOfStream
sBuffer = fs.ReadLine
if sBuffer = "" then exit do
aField = split(sBuffer, sDelimiter)
oRs.AddNew
for nLoop = 0 to sFieldCount-1
oRs(nLoop) = aField(nLoop)
next
oRs.Update
Erase aField
loop
Proses konversi
data yang sesungguhnya hanyalah satu blok kecil diatas. Sampai disini, proses konversi
data sudah selesai. Data sudah di-import kedalam database. Kini saatnya
melakukan pembersihan variabel dan object.
'bersihkan
variabel
fs.Close
set fs = nothing
set fso =
nothing
oRs.Close
set oRs =
nothing
oConn.Close
set oConn =
nothing
Selesai. Selamat
mencoba.
Listing lengkap
beserta database dan file CSV untuk artikel ini dapat didownload disini :
/download/artikel/00,02,23,1.zip
Tampilan Data
dalam Halaman
oleh: Ivan R.
Lanin
Recordset hasil
query ke database kadang menghasilkan jumlah data yang cukup banyak sehingga
tidak bisa ditampilkan sekaligus ke dalam halaman HTML. Jika jumlah record
hanya sekitar 5 atau 20 record mungkin masih bisa ditampilkan dalam satu
halaman. Tapi jika jumlahnya sudah mencapai 50, 100, atau lebih, selain tidak
indah untuk dilihat untuk meload halaman dengan jumlah record sebanyak ini akan
sangat lama. Artikel ini membahas cara untuk menampilkan halaman tampilan data
dalam bentuk halaman yang masing-masing hanya mengandung jumlah data tertentu.
Contoh paling
mudah konsep tampilan data dalam bentuk halaman adalah jika anda mencari
sesuatu di search engine seperti AltaVista, Excite, dll. Data ditampilkan dalam
jumlah tertentu per halaman (10 atau lainnya), dan jika anda ingin melihat data
lainnya, tinggal menekan tombol navigasi 'next' atau 'previous'.
Di ASP, tampilan
seperti itu dapat kita wujudkan dengan memanfaatkan properti PageSize dan
AbsolutePage dari objek Recordset. PageSize menentukan jumlah record yang
ditampilkan perhalaman, sedang AbsolutePage menentukan halaman yang
ditampilkan.
Berikut contoh
coding untuk menampilkan sebagian log file ASPIndonesia.net. Log file tersebut
dicatat dalam file logs.mdb (format Access) dalam tabel tLOG.
<%
@LANGUAGE="VBSCRIPT" %>
<% Option
Explicit %>
<%
' konstanta ADO
yang akan dipakai
const
adOpenStatic = 3
const
adLockReadOnly = 1
const
adCmdUnknown = 0
' variabel
dim oConn, oRs,
sSQL, sDBName
dim nPageSize,
nPage, nPageCount
dim nRecord,
nRecordCount, nFirstRecord, nLastRecord
dim aField
dim nFieldCount,
nLoop
' inisialisasi
pertama
sDBName =
Server.Mappath("logs.mdb")
sSQL =
"SELECT * FROM tLOG"
nPageSize = 12
nPage =
Request.QueryString("pg")
if nPage =
"" or not IsNumeric(nPage) then
nPage = 1
else
nPage = CInt(nPage)
Coding di atas
adalah inisialisasi awal variabel. Nama database sesuaikan dengan lokasi fisik
file database anda. Variabel nPageSize adalah jumlah record per halaman.
Halaman yang ditampilkan diperoleh berdasarkan querystring 'pg'.
' buka
connection
set oConn =
Server.CreateObject("ADODB.Connection")
oConn.Provider =
"Microsoft.Jet.OLEDB.4.0"
oConn.ConnectionString
= "Data Source=" & sDBName
oConn.Open
' buka recordset
set oRs =
Server.CreateObject("ADODB.Recordset")
oRs.Open sSQL,
oConn, adOpenStatic, adLockReadOnly, adCmdUnknown
Selanjutnya buka
koneksi ke database, dan tampilkan data jika recordset tidak kosong. Properti
PageSize dari recordset diinisialisasikan sesuai dengan jumlah yang ditentukan
oleh variabel nPageSize.
' tampilkan data
jika ada data
if not oRs.EOF
then
' penentuan jumlah record perhalaman
oRs.PageSize = nPageSize
' hitung jumlah record, halaman, dan field
nRecordCount = oRs.RecordCount
nPageCount = oRs.PageCount
nFieldCount = oRs.Fields.Count
' redim array field berdasarkan jumlah field
redim aField(nFieldCount, 2)
' masukkan nama field ke dalam variabel array
field
for nLoop = 0 to nFieldCount-1
aField(nLoop, 0) = oRs.Fields(nLoop).Name
next
Satu bagian yang
cukup vital di sini adalah error trapping. Anda hanya menampilkan halaman mulai
dari 1 sampai jumlah total halaman (properti PageCount).
' LANJUTAN DARI SCRIPT DIATAS
' penentuan halaman yang ditampilkan
if nPage < 1 then nPage = 1
if nPage > nPageCount then nPage =
nPageCount
oRs.AbsolutePage = nPage
' penentuan nilai record pertama dan terakhir
yang ditampilkan
nFirstRecord = (nPage - 1) * nPageSize + 1
nLastRecord = (nPage - 1) * nPageSize +
nPageSize
if nLastRecord > nRecordCount then
nLastRecord = nRecordCount
'
-----------------------------------------------------------------------------
%>
<html>
<head>
<title>
Data <% =nFirstRecord %>-<%
=nLastRecord %> dari <% =nRecordCount %>
</title>
</head>
<body>
Coding untuk
navigasi dapat dilihat berikut ini.
<table
width="100%">
<tr>
<td><b>Data <% =nFirstRecord
%>-<% =nLastRecord %> dari
<% =nRecordCount %></b>
</td>
<td align="right">
<% if nPage > 1 then %>
<a
href="default.asp?pg=1">
<img
src="first.gif"
width="20" height="18" border="0"
alt="<<">
</a>
<a
href="default.asp?pg=<%=(nPage-1)%>">
<img
src="previous.gif"
width="20" height="18" border="0"
alt="<">
</a>
<% end if %>
<% if nPage<nPageCount then %>
<a
href="default.asp?pg=<%=(nPage+1)%>">
<img src="next.gif" width="20"
height="18" border="0"
alt=">">
</a>
<a
href="default.asp?pg=<%=nPageCount%>">
<img src="last.gif" width="20" height="18"
border="0" alt=">>">
</a>
<% end if %>
</td>
</tr>
</table>
<%
Response.Write
"<table border=""1""
cellpadding=""3""
cellspacing=""0"">" & vbCrLf
Response.Write
" <tr align=""center""
bgcolor=""CCCCCC"">" & vbCrLf
for nLoop = 0 to
nFieldCount-1
Response.Write "
<th><b>" &aField(nLoop, 0)&
"</b></th>" &
vbCrLf
next
Response.Write
" </tr>" & vbCrLf
for nRecord =
nFirstRecord to nLastRecord
Response.Write " <tr
valign=""top"">" & vbCrLf
for nLoop = 0 to nFieldCount-1
aField(nLoop, 1) = oRs(aField(nLoop, 0))
if aField(nLoop, 1) = "" then
aField(nLoop, 1) = " "
Response.Write " <td>"
&aField(nLoop, 1)& "</td>" & vbCrLf
next
Response.Write " </tr>" &
vbCrLf
oRs.MoveNext
if oRs.EOF then exit for
next
Response.Write
" </table>" & vbCrLf
%>
Coding untuk navigasi
di bawah tabel.
<table
width="100%">
<tr>
<td><b>Halaman <%=nPage%>
dari <%=nPageCount%></b></td>
<td align="right">
<% if nPage>1 then %>
<a
href="default.asp?pg=1">
<img src="first.gif"
width="20" height="18" border="0"
alt="<<">
</a>
<a
href="default.asp?pg=<%=(nPage-1)%>">
<img src="previous.gif"
width="20" height="18" border="0"
alt="<">
</a>
<% end if %>
<% if nPage<nPageCount then %>
<a href="default.asp?pg=<%=(nPage+1)%>">
<img src="next.gif"
width="20" height="18" border="0"
alt=">">
</a>
<a
href="default.asp?pg=<%=nPageCount%>">
<img src="last.gif"
width="20" height="18" border="0"
alt=">>">
</a>
<% end if %>
</td>
</tr>
</table>
</body>
</html>
<% end if
%>
Pelaksanaan
clean up.
<%
' clean up
Erase aField
oRs.Close
set oRs =
nothing
oConn.Close
set oConn =
nothing
%>
Demikian cara
untuk menampilkan data dalam bentuk halaman. Anda dapat mengembangkan sendiri
penggunaan lebih lanjutnya.
Untuk
mendownload contoh artikel ini : /download/artikel/00,03,08,1.zip
Untuk mencoba
demo dari teknik diatas : /demo/00,03,08,1/
Menggunakan
W3 JMAIL
untuk
Mengirim Mail Dari Halaman Web
oleh: Ivan R.
Lanin
Anda tentu
sering melihat form web untuk mengirimkan email dari halaman web. Untuk dapat
melakukan hal ini, kita harus menggunakan komponen tambahan mailer yang
diinstall di server. Artikel ini menjelaskan penggunaan W3 JMail, salah satu
komponen mailer populer yang gratis dari Dimac, untuk menerima masukan dari
pengunjung situs anda.
Pengiriman email
dari halaman web, atau lebih dikenal dengan istilah form-to-mail, bisa anda
gunakan untuk menerima komentar atau pertanyaan dari pengujung situs yang tidak
memiliki klien email. Pertama, buatlah form isian untuk pengiriman komentar.
Listing 1: Form
Isian Komentar (form.html)
<html>
<head>
<title>Komentar</title>
</head>
<body
bgcolor="#FFFFFF" text="#000000" link="#3333FF"
alink="#0000CC"
vlink="#333366">
<h2>Komentar</h2>
<p>Kirimkan
komentar anda lewat form isian berikut.</p>
<form
method="post" action="sendmail.asp">
<table
cellspacing="0" cellpadding="3">
<tr>
<td>Nama</td>
<td><input type="text"
name="Nama"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text"
name="Email"></td>
</tr>
<tr>
<td>Subyek</td>
<td><input type="text"
name="Subyek"></td>
</tr>
<tr>
<td
colspan="2">Komentar</td>
</tr>
<tr>
<td colspan="2">
<textarea name="Komentar"
rows="10" cols="40" wrap="virtual">
</textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit"
value="Kirim Komentar">
<input type="reset">
</td>
</tr>
</table>
</form>
</body>
</html>
Form terdiri dari
empat field, nama pengirim, email, subyek, dan isi komentarnya. Form akan
diposting ke halaman lain (sendmail.asp) yang menangani pengiriman melalui
komponen JMail. Penanganan pengiriman sederhana yang belum menggunakan validasi
tipe data dan data yang harus dikirim dapat dilihat pada listing 2.
Listing 2:
Pengiriman email (sendmail.asp)
<%@
LANGUAGE="VBSCRIPT" %>
<% Option
Explicit %>
<%
dim sSMTPServer,
sToName, sToEmail
dim sMsg
dim oMailer
sSMTPServer =
"192.168.10.2"
sToName =
"Ivan Lanin"
sToEmail =
"ivan@sangar.misrg"
on error resume
next
set oMailer =
Server.CreateObject("JMail.SMTPMail")
oMailer.SenderName
= Request.Form("Nama")
oMailer.Sender =
Request.Form("Email")
oMailer.ServerAddress
= sSMTPServer
oMailer.Subject
= Request.Form("Subyek")
oMailer.Body =
Request.Form("Komentar")
oMailer.AddHeader
"Originating-IP", Request.ServerVariables("REMOTE_ADDR")
oMailer.AddHeader
"User-Agent", Request.ServerVariables("HTTP_USER_AGENT")
oMailer.AddRecipientEx
sToEmail, sToName
oMailer.Execute
set oMailer =
nothing
if err then
sMsg = "Terjadi kesalahan. Pengiriman
komentar gagal dilaksanakan."
else
sMsg = "Pengiriman komentar telah
dilaksanakan dengan sukses."
end if
%>
<html>
<head>
<title>Pengiriman
Komentar</title>
</head>
<body
bgcolor="#FFFFFF" text="#000000" link="#3333FF"
alink="#0000CC"
vlink="#333366">
<h2>Pengiriman
Komentar</h2>
<p><%
=sMsg%></p>
</body>
</html>
Pertama,
tentukanlah variabel alamat SMTP server (sSMTPServer) yang anda gunakan untuk
mengirim surat. Bentuknya bisa berupa nama server atau nomer IP. Pada contoh di
atas digunakan nomer IP. Selanjutnya tentukan nama dan alamat email tujuan
(sToName dan sToEmail). Yang diperlukan sebenarnya hanya alamat email, nama
hanya digunakan sebagai pelengkap dan bisa tidak ditulis.
Inisiasi
variabel obyek mailer (oMailer) sebagai JMail.SMTPMail. Tentu saja anda harus
meregistrasi komponen JMail anda ke dalam sistem. Cara untuk meregistrasi
komponen diluar lingkup artikel ini. Sebagai tips, jika menggunakan Windows NT,
anda harus login dengan hak administrator dan menggunakan regsvr32.exe untuk
meregister komponen anda.
Setelah itu,
setting beberapa property obyek oMailer.
SenderName : Isi
dengan nama pengirim
Sender : Isi
dengan email pengirim
ServerAddress :
Isi dengan nama atau nomer IP server SMTP
Subject : Isi
dengan subyek email
Body : Isi pesan
Method obyek
oMailer yang diisi selanjutnya adalah
AddHeader:
Menambahkan header surat. Format sintaksnya adalah oMailer.AddHeader [Header],
[Nilai]
AddRecipientEx:
Menambahkan nama dan alamat email penerima surt. Format sintaksnya adalah
Mailer.AddRecipientEx [Email], [Nama]
Laksanakan
pengiriman dengan menjalankan method Execute. Jika berhasil, akan ditampilkan
pesan bahwa komentar berhasil dikirimkan. Sebaliknya jika tidak, akan ditampilkan
pesan bahwa komentar gagal dikirimkan.
Dokumentasi
lengkap property dan method JMail dapat dilihat di Dimac.
Menutup Lubang Keamanan pada IIS
oleh Ivan R.
Lanin
Coding merupakan
hasil karya yang paling berharga untuk seorang programmer. Tentu anda tidak
ingin hasil karya anda tersebut dilihat tanpa izin anda? Artikel berikut
membahas dua lubang keamanan yang menyebabkan pengunjung dapat melihat source
code ASP anda. Artikel ini tidak ditujukan untuk membahas semua lubang keamanan
yang ada, melainkan sebagian saja.
Lubang Keamanan
#1 ::$DATA
Misalkan site
anda adalah http://www.somesite.com dan halaman utama anda adalah default.asp.
Jika anda ketikkan http://www.somesite.com/default.asp::$DATA dan anda dapat
melihat coding asp anda, berarti anda masih memiliki bug tersebut. Segera lihat
keterangan detil untuk mengatasi bug IIS4 ini di situs Microsoft.
Bug ini telah
ditemukan sejak Juli 1998 dan sayangnya, merupakan karakteristik semua file NT.
Di NT Service Pack 5, masalah ini telah diatasi. Selain menginstall patch NT,
anda dapat juga mengatasi bug tersebut dengan mengatur hak akses direktori ASP
anda menjadi EXECUTE, dan tidak READ.
Cara kedua
adalah manambahkan mapping aplikasi ekstension .asp::$DATA dan .asa::$DATA
dengan ASP.DLL. Dengan demikian, setiap user menuliskan namafile.asp::$DATA,
IIS akan melakukan mapping ke ASP.DLL, dan source code tidak dapat dilihat.
Tapi tentu saja
ini bukan solusi yang paling baik dan hanya bersifat sementara. Paling baik
adalah dengan menginstall patch NT.
Mengatur Hak Akses Direktori
• Buka MS
Management Console - Internet Service Manager
• Klik kanan di
nama domain, dan pilih 'Properties'
• Pilih Tab
'Home Directory'
• Pilih hak
akses hanya untuk execute