Mungkin pembaca merasa bahwa program CGI memiliki rasa misteri. Pada bagian ini, kami akan menjelaskan beberapa proses dasar pemrograman program CGI. Setelah anda membacanya, tidak akan ada misteri lagi.
3. Masalah lain dengan spesifikasi CGI:
Mungkin pembaca merasa bahwa program CGI memiliki rasa misteri. Pada bagian ini, kami akan menjelaskan beberapa proses dasar pemrograman program CGI. Setelah anda membacanya, tidak akan ada misteri lagi.
Pertama-tama, ketika melakukan pekerjaan pemrograman apa pun, bagilah tugas besar menjadi banyak tugas kecil, dan setiap tugas kecil menyelesaikan fungsi yang relatif independen. Banyak orang yang enggan menulis program CGI sendiri karena menganggap pemrograman CGI itu sulit. Faktanya, jika Anda membagi program CGI biasa menjadi beberapa bagian berikut dan menyelesaikannya satu per satu, Anda tidak akan mengalami kesulitan dengan program CGI:
Secara umum, ketika memanggil program CGI di browser, server harus menemukan program CGI terlebih dahulu. Umumnya, program CGI ditempatkan di direktori yang ditentukan oleh server di OmniHTTPD kami, di cgi-bin dan cgi-win virtual Direktori sebenarnya yang ditentukan oleh direktori tersebut masing-masing adalah direktori c:httpdcgi-bin dan c:httpdcgi-win. Anda dapat memodifikasi direktori sebenarnya di OmniHTTPD, atau menambahkan direktori virtual, seperti: tentukan direktori virtual cgi-test sebagai c:my-cgi jika Anda memiliki CGI bernama test1.cgi di program direktori c:my-cgi , Anda dapat memanggilnya di browser Anda di alamat http://localhost/cgi-test/test1.cgi.
Dalam keadaan normal, server menemukan program CGI yang diminta oleh browser dan menghasilkan proses program CGI tersebut. Dengan cara ini, browser dan server telah membuat koneksi. Setelah program CGI selesai dijalankan, prosesnya hilang dan koneksi terputus. Semua operasi pada gambar di atas diselesaikan dalam waktu ketika koneksi dibuat. Oleh karena itu, tugas yang diselesaikan oleh setiap program CGI harus sekecil mungkin. Jika tidak, ini akan memakan banyak waktu dan sumber daya di server dan waktu tunggu browser klien juga akan sangat lama.
Seperti yang Anda lihat pada gambar di atas, program CGI secara umum dibagi menjadi tiga bagian: input data, pemrosesan data, dan output data, terkadang diperlukan interaksi dengan database di bagian pemrosesan data (ini juga merupakan spesialisasi CGI program). Di antara ketiga bagian ini, input data dan output data memiliki spesifikasi yang ketat, dan pemrosesan data adalah tempat Anda dapat menggunakan imajinasi Anda. Selanjutnya saya akan fokus pada spesifikasi dan tindakan pencegahan untuk input data dan output data:
Sebelumnya, kami telah mencantumkan hampir semua variabel lingkungan yang digunakan oleh program CGI. Diantaranya, sebagian besar berkaitan erat dengan input dan output data. Di bawah ini, kami mencantumkan variabel lingkungan yang paling umum digunakan berdasarkan kategori:
Variabel lingkungan terkait server:
GATEWAY_INTERFACE
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_PERANGKAT LUNAK
Variabel lingkungan terkait klien:
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_AUTHORISASI
HTTP_CHARGE_TO
HTTP_DARI
HTTP_IF_MODIFIED_SINCE
HTTP_PRAGMA
HTTP_REFERER
HTTP_USER_AGENT
Variabel lingkungan terkait permintaan:
AUTH_TYPE
KONTEN_FILE
CONTENT_LENGTH
CONTENT_TYPE
OUTPUT_FILE
PATH_INFO
PATH_TERJEMAHKAN
QUERY_STRING
REMOTE_ADDR
REMOTE_USER
PERMINTAAN_LINE
PERMINTAAN_METHOD
SCRipT_NAME
Perlu disebutkan di sini bahwa CONTENT_FILE dan OUTPUT_FILE. Pada Windows 3.1 dan DOS tidak banyak bahasa yang dapat membaca dan menulis melalui input dan output standar (STDIN dan STDOUT), jadi kedua variabel ini digunakan sebagai gantinya. Untuk variabel lingkungan lainnya, silakan lihat daftar detail sebelumnya.
Seperti disebutkan sebelumnya, metode GET meneruskan data melalui URL; metode POST meneruskan data melalui STDIN. Apapun metode yang digunakan, data dikodekan selama transmisi data. Namun, kita tidak perlu khawatir tentang pengkodean dan decoding, karena bahasa pengembangan yang akan kita gunakan dapat menyelesaikan tugas ini secara otomatis: cgi-lib.pl di Perl, TWebModule di Delphi, dll.
Informasi header juga sangat penting dalam pemrograman CGI. Informasi header merupakan sinyal dari program CGI sebelum mengirimkan informasi ke klien. Ada tiga jenis utama informasi header:
Tipe konten //Transmisikan HTML ke browser
Lokasi // Meneruskan URL baru ke browser
Status //Biasanya digunakan untuk memeriksa kesalahan ketika terjadi kesalahan program CGI
Tipe konten adalah tipe informasi yang diproses oleh browser, terutama tipe MIME. Metode didefinisikan sebagai kombinasi tipe dan subtipe. Jenis MIME yang umum digunakan adalah: Teks, Multibagian, Pesan, Aplikasi, Gambar, Audio dan Video.
Misalnya, sebelum program CGI mengirimkan dokumen HTML ke browser, sebaiknya program tersebut mengirimkan teks/html terlebih dahulu. Ditulis dalam Perl sebagai berikut:
cetak "Jenis konten: teks/html "
cetak "< h1> Halo semuanya! </h1> "
Lokasi menyebabkan browser mengalihkan ke URL baru. Misalnya:
cetak "Lokasi: http://www.chinabyte.com"
Program Perl ini mengalihkan browser ke beranda ChinaByte.
Status menunjukkan status program CGI dan biasanya digunakan untuk memeriksa kesalahan ketika program CGI gagal. Tabel berikut mencantumkan kode status yang umum digunakan dan artinya:
Deskripsi hasil kode
200 permintaan OK dipenuhi secara normal
202 Terima Permintaan diterima dan sedang diproses.
301 Dipindahkan Dokumen dipindahkan ke lokasi baru
302 Ditemukan Dokumen tersebut tidak ada di deskripsi, tetapi di tempat lain di server.
400 Permintaan Buruk Sintaks permintaan HTTP salah.
401 Dokumen Tidak Sah memerlukan hak akses
403 Forbindden Server menolak akses ke dokumen
404 No Found Server tidak dapat menemukan dokumen tersebut.
500 Server Error Terjadi kesalahan serius di server
502 Layanan Kelebihan Beban Server sedang sibuk dan tidak dapat memproses permintaan.
Ini berakhir di sini. Setelah Anda memiliki pengetahuan dasar tentang CGI, Anda dapat mulai mengembangkan program CGI langkah demi langkah menggunakan bahasa apa pun. Izinkan saya memberi tahu Anda lagi, program CGI bukanlah sesuatu yang misterius, ini hanyalah dialog untuk membuat server dan semacam tugas.