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
Menambah Mapping Aplikasi
• Buka MS Management Console -
Internet Service Manager
• Klik kanan di nama domain, dan pilih
'Properties'
• Pilih Tab 'Home Directory' dan klik
tombol 'Configuration'
• Tambahkan mapping untuk .asp::$DATA
dan .asa::$DATA, dan diarahkan ke ASP.DLL, persis seperti mapping
pada ekstension .asp.
Lubang Keamanan
#2 WEBHITS.DLL BUG
Bug kedua
merupakan bug di MS Index Server. Microsoft menyebut bug itu sebagai
"Malformed Hit-Highlighting Argument Vulnerability". Bug ini
ditemukan pada 20 Januari 2000 dan dibahas di Microsoft Security Bulletin.
Sama seperti bug
::$DATA, misalkan site anda adalah http://www.somesite.com, dan halaman utama
anda adalah default.asp. Jika anda ketikkan
http://www.somesite.com/null.htw?_CiWebHitsFile=/default.asp%20&CiRestriction=none&CiHiliteType=Full
dan anda bisa melihat coding asp anda, berarti anda juga terkena bug
webhits.dll ini.
Bug ini dapat
diatasi dengan menginstall patch dari Microsoft. URL untuk mendowload patch
tersebut dapat anda temukan di artikel TechNet Microsoft di atas. Selain itu,
cara lain untuk mengatasi bug ini adalah dengan menghilangkan semua mapping
aplikasi selain .asp dan .asa dan terutama .htw. Tapi cara ini mungkin kurang
tepat kalau anda memang membutuhkan mapping tersebut.
Menghilangkan Mapping Aplikasi
•
Buka MS Management Console - Internet Service Manager
• Klik kanan di nama domain, dan pilih
'Properties'
• Pilih Tab 'Home Directory' dan klik tombol
'Configuration'
•
Hilangkan mapping aplikasi. KECUALI .ASP dan .ASA
Penutup
Artikel ini
bukan ditujukan untuk menghambat anda menggunakan ASP karena kuatir masalah
keamanannya. SETIAP aplikasi pasti memiliki bug, karena yang membuat aplikasi
hanyalah manusia yang pasti tak terlepas dari kesalahan. Yang perlu kita
lakukan adalah bagaimana saling menutup
kekurangan-kekurangan
itu. Happy Coding!
Mengakses Search Engine Dunia dari Script ASP Anda
oleh: Gunadi
Kita tentunya
ingin atau mengharapkan site yang ita buat sering dikunjungi orang. Dan tentu
kita juga ingin memberikan fasilitas yang memudahkan pengunjung site kita untuk
mencari sesuatu di internet, tanpa harus berpindah terlebih dahulu dari site
kita.
Untuk itu kita
dapat menambahkan beberapa mesin pencari yang sudah umum dikenal untuk
melakukan pencarian dengan memanfaatkan query string.
Langkah pertama, kita coba masuk ke mesin pencari kesukaan
kita, dan ambil query stringnya. Kita dapat mengambil query string tersebut
dengan mencoba mencari sesuatu menggunakan mesin pencari tersebut.
Sebagai contoh Yahoo menggunakan
query string
http://yahoo.com.bin/search?p=TEKSyangDICARI&z=2&hc=0&hs=0
untuk melakukan pencarian.
Langkah
selanjutnya, buatlah sebuah page untuk melakukan pencarian tersebut. Mulai
dengan sebuah form sederhana, text box, select box dan tombol submit. Text box
digunakan untuk memasukan kata yang mau dicari, sedangkan Select box digunaan
untuk memilih mesin pencari yang digunakan.
<form
action="go_search.asp" method="POST">
Kata yang di cari:<br>
<input
name="Tesk" size="50"> <br>
menggunakan search engine :
<SELECT
NAME="Engine">
<OPTION
VALUE="Altavista">Altavista</OPTION>
<OPTION VALUE="Excite">Excite</OPTION>
<OPTION
VALUE="Go">Go</OPTION>
<OPTION
VALUE="Hotbot">Hotbot</OPTION>
<OPTION
VALUE="Lycos">Lycos</OPTION>
<OPTION
VALUE="MSN">MSN</OPTION>
<OPTION
VALUE="WebCrawler">WebCrawler</OPTION>
<OPTION
VALUE="Yahoo">Yahoo</OPTION>
</SELECT><BR>
<input
type="submit" value="Mulai Cari">
<INPUT
TYPE="reset" value="Batal">
</form>
Selanjutnya
buatlah script asp untuk mengolah masukan dari form tersebut di atas. Kita
dapat menggunakan If...Then atau Select Case statement dengan Response.Redirect
untuk menunjuk mesin pencari yang benar. Di bawah ini adalah listingnya :
<%
select case
Request.Form("Engine")
case "Altavista"
Response.Redirect
("http://www.altavista.com/" & _
"cgi-bin/query?pg=q&sc=on&hl=on&q="
& Request.Form("Teks") & _
"&kl=XX&stype=stext&search.x=42&search.y=12")
case "Excite"
Response.Redirect
("http://search.excite.com/" &_
"search.gw?search=" &
Request.Form("Teks"))
case "Go"
Response.Redirect
("http://www.go.com/" & _
"Titles?col=WW&qt=" & Request.Form("Teks")
& _
"svx=home_searchbox&sv=IS&lk=noframes")
case "Hotbot"
Response.Redirect
("http://hotbot.lycos.com/?MT=" & _
Request.Form("Teks") & _
"&SM=MC&DV=0&LG=any&DC=10&DE=2&x=24&y=6")
case "Lycos"
Response.Redirect
("http://www.lycos.com/" & _
"srch/?lpv=1&loc=searchhp&query=" & _
Request.Form("Teks") & "&x=45&y=4")
case "MSN"
Response.Redirect
("http://search.msn.com/" & _
"results.asp?RS=CHECKED&FORM=MSNH&v=1&q=" & _
Request.Form("Teks"))
case "WebCrawler"
Response.Redirect
("http://www.webcrawler.com/" & _
"cgi-bin/WebQuery?searchText=" & _
Request.Form("Teks"))
case else
Response.Redirect
("http://ink.yahoo.com/bin/query?p=" & _
Request.Form("Teks") &
"&z=2&hc=0&hs=0")
end select
%>
Anda bisa
menambahkan mesin pencari yang lain jia anda mengetahui query string yang
digunakan oleh mesin pencari tersebut.
Untuk mencoba
demo dari script di atas, silahkan buka alamat ini :
http://www6.ewebcity.com/ega/search.asp.
Pada kesempatan
yang lain kita akan mencoba membuat fasilitas direktori servis seperti Yahoo
atau yang sejenisnya.
Jika ada
kesalahan atau ingin memberikan komentar silahkan menghubungi
gunadi_ilyas@mip.co.id.
Mengambil
Seluruh Nilai Form dan Querystring dalam Sekali Proses
oleh: Tirta K.
Untario
Biasanya kita
mengambil nilai dari form dan querystring dengan cara seperti ini:
<%
querystring = Request.Querystring("variabel")
form =
Request.Form("variabel")
%>
Jika item yang
ada dalam querystring atau form banyak, maka cara diatas tidak efektif,
melelahkan dan sulit untuk di-debug.
Untuk itu, ada
cara untuk mengambil nilai dari form dan querystring dalam sekali proses. Kita
tidak perlu lagi melakukan coding untuk tiap item yang ada dalam form. Hal ini
juga membuat form atau querystring yang kita buat dapat fleksibel. Perubahan
pada form tidak perlu diikuti dengan perubahan coding pada halaman selanjutnya.
Script yang
dibutuhkan sangat singkat, lihatlah contoh dibawah ini untuk mengambil nilai
dari
querystring:
<%
For Each Item in
Request.QueryString
For x = 1 To
Request.QueryString(Item).Count
Response.Write Item &
" = " _
&
Request.QueryString(Item)(x) & "<br>"
Next
Next
%>
Untuk mengambil nilai dari
form, gunakanlah script dibawah ini:
<%
For Each Item in Request.Form
For x = 1 To
Request.Form(Item).Count
Response.Write Item & " = " _
&
Request.Form(Item)(x) & "<br>"
Next
Next
%>
Mudah sekali.
Nilai yang diambil berguna untuk debugging, atau juga bisa dimasukkan kedalam
dictionary atau array untuk diproses lebih lanjut.
Untuk mengambil
seluruh nilai dari cookies, perlu pendekatan lain, karena cookies mempunyai
keys. Cara untuk mengambil nilai cookies dalam sekali proses akan dibahas pada
artikel lain.
Untuk mencoba
demo dari teknik diatas : /demo/00,03,29,1/
Cache pada Script ASP
oleh: Tirta K. Untario
Kita perlu
mengetahui bagaimana script ASP di-cache agar dapat memanipulasi cache jika
diperlukan. Kadangkala kita perlu untuk menghindari cache halaman web yang
dilakukan baik oleh proxy server ataupun browser, kadangkala kita malah perlu
'memaksa' proxy server untuk melakukan cache pada script yang bersangkutan.
Untuk melakukan hal ini, ada beberapa teknik yang bisa dipergunakan.
Response.Expires
Response.Expires
ini memasukkan data mengenai berapa menit script ASP di-cache pada browser
Anda. Defaultnya adalah unlimited, jadi tidak ada batasan cache. Contoh :
<%
'Script di-cache
selama 5 menit setelah dieksekusi
Response.Expires
= 5
'Script tidak
di-cache sama sekali
esponse.Expires
= 0
%>
Response.ExpiresAbsolute
Response.ExpiresAbsolute
memasukkan data mengenai sampai kapan script ASP ini di-cache di browser Anda.
Nilai yang perlu diisikan berupa format date-time. Property ini akan membaca
tanggal dan waktu dari system Anda, bukan server. Contoh :
<%
'Script tidak
di-cache setelah 31 Mei 2000 pada pukul 13:30:15
Response.ExpiresAbsolute
= #May 31,2000 13:30:15#
'Script tidak
di-cache
Response.ExpiresAbsolute = Now()
%>
Jangan lupa
mengapit format date-time Anda dengan #, seperti contoh diatas.
Response.CacheControl
Secara default,
script ASP tidak di-cache pada proxy server, hanya pada browser Anda. Ketika
Anda berusaha melihat lagi script yang sama, maka request langsung ditujukan
kepada web server, bukan proxy server. Jika Anda berusaha melihat script yang
sama ketika browser sedang offline, maka request akan ditujukan kepada cache di
browser Anda. Contoh :
<%
'Default. Script
hanya di-cache pada browser Anda
Response.CacheControl
= "private"
'Script bisa
di-cache pada proxy server
Response.CacheControl
= "public"
'Script tidak
di-cache sama sekali
Response.CacheControl
= "no-cache"
%>
Penting
Property dari
object Response diatas harus dikirimkan bersama dengan HTTP Header. Karena itu,
Anda harus menuliskan kode diatas sebelum ada data yang dikirimkan ke browser
Anda. Contoh :
<%
Response.Expires
= 0
%>
<html>
<!-- Kode
html Anda -->
</html>
Jika Anda mau
memasukkan property di tengah-tengah script ASP Anda, maka pada baris pertama
script ASP, harus diberi Response.Buffer = TRUE. Contoh :
<%
Response.Buffer = TRUE %>
<html>
<!-- Kode
html Anda -->
<%
Response.Expires = 0 %>
</html>
Membuat Buku Tamu dengan Database
oleh: Tirta K.
Untario
Buku tamu sering
kita jumpai di internet. Juga sudah banyak script-script gratis yang
menyediakan fungsi buku tamu ini. Pada artikel ini, kita akan mempelajari
teknik dasar dalam membuat buku tamu dengan ASP. Buku tamu ini sangat
sederhana. Silakan Anda bereksperimen sendiri dalam mengembangkannya.
Data buku tamu
ini disimpan kedalam database Access. Table yang ada didalamnya berbentuk
seperti ini:
Field
Tipe data
nama
Text(50)
email
Text(50)
tanggal
Date/Time
komentar
Memo
Dalam artikel
ini, semua proses akan dilakukan dalam satu script saja, yaitu default.asp.
Kemudian, form
untuk memasukkan data berbentuk seperti ini.
<form
method="post" action="default.asp">
Nama : <input
type="text" name="nama" size="50"
maxlength="50">
Email : <input
type="text" name="email" size="50" maxlength="50">
Komentar : <textarea
name="komentar" cols="48"
rows="8"></textarea>
' hidden field ini digunakan
untuk menentukan
' apakah form sudah dikirim
<input
type="hidden" name="entry" value="true">
<input
type="reset" name="Reset" value="Reset">
<input
type="submit" name="Submit" value="Submit">
</form>
Untuk memproses
input dari form diatas, diperlukan satu function untuk melakukan validasi
terhadap nilai input. Dibawah ini listing contoh function untuk melakuakn
validasi sangat sederhana. Function ini hanya memeriksa apakah field tersebut
ada isinya, dan kemudian mengubah tag HTML yang ada didalamnya.
<%
Function Validasi (varString)
If varString <>
"" Then
Validasi =
Server.HTMLEncode(Trim(varString))
Else
Validasi = FALSE
End If
End Function
%>
Sekarang, koneksi ke database
dibuka.
<%
strConnString =
"Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data
Source=" & Server.Mappath("bukutamu.mdb") &
";" _
&
"Mode=Read|Write;Persist Security Info=False"
Set oConn =
Server.CreateObject("ADODB.Connection")
oConn.Open strConnString
%>
Jika
Request.Form("entry") ada isinya, berarti form baru saja dikirimkan.
Maka akan
diproses lewat
blok kode dibawah ini. Blok kode dibawah ini akan memasukkan nilai dari form
yang dikirimkan jika semua validasi selesai.
<%
If
Request.Form("entry") = "true" Then
strNama =
Validasi(Request.Form("nama"))
strEmail =
Validasi(Request.Form("email"))
strKomentar =
Validasi(Request.Form("komentar"))
If (strNama = FALSE) OR
(strEmail = FALSE) OR (strKomentar = FALSE) Then
strStatus = "Data
kurang lengkap!"
Else
strQuery = "INSERT
INTO daftar (nama, email, tanggal, komentar) VALUES " _
& "('"
& strNama & "','" & strEmail & "'," _
& "#"
& Now() & "#,'" & strKomentar & "')"
oConn.Execute strQuery
End If
End If
%>
Setelah proses
diatas selesai, maka yang perlu dilakukan selanjutnya adalah mengambil data
yang ada dalam database dan kemudian menampilkannya.
<%
strQuery = "SELECT nama,
email, tanggal, komentar " _
& "FROM daftar
ORDER BY tanggal DESC"
Set oRs = Server.CreateObject("ADODB.Recordset")
oRs.Source = strQuery
oRs.ActiveConnection = oConn
oRs.Open
While NOT oRs.EOF
Response.Write
"<p>"
Response.Write "Oleh :
" & oRs(0) _
& "><a
href=""mailto:" & oRs(1) & """>"
& oRs(1) & "</a>><br>"
Response.Write "Tanggal
: " & FormatDateTime(oRs(2), 1) & "<br>"
Response.Write
"Komentar : " & oRs(3) & "<br>
Response.Write
"</p>"
oRs.MoveNext
Wend
%>
Untuk
mendownload contoh artikel ini : /download/artikel/00,03,12,1.zip
Membuat Buku Tamu Berbasis Text
oleh: Andriko
Perdana
Kalau dalam
artikel terdahulu sudah dibahas bagaimana membuat buku tamu dengan basis
database, maka pada kesempatan ini akan kita bahas bagaimana membuat buku tamu
yang berbasis text.
Komponennya
antara lain:
Skrip ASP
Berisi program
ASP untuk buku tamu
File dengan
ekstensi .txt
Untuk menyimpan
data pengunjung yang mengisi buku tamu
Skrip ASP
<%
' Ini untuk
mengontrol isi buku tamu, dimana pada tengah malam ' pergantian tanggal isi
buku tamu akan di hapus agar daftarnya ' tidak panjang'
Bisa juga anda
atur agar tetap ditampilkan semuanya dengan ' mensetnya menjadi False
Const bDeleteEntries = True
' Ini untuk
memudahkan kita menghapus isi buku tamu jika ada
' pengunjung
yang mengisi dengan kata-kata tak senonoh atau
' lainnya, kita
bisa hapus di file .txt-nya
Dim bForce
bForce =
Request.QueryString("force")
' bForce = ""
' String variable unutk
menaruh file yang dimana pesan
' pengunjung disimpan
Dim strFile
strFile =
Server.MapPath("bukutamu.txt")
' Ini untuk menampilkan
formulir yang akan diisi oleh pengunjung
If Request.Form.Count = 0
Then
%>
<H3>Mohon Isi Buku Tamu
kami :</H3>
<FORM
ACTION="bukutamu.asp" METHOD="post">
<TABLE>
<TR>
<TD
ALIGN="right"><B>Nama:</B></TD>
<TD><INPUT TYPE="text"
NAME="nama" SIZE="15"></INPUT></TD>
</TR>
<TR>
<TD
ALIGN="right"><B>Pesan:</B></TD>
<TD><INPUT
TYPE="text" NAME="pesan"
SIZE="35"></INPUT></TD>
</TR>
</TABLE>
<INPUT
TYPE="submit" VALUE="Masukkan ke buku
tamu!"></INPUT>
</FORM>
<BR>
<H3>Pesan-pesan hari
ini:</H3>
<!--#INCLUDE
FILE="bukutamu.txt"-->
<%
Else
' Masukkan data kedalam text
file
Set objFSO =
Server.CreateObject("Scripting.FileSystemObject")
Set objFile =
objFSO.OpenTextFile(strFile, 8, True)
objFile.Write "<B>"
objFile.Write
Server.HTMLEncode(Request.Form("nama"))
objFile.Write
":</B> "
objFile.Write
Server.HTMLEncode(Request.Form("pesan"))
objFile.Write
"<BR>"
objFile.WriteLine
""
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
' Ini untuk memberitahu
pengunjung bahwa pesan mereka telah masuk
%>
<H3>Komentar dan pesan
anda telah kami simpan!</H3>
<A
HREF="bukutamu.asp">Kembali ke Buku Tamu</A>
<%
End If
If bDeleteEntries Then
Set objFSO =
Server.CreateObject("Scripting.FileSystemObject")
Set objFile =
objFSO.GetFile(strFile)
If DateDiff("d",
objFile.DateLastModified, Date()) <> 0 _
OR bForce <>
"" Then
Set objFile = Nothing
Set objFile =
objFSO.CreateTextFile(strFile, True)
' Ini untuk mengisi file,
jika belum ada pengunjung yang mengisi
objFile.Write
"<B>Andriko:</B> "
objFile.WriteLine "Homepage anda
bagus!<BR>"
objFile.Close
End If
Set objFile = Nothing
Set objFSO = Nothing
End If
%>
Simpan script ini dengan nama bukutamu.asp
File .txt
File ini untuk
menyimpan data dari pengunjung. Buka notepad anda lalu ketikkan sbb:
<B>Andriko:</B>
Testing<BR> ...(atau nama anda )
Kemudian simpan
dengan nama bukutamu.txt dan taruh dalam direktori yang sama dengan file
bukutamu.asp.
Untuk
mendownload contoh artikel ini : /download/artikel/00,05,04,1.zip
Membuat Forum Diskusi
oleh: Gunadi
Catatan: Script
forum diskusi pada artikel ini bukan script yang dipakai pada forum diskusi di
ASPIndonesia.net
Forum diskusi
atau juga Buletin Board System (BBS), merupakan fasilitas penting yang dimiliki
hampir oleh semua situs organisasi. Karena dengan fasilitas ini akan membuat
interaksi yang lebih aktif dari anggotanya. Di sini kita akan membahas
bagaimana cara membuat sebuah forum diskusi dengan memanfaatkan database
Access.
Langkah pertama,
buatlah sebuah database Access (misalnya kita namakan forumdb.mdb).
Kemudian kita
buat juga tabel forum dengan struktur sebagai berikut :
Nama Field
Tipe Field
PID
Integer
(Autonumber)
PID_Prev
Integer
PID_Root
Integer
When
Date/Time
Name
Text(50)
Email
Text(50)
Subject
Text(75)
Body
Memo
Langkah kedua,
buatlah sebuah prosedur pada script ASP yang berfungsi untuk menampilkan data
yang PID_Root nya sama dengan 0 (awal semua topik).
<%Sub View
'Buka Koneksi ke database
Set v_conn =
Server.CreatedObject("ADODB.Connection")
v_conn.Open (conn_string)
'Buat Query
v_strsql = "Select *
From Forum Where PID_Root = 0 Order By When DESC"
'Buka RecordSet
set v_rs =
Server.CreateObject("ADODB.Recordset")
v_rs.Open v_strsql, v_conn,
1, 1
'Tampilkan Record selama
masih ada
Do Until v_rs.EOF
'Cek apakah PID = PID yang
aktif (ditampilkan detailnya)
If v_rs("PID") =
CInt(Request("pid")) then
Response.Write
"<FONT COLOR='#FF0000'>"
Response.Write "•
" & v_rs("Subject") & _
" --- (" &
v_rs("Name") & ") " & _
v_rs("When")
& "<BR>"
Response.Write
"</FONT>"
else
Response.Write "• <A
HREF='forum.asp?md=detail&pid=" & _
v_rs("PID")
& "'>" & v_rs("Subject") & _
"</A> ---
(" & rs("Name") & ") " &
v_rs("When") & "<BR>"
end if
'Panggil Prosedur
untuk menampilkan semua record yang rootnya PID ini
'Angka 1
menunjukkan paramter berapa kali spasi ditampilkan
'disebelah kiri
record
Call
DisplayChild(ParentID, 1)
v_rs.MoveNext
Loop
'Tutup Semua Object
v_rs.close
v_conn.close
Set v_rs = Nothing
Set v_conn = Nothing
End Sub%>
Langkah ketiga,
buatlah sebuah prosedur lagi yang berfungsi untuk menampilkan semua record yang
PID_Rootnya tidak sama dengan 0 (Child dari setiap topik). Dimana prosedur kita
kali ini bersifat rekursif (memanggil dirinya sendiri)
<%Sub
DisplayChild(ParentID, Spasi)
'Buka oneksi ke database
Set child_conn=
Server.CreateObject("ADODB.Connection")
child_conn.Open
(conn_string)
child_strSql = "Select
* from forum where PID_Prev=" & _
ParentID & " order by
PID_Prev, When DESC"
Set child_rs =
Server.CreateObject("ADODB.Recordset")
child_rs.Open child_strSql,
child_conn, 1, 1
if child_rs.EOF or
child_rs.BOF then
exit sub
end if
Do until child_rs.EOF
for blanknya = 1 to
CInt(Spasi)
Response.Write
" "
next
if
child_rs("PID") = CInt(Request("pid")) then
Response.Write
"<FONT COLOR='#FF0000'>"
Response.Write "•
" & child_rs("Subject") & _
" --- (" &
child_rs("Name") & _
") "
child_rs("When") & "<BR>"
Response.Write
"</FONT>"
else
Response.Write "•
<A HREF='forum.asp?md=detail&pid=" & _
child_rs("PID") & "'>" &
child_rs("Subject") & _
"</A> --- (" &
child_rs("Name") & ") " & _
child_rs("When") & "<BR>"
end if
Call
DisplayChild(child_rs("PID"), Spasi + 1)
child_rs.Movenext
loop
'Tutup object
child_rs.close
set child_rs = nothing
child_conn.Close
set child_conn = nothing
End Sub%>
Langkah terakhir
anda tinggal membuat form entry untuk Post dan Replynya, kemudian anda buat
juga prosedur untuk menyimpan isi form tersebut.
Sehingga pada
Script Utama anda tinggal memanggil semua prosedur yang telah dibuat
berdasarkan
Request("md").
<HTML>
<HEAD>
<TITLE> Forum Diskusi
</TITLE>
</HEAD>
<BODY
BGCOLOR="#FFFFFF">
<%
select case
Request("md")
case "detail"
Call Detail
Call View
case "post"
Call Post
case "reply"
Call Reply
case "save"
Call Save
case else
Call View
end select
%>
</BODY>
</HTML>
Untuk mencoba
demo dari script di atas, silahkan buka alamat ini :
http://www6.ewebcity.com/castranet/forum.asp.
Jika ada kesalahan
atau ingin memberikan komentar silahkan menghubungi gunadi_ilyas@mip.co.id.
Membuat Text Counter dengan ASP
oleh: Andriko
Perdana
Kadang-kadang
kita perlu menambahkan counter di halaman depan homepage kita, gunanya sebagai
masukan bagi kita untuk mengetahui seberapa sering homepage kita di akses
orang. Sebenarnya counter bisa kita buat dengan mudah jika kita menggunakan
Microsoft Frontpage, tapi artikel ini akan membahas bagaimana membuat counter
dengan ASP.
Ada 2 komponen yang
kita gunakan dalam membuat counter ini :
Skrip ASP
Berisi program
ASP untuk counter
File dengen
ekstensi .txt
Karena counter
ini berbasis teks, maka file ini digunakan untuk menyimpan datanya.
Skrip ASP
Mudah sekali
sebenarnya untuk membuatnya, pertama lihat skrip dibawah ini:
<%
' buka FSO
Set FileObject =
Server.CreateObject("Scripting.FileSystemObject")
HitsFile = Server.MapPath
("hits.txt")
' buka text file yang berisi
counter
Set InStream=
FileObject.OpenTextFile (HitsFile, 1, false )
OldHits =
Trim(InStream.ReadLine)
NewHits = OldHits + 1
' buka text file yang sama
untuk ditulis
Set OutStream=
FileObject.CreateTextFile (HitsFile, True)
OutStream.WriteLine(NewHits)
' tutup dan hapus semua
object
Set FileObject = Nothing
InStream.Close
Set InStream = Nothing
OutStream.Close
Set OutStream = Nothing
%>
Kemudian di
halaman homepage yang ingin diberi counter,kita buat seperti ini:
Homepage ini telah diakses
<%= NewHits %> kali
Skrip lengkapnya :
<HTML>
<HEAD>
<TITLE>counter</TITLE>
</HEAD>
<BODY>
<%
' buka FSO
Set FileObject =
Server.CreateObject("Scripting.FileSystemObject")
HitsFile = Server.MapPath
("hits.txt")
' buka text file yang berisi
counter
Set InStream=
FileObject.OpenTextFile (HitsFile, 1, false )
OldHits =
Trim(InStream.ReadLine)
NewHits = OldHits + 1
' buka text file yang sama
untuk ditulis
Set OutStream=
FileObject.CreateTextFile (HitsFile, True)
OutStream.WriteLine(NewHits)
' tutup dan hapus semua
object
Set FileObject = Nothing
InStream.Close
Set InStream = Nothing
OutStream.Close
Set OutStream = Nothing
%>
Homepage ini telah diakses
<% = NewHits %> kali.
</BODY>
</HTML>
Simpan file ini
sebagai counter.asp.
File dengen
ekstensi .txt
Buka program
text editor seperti notepad, lalu ketik angka 1, kemudian simpan dengan nama
hits.txt. Simpan file ini satu direktori dengan counter.asp, jadi deh...:-).
Untuk contoh
lihat : http://www.jasnita.net.id
Membuat Tips of The Day
oleh: Sony Ari
Yuniarto
Masih ingat
script untuk menampilkan banner rotator yang beberapa waktu lalu dimuat?
Berikut ini kembali saya sampaikan salah satu teknik untuk menampilkan
pesan-pesan yang tersimpan di dalam file text ke sebuah tampilan halaman .asp
secara dynamic , ketika halaman .asp tersebut di reload.
Kita akan
memanfaatkan object Scripting untuk membaca isi dari sebuah file yang disimpan
di web server.
Untuk
merealisasikan teknik ini diperlukan 2 file sebagai berikut:
default.asp
Merupakan
halaman .asp yang dipakai untuk menampilkan tips of the day.
tips.txt
Merupakan file
dimana isi tips tersebut disimpan, tips.txt merupakan file yang akan dibaca
oleh script yang terdapat di dalam default.asp
default.asp
Mekanisme untuk membaca
isi file .txt yang dipakai oleh script .asp pada halaman ini adalah dengan
memanfaatkan method OpenTextFile dari class module FileSystemObject, object
Scripting yang
terdapat di web server IIS 4.0.
Tempatkan file
tips.txt dimana saja pada webserver. Pada contoh ini, tips.txt akan
diletakkan pada
directory yang selevel dengan default.asp. Script selengkapnya sebagai berikut:
<%
' Variables
Dim objFile
Dim objStream
Dim TextNumber
Dim JumlahTips
Dim i
' Jumlah baris
ini harus sama dengan jumlah tips yang ada
' dalam file
tips.txt
JumlahTips = 30
' buat object
FSO
Set objFile =
Server.CreateObject("Scripting.FileSystemObject")
' buka file
tips.txt
Set objStream =
objFile.OpenTextFile(Server.MapPath ("tips.txt"))
' Randomize
Timer ini berguna mendapatkan nilai random yang
' selalu
berubah, sebagai tambahan dari function Rnd.
' Bereksperimenlah
dengan memakai Rnd tanpa Randomize Timer,
' anda akan
melihat perbedaannya.
Randomize Timer
' Ini untuk
mendapatkan nilai baris secara random
TextNumber = Int(Rnd *
JumlahTips)
' Jika belum
sampai pada nilai baris yang sudah ditentukan,
' baris-baris
sebelumnya dilewati
For i = 1 to TextNumber
objStream.SkipLine
Next
' Baris yang
didapat secara random tersebut dibaca dengan ini
strText= objStream.ReadLine
' Tutup semua
variabel
objStream.Close
Set objStream = Nothing
Set objFile = Nothing
%>
<html>
<head>
<title>Tips of The
Day</title>
</head>
<body>
<% = strText %>
</body>
tips.txt
Isi dari file
tips.txt merupakan kumpulan tip yang nantinya akan ditampilkan oleh file
default.asp.
Anda dapat mengisikan berbagai pesan di dalam file ini, untuk memisahkan satu
tip dengan tip lainnya silakan pisahkan dengan menekan tombol enter atau
karakter line break.
Tidak ada
batasan mengenai jumlah tips yang dapat dimasukkan, selama Anda ingat untuk
merubah variabel JumlahTips yang ada.
Untuk
mendownload contoh artikel ini : /download/artikel/00,03,20,1.zip
Untuk mencoba
demo dari teknik diatas : /demo/00,03,20,1/
Menghitung Pengunjung yang Online
oleh: Andriko
Perdana
Kita dapat
mengetahui jumlah pengunjung yang sedang online di situs kita. Ini berguna
misalnya jika kita ingin menaruh program chatting di homepage, sehingga
pengunjung dapat mengetahui apakah ada orang dalam ruangan chatting atau tidak
(Pengunjung nggak bakalan mau masuk keruangan kosong....iya kan..:P)
Artikel ini akan
membahas cara membuatnya dengan menggunakan file global.asa yang akan digunakan
untuk menyimpan data variabel (jumlah hits pengunjung).
File global.asa
ini akan berisi 4 buah event handling subroutine, yaitu:
1. Application_OnStart
2.
Application_OnEnd
3.
Session_OnStart
4. Session_OnEnd
Sebelumnya, Anda
perlu mengetahui dasar-dasar penggunaan file global.asa. Untuk saat ini,
artikel mengenai global.asa belum selesai ditulis. Mari kita lihat cara
pembuatannya.
<SCRIPT LANGUAGE=VBScript
RUNAT=Server>
Sub Application_OnStart
' Pada saat
aplikasi dimulai, set Active = 0
' menunjukkan
bahwa belum ada yang mengunjungi
Application("Active") = 0
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
' Jika ada
session baru, maka Active ditambah satu,
' menunjukkan
jika ada satu pengunjung yang online
' Tiap session,
variabel ini akan bertambah satu
Application.lock
Application("Active") = Application("Active") + 1
Application.unlock
End Sub
Sub Session_OnEnd
' Jika session
sudah berakhir, artinya pengunjung sudah
' meninggalkan
situs ini, maka Sctive dikurangi satu
Application.lock
Application("Active") = Application("Active") - 1
Application.unlock
End Sub
</SCRIPT>
Untuk
menampilkan hasilnya, Anda tinggal menulis variabel
Application("Active") dimanapun Anda kehendaki. Contohnya :
<html>
<head>
<title>Membuat Curret
Visitor</title>
</head>
<body>
Anda adalah salah satu dari
<% = Application("Active")%>
pengunjung kami saat ini
</body>
</html>
Jadi
deh..gampang kan....:) Pada artikel yang lain, akan dijelaskan penggunaan
teknik secara lebih canggih, sehingga dapat melakukan tracking pada pengunjung
yang online.
Untuk contohnya
dapat dilihat di http://www.jasnita.net.id
Menghitung Jumlah Akses pada Link
oleh: Gunadi
Di milis
ASPIndonesia.net pernah ada yang menanyakan bagaimana mengetahui berapa kali
sebuah link/image diklik. Nah artikel ini sebagai gambaran jawaban atas
pertanyaan tersebut.
Link model ini
biasanya dipakai jika pemilik link ingin mengetahui berapa banyak link tersebut
diakses orang dari tempat tertentu.
Dalam contoh ini
kita andaikan mempunyai daftar data link yang tersimpan di dalam database
Access dengan strutur tabel sebagai berikut :
Nama Field
Tipe Field
url
Text
Title
Text
Desc
Memo
Contact_name
Text
Contact_email
Text
Hits
Number (long)
Untuk bisa
menghitung berapa kali sebuah link diklik, kita akan melakukan proses yang ada
dalam file
Click_Counter.asp,
kemudian setelah data tersebut diproses, kita gunakan
Response.Redirect
untuk mengarahkan user ke link yang dimaksud. Script
Click_Counter.asp
dapat dilihat pada contoh dibawah ini:
<%
' Buka koneksi
ke database yang
' menyimpan
data-data link
Conn_String =
"DRIVER={Microsoft Access Driver (*.mdb)};" _
& "DBQ="
& Server.MapPath("linkdb.mdb")
set my_conn=
Server.CreateObject("ADODB.Connection")
set rst =
Server.CreateObject("ADODB.Recordset")
my_Conn.Open (conn_string)
' Memeriksa data
link yang ada dalam database
StrSql = "SELECT * FROM
Link_Click " _
& "WHERE
url='" & Request.QueryString("url") & "'"
rst.Open strSql, my_conn, 1,
1
Click_Counter =
Rst("Hits")
url_link = Rst("url")
' Diperiksa
apakah sudah ada akses yang tercatat
' ataukah nilai
masih NULL
if (Click_Counter = null) or
(Click_Counter = 0) then
Click_Counter = 0
end if
' Penambahan
nilai counter
Click_Counter = Click_Counter + 1
' Masukkan nilai
yang sudah ditambah kedalam database
strSql = "UPDATE
Link_Click " _
& "SET
Hits='" & Click_Counter & "' " _
& "WHERE
url='" & Request.QueryString("url") & "'"
my_conn.Execute (StrSql)
' Tutup semua
object
rst.Close
set rst = Nothing
my_conn.Close
set my_conn = nothing
' Redirect ke link yang
dituju
Response.redirect url_link
%>
Selanjutnya kita
akan membuat file link.asp, yang merupakan link generator dari database
linkdb.mdb tersebut. Script file tersebut dapat dilhat dibawah ini:
<%
' Buka koneksi
ke database yang
' menyimpan
data-data link
Conn_String =
"DRIVER={Microsoft Access Driver (*.mdb)};" _
& "DBQ="
& Server.MapPath("linkdb.mdb")
set my_conn= Server.CreateObject("ADODB.Connection")
set rst =
Server.CreateObject("ADODB.Recordset")
my_Conn.Open (conn_string)
' Ambil data
link yang ada
StrSql = "SELECT * FROM
Link_Click"
Rst.Open strSql, my_conn, 1,
1
%>
<HTML>
<HEAD>
<TITLE>Contoh Link
Counter</TITLE>
</HEAD>
<BODY
BGCOLOR="#FFFFFF">
<%
' Mendaftar link
yang ada
do while not Rst.eof
Response.Write
"<P>"
Response.Write "<A
HREF='Click_Counter.asp?url=" _
&
Rst("url") & "'>" & Rst("title") &
"</A>"
Response.Write "(sudah
diklik : " & Rst("Hits") & " kali)</BR>"
Response.Write
Rst("Desc")
Response.Write
"</P>"
Rst.MoveNext
loop
' Tutup semua
object
rst.Close
Set rst = Nothing
my_conn.Close
set my_conn = nothing
%>
</BODY>
</HTML>
Skrip di atas
bisa dikembangkan untuk iklan/link yang tarifnya berdasarkan banyaknya iklan/link
tersebut diklik pengunjung.
Untuk mencoba
demo dari teknik di atas buka alamat ini
http://www6.ewebcity.com/ilumi/link/samplelink.asp
kemudian klik
salah satu linknya. Setelah itu coba kembali ke alamat tersebut, lihat
perbedaan datanya.
Jika ada
kesalahan atau ingin memberikan komentar silahkan menghubungi
gunadi_ilyas@mip.co.id
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
1. 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.
2. 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 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:
1.Response.Buffer
= FALSE 'Default
2.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.
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/
Tips Menulis Script ASP
oleh: Tirta K.
Untario
Inilah beberapa
tips yang perlu dipakai dalam penulisan script ASP. Beberapa poin yang perlu
dipertimbangkan dalam menulis script ASP adalah : kecepatan, kemudahan
debugging, keamanan, dan skalabilitas.
Hal yang paling
penting untuk diingat: aplikasi web merupakan aplikasi
client-server
yang mempunyai tingkat concurrency tinggi, tidak sama dengan aplikasi desktop
biasa yang bisa asal jalan. Kesalahan kecil pada aplikasi desktop mungkin bisa
tidak berpengaruh, tetapi dalam aplikasi web, setelah halaman itu diakses
secara bersama-sama, bisa mengakibatkan crash.
Namun perlu
disadari bahwa untuk mencapai keempat poin diatas secara sempurna adalah tidak
mungkin. Script yang cepat mungkin tidak mudah untuk di-debug, demikian juga
sebaliknya.
Tips-tips pada
artikel ini akan selalu diupdate jika ada perkembangan. Jika ada yang mempunyai
tips yang belum tertulis disini, silakan mengirimkan tips Anda ke
tku@aspindonesia.net
Tips #1 : Response.Buffer = TRUE
Ini akan
mengakibatkan sebuah script ASP akan disimpan dulu didalam buffer di server dan
diproses, jika semua proses sudah selesai, baru data akan dikirim kan ke
client. Ini mempercepat eksekusi dariscript ASP secara keseluruhan.
Tips #2 : @ENABLESESSIONSTATE = FALSE
Jangan gunakan
session jika tidak perlu. Kebanyakan aplikasi web yang ada jarang membutuhkan
session. Seluruh script di ASPIndonesia.net dibuat tanpa menggunakan session.
Penggunaan session akan memperlambat webserver karena memerlukan memory dan
proses yang lebih besar daripada jika tanpa session. Secara default, IIS
memberikan session pada tiap script yang dieksekusi. Untuk mematikannya,
tulislah <%@ENABLESESSIONSTATE = FALSE %> pada baris pertama tiap script.
Artikel yang lebih dalam mengenai session sedang dalam penulisan.
Tips #3 : Gunakan adovbs.inc atau adojavas.inc seperlunya
File adovbs.inc
dan adojavas.inc besarnya sekitar 14 Kb. Jika file ini di-include pada setiap
script, jelas akan memperlambat server, walaupun perbedaannya kecil sekali.
Ambil saja constant yang diperlukan, yang tidak Anda perlukan jangan
dimasukkan. Biasanya yang diperlukan dalam aplikasi web biasa hanyalah 2 Kb dari
14 Kb yang ada.
Tips #4 : Variabel lokal lebih cepat diakses daripada variabel global
Variabel lokal
diakses lebih cepat daripada variabel global. Jika perlu memanggil variabel
global berulang kali dalam satau halaman script, lebih baik variabel global itu
dimasukkan dulu kedalam variabel lokal.
Tips #5 : Hindari pemanggilan COM object lebih dari dua kali
Pemanggilan data
dari COM object membutuhkan waktu yang lama. Jika data yang dipanggil dari COM
object akan dipakai berulang kali dalam satu halaman script, maka masukkan data
tersebut kedalam variabel lokal. Contoh : strNama =
Request.Form("nama"). Jangan memanggil
Request.Form("nama")
berulang kali dalam satu halaman. Cukup sekali saja, kemudian variabel strNama
yang dipakai dalam pengolahan berikutnya.
Tips #6 :
Tipe data Collection itu lambat Tipe data collection biasanya diakses dengan
statement For Each.
Tipe data ini
lambat diakses. Jika dalam halaman script hal ini harus dilakukan berulang kali,
masukkan data yang ada dalam collection kedalam variabel lokal, misalnya array.
Tips #7 :
Hindari redim array Hindari redimensioning array.
Redimesioning
memerlukan waktu yang lama dan alokasi memory bisa kacau. Lebih baik deklarasikan
array sebesar yang dibutuhkan pada awal script.
Tips #8 : Satu scripting language per halaman
Jika satu
halaman menggunakan VBScript, seluruh halaman itu lebih baik menggunakan
VBScript, jangan JScript atau PerScript. Demikian juga sebaliknya. Pergantian
bahasa scripting dalam satu halaman akan membuang waktu sia-sia, juga akan
membingungkan Anda dalam melakukan debugging.
Tips #9 : Response.Write dalam satu blok <% %> lebih cepat
Response.Write
yang ditaruh dalam satu blok lebih cepat daripada yang ditaruh dalam blok yang
terpisah-pisah. Artikel yang membahas hal ini lebih dalam dapat dilihat pada
Inline Tags vsResponse.Write.
Tips #10 : COM melawan script
Script yang
dieksekusi dengan menggunakan interpreter, jelas lebih lambat daripada compiled
objects. Jangan menaruh logika yang rumit dalam sebuah script. Jika script Anda
sudah panjang sekali, lebih baik masukkan proses didalam script itu kedalam
ActiveX Server Component.
Tips #11 : Option Explicit
Tulislah Option
Explicit jika Anda menggunakan VBScript. Selain mempermudah debugging, perintah
ini akan membatasi deklarasi variable yang biasanya dapat dilakukan dengan
bebas. Dengan begitu, memory tidak akan terbuang percuma untuk mendeklarasikan
variabel yang terjadi karena salah ketik. Jika Anda menuliskan Option Explicit,
maka setiap variabel sebelum digunakan harus dideklarasikan dengan perintah
Dim. Contoh : Dim strNama. Bacalah dokumentasi VBScript untuk lebih jelasnya.
Tips #12 : Gunakan #include
Gunakan #include
demi modularisasi kode Anda. Hal ini akan sangat mempermudah Anda jika hendak
mengubah sedikit bagian dari kode yang dipakai di seluruh aplikasi. Artikel
yang membahas hal ini lebih dalam dapat dilihat pada Memakai #include pada
Script ASP.
Tips #13 : Namakan file include dengan .asp
Namakan file
include Anda dengan .asp demi keamanan. Bacalah artikel Memakai #include pada
Script ASP untuk penjelasan lebih lanjut.
Tips #14 : Static lebih cepat daripada dinamis
Halaman web yang
statis lebih cepat diproses daripada halaman web yang dinamis, yang membutuhkan
akses ke database setiap kali ada request. Gunakan halaman statis jika
dimungkinkan untuk mempercepat akses ke web Anda. IIS Resource Kit menyediakan
komponen yang bernama ASP2HTM. Komponen ini berguna untuk mengubah file .asp
menjadi file .htm.
Tips #15 : Response.IsClientConnected
Jika Anda
melakukan akses database yang panjang, atau akses ke program yang cukup lama,
pastikan menggunakan Response.IsClientConnected untuk memeriksa apakah client
masih berhubungan dengan server. Jika client sudah terputus dengan server
(kemungkinan karena bosan), hentikan segera akses ke database atau program lain
itu, demi menghemat resource yang tersedia.
Tips #16 : Client side validation
Bergantunglah
client-side validation, jangan server-side validation untuk memeriksa input
dari user. Jelas lebih cepat dan mengurangi beban server. Jika data yang
dimasukkan penting dan sulit divalidasi melalaui client, boleh saja dipakai
server-side validation. Yang penting disini adalah menghemat waktu dan resource
di server.
Tips #17 : Jangan memakai On Error Resume Next jika belum final
Jika script yang
dibuat belum final, jangan memakai On Error Resume Next. Error message standar
yang ada jauh lebih mudah dipahami daripada membuat error message sendiri.
Tentunya hal ini tidak berlaku bagi user. Karena itu, pakailah On Error Resume
Next jika script yang ditulis sudah final.
Tips #18 : Di global.asa jangan ada event yang kosong
Event yang
kosong dalam global.asa tetap akan diperiksa oleh server, sehingga membuang
waktu. Jika ada event yang tidak diperlukan, lebih baik jangan ditulis. Jika
global.asa tidak diperlukan, lebih baik jangan dibuat. Artikel yang berisi
penjelasan lebih lanjut mengenai
global.asa
sedang dalam penulisan.
Tips #19 : Jangan bergantung pada Session_OnEnd
Session_OnEnd
kadangkala tidak dieksekusi oleh server. Jika diperlukan beberapa langkah
pemrograman setelah session berakhir, lebih bai dilakukan pada script ASP yang
terakhir diakses.
Tips #20 : Optimasi ADO, IIS dan database server
Script ASP tidak
berdiri sendiri, melainkan berhubungan erat dengan IIS, ADO dan database. Tiap
elemen ini perlu dioptimasi untuk mendapatkan hasil yang optimal. Artikel
mengenai optimasi ADO, IIS dan database ini sedang dalam penulisan.
0 komentar:
Posting Komentar