Cgi perdagangan tunawisma. Hapus e-niaga. Menginstal CGI di Windows

Andover, Massachusetts, 19 November 2003

Grup Perdagangan, Inc. (NYSE: CGI), penulis asuransi mobil penumpang swasta terbesar di Massachusetts dan CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), penyedia teknologi informasi dan layanan pemrosesan bisnis terkemuka, hari ini mengumumkan penandatanganan perpanjangan kontrak outsourcing proses bisnis (BPO) selama enam tahun senilai US$35 juta. CGI akan menyediakan layanan pemrosesan kebijakan penuh untuk jalur penumpang swasta dan mobil komersial Massachusetts serta menyediakan alat antarmuka lembaga CollaborativeEdge CGI, dukungan dan pemeliharaan aplikasi, dukungan peraturan, konsultasi sistem, dan layanan manajemen dokumen.

Gerald Fels, wakil presiden eksekutif dan CFO Commerce Group, menyatakan: "Sebagai penyedia mobil penumpang pribadi terkemuka di Massachusetts, tujuan kami adalah menyediakan layanan yang membantu agen dan karyawan kami mencapai tingkat tertinggi. Selama bertahun-tahun kami telah membina hubungan yang kuat dengan CGI. Sistem mereka kuat dan akurat dan tim mereka sangat memahami sistem pemrosesan internal kami. Itu penting bagi kami."

Serge LaPalme, presiden, layanan bisnis asuransi untuk CGI menambahkan: "Kami sangat senang dapat melanjutkan hubungan kami dengan Commerce Group, yang telah terjalin selama lebih dari 30 tahun. Commerce Group terus menjadi salah satu mitra bisnis kami yang berharga dan strategis untuk kesuksesan kami. Dalam membantu klien kami lebih fokus pada bisnis inti mereka, kami memanfaatkan teknologi baru kapan dan di mana saja yang masuk akal. Tim kami memahami industri asuransi dan lingkungan peraturan Negara Bagian yang sangat unik secara mendalam dan sebagai hasilnya, kami cepat untuk mengadaptasi solusi yang ada pada sektor yang terus berkembang ini."

Tentang The Commerce Group, Inc.

Commerce Group, Inc., sebuah perusahaan induk asuransi, berkantor pusat di Webster, Massachusetts. Anak perusahaan asuransi properti dan kecelakaan Commerce Group termasuk The Commerce Insurance Company dan Citation Insurance Company di Massachusetts, Commerce West Insurance Company di California dan American Commerce Insurance Company di Ohio. Melalui aktivitas asuransi gabungan anak perusahaannya, Commerce Group menduduki peringkat ke-22 grup asuransi mobil pribadi terbesar di negara ini oleh A.M. Terbaik, berdasarkan informasi premium tertulis langsung tahun 2002.

Tentang CGI
Didirikan pada tahun 1976, CGI adalah perusahaan layanan teknologi informasi independen terbesar kelima di Amerika Utara, berdasarkan jumlah karyawannya. CGI dan perusahaan afiliasinya mempekerjakan 20.000 profesional. Tingkat pendapatan tahunan CGI saat ini adalah CDN$2,8 miliar (US$1,9 miliar) dan pada tanggal 30 September 2003, simpanan pesanan CGI adalah CDN$12,3 miliar (US$9,1 miliar). CGI menyediakan layanan TI dan proses bisnis menyeluruh kepada klien di seluruh dunia dari kantor di Kanada, Amerika Serikat, dan Eropa. Saham CGI terdaftar di TSX (GIB.A) dan NYSE (GIB) dan termasuk dalam Indeks Komposit TSX 100 serta Indeks Teknologi Informasi Kanada S&P/TSX dan Indeks MidCap Kanada.

2012: Pembelian Logica Inggris

Pada bulan Juni 2012, CGI Group mengumumkan bahwa mereka telah menandatangani perjanjian untuk membeli integrator sistem terbesar di Eropa, Logica. Jumlah transaksinya adalah 2,8 miliar dolar Kanada ($2,7 miliar). Sebagai bagian dari perjanjian yang dicapai, CGI juga setuju untuk menanggung kewajiban membayar utang Logica sebesar C$515 juta.

Untuk membiayai transaksi tersebut, CGI berencana mengumpulkan 1 miliar dolar Kanada dengan menerbitkan 46,7 juta saham tambahan, meminjam 2 miliar dolar Kanada dari Canadian Imperial Bank of Commerce, National Bank of Canada dan The Toronto-Dominion Bank, serta sekitar 650 juta dolar Kanada. dolar lebih banyak dolar - dalam batas kredit saat ini.

Harga per saham yang diusulkan adalah 59,8% lebih tinggi dari harga penutupan Logica pada tanggal 30 Mei 2012. Kesepakatan tersebut mewakili sekitar 6,6 kali laba Logica sebelum bunga, pajak, depresiasi dan amortisasi (EBITDA) untuk tahun tersebut.Periode 12 bulan yang berakhir pada tanggal 31 Desember 2011

Akuisisi Logica diperkirakan akan meningkatkan laba per saham CGI sebesar 25% hingga 30%, tidak termasuk biaya akuisisi dan integrasi. Sebagai hasil merger, jumlah tenaga kerja dan pendapatan tahunan perusahaan akan lebih dari dua kali lipat dibandingkan CGI. Jumlah staf perusahaan gabungan ini akan berjumlah sekitar 72 ribu karyawan yang berlokasi di kantor di 43 negara, dan pendapatan tahunan akan mencapai sekitar 10,4 miliar dolar Kanada ($9,6 miliar).

Perusahaan baru ini akan menjadi perusahaan konsultan IT terbesar keenam di dunia. Yang terbesar adalah IBM, Accenture, Cap Gemini, Tata Consultancy dan Infosys, menurut perkiraan Reuters.

“Logica adalah perusahaan layanan bisnis dan teknologi terkemuka dengan para profesional yang berdedikasi dan klien jangka panjang yang tepercaya,” kata Presiden dan CEO CGI Michael Roach. “Kami yakin kami melakukan hal yang benar.” Dengan mengakuisisi Logica, kami mengakuisisi Logica. dengan harga yang tepat dan pada waktu yang tepat untuk menciptakan salah satu dari sedikit penyedia layanan teknologi end-to-end independen terbesar."

Dewan direksi CGI dengan suara bulat menyetujui transaksi tersebut. Direncanakan selesai pada September 2012, setelah mendapat persetujuan pemegang saham dan mengikuti prosedur standar. Proses integrasi perusahaan rencananya akan selesai dalam waktu 3 tahun

Pemilik toko online sudah familiar dengan konsep “perdagangan elektronik” secara langsung, mereka sudah mengetahui jawaban atas pertanyaan “e-commerce - apa itu?” Namun jika ditelusuri lebih dalam, banyak nuansa yang muncul dan istilah ini memiliki arti yang lebih luas.

E-niaga: apa itu?

Konsep umumnya adalah sebagai berikut: e-commerce dipahami sebagai pendekatan tertentu dalam berbisnis, yang melibatkan penyertaan sejumlah operasi yang menggunakan transfer data digital dalam penyediaan barang atau penyediaan jasa/pekerjaan, termasuk penggunaan Internet.

Jadi, setiap transaksi komersial yang dilakukan dengan menggunakan alat komunikasi elektronik.

Skema kerja disusun sebagai berikut:

  • siapa pun bisa menjadi blogger atau pemilik halaman Internet mereka sendiri) yang mendaftar di sistem ini;
  • mendapat tautannya sendiri;
  • menempatkan kode khusus di halaman webnya - iklan untuk produk yang dipilih muncul mitra resmi Jaringan Mitra e-Commerce;
  • memantau konversi situs web;
  • mendapatkan persentase tertentu untuk setiap pembelian oleh pengunjung situs web Anda yang mengikuti tautan afiliasi.

WP e-niaga

Banyak orang kini tertarik dengan e-commerce, terutama karena keinginan untuk membuat situs web sendiri, toko online unik untuk menjual produk mereka sendiri. Untuk memenuhi permintaan yang terus meningkat ini, pengembang fokus pada pembuatan template e-commerce. Mari kita lihat apa yang selanjutnya.

Salah satu contoh template tersebut adalah e-commerce WordPress. Ini adalah plugin keranjang belanja untuk WordPress (salah satu sistem manajemen sumber daya web paling terkenal), yang ditujukan terutama untuk membuat dan mengatur blog). Ini disediakan sepenuhnya gratis dan memungkinkan pengunjung situs melakukan pembelian di situs web.

Dengan kata lain, plugin ini memungkinkan Anda membuat toko online (berbasis WordPress). Plugin e-niaga ini memiliki segalanya alat yang diperlukan, pengaturan dan opsi yang memenuhi kebutuhan modern.

E-commerce dalam bahasa Rusia yang jelas. Bagaimana cara kerja bisnis online?

Akhir-akhir ini semakin banyak proyek yang berhubungan dengan perdagangan online. Saat mempelajari bidang ini, saya tidak dapat menemukan gambaran umum dan jelas tentang prosesnya. Oleh karena itu, saya memutuskan untuk membuat sesuatu seperti contekan yang selalu dapat Anda rujuk untuk memahami prosedur di bidang e-commerce.

Saya akan segera membuat reservasi yang saya fokuskan pada proses dan saluran yang membantu mendatangkan klien.

E-niaga: tentang apa?

Definisi aktif sumber yang berbeda mengatakan sesuatu tentang menjual barang atau jasa melalui Internet. Dengan kata sederhana E-commerce adalah aktivitas online apa pun yang menghasilkan uang.

Belanja, berjualan, asuransi, perbankan, uang elektronik, semuanya ada di sini. Ambil dan tanda tangani.

Dari sasaran

Untuk memahami masalahnya, saya sarankan memulai jalurnya dari paling akhir. Apa tujuan dari bisnis apa pun? Benar, hasilkan uang. Jadi, bayangkan produk apa pun, misalnya kaus kaki silikon. Mengapa tidak!

Saya mengambil hal pertama yang terlintas di pikiran saya, ternyata ada yang seperti ini..

Tugas kita adalah menghasilkan uang dari kaus kaki ini. Kami sedang memikirkan tentang Internet. Hmm...kenapa tidak membuat situs web dan begitulah penjualannya, tetap di Maladewa! Tapi itu tidak sesederhana itu.

Saya sangat suka menggambar. Ini membantu untuk memahami berbagai proses. Ayo menggambar?!

Sejauh ini model kami terlihat seperti ini. Kami mengambil kaus kaki, menaruhnya di Internet dan mendapatkan uang. Ini sungguh luar biasa! Mata Anda terbakar, telapak tangan Anda berkeringat dan Anda sudah ingin memulai bisnis. Namun apakah Anda perlu membuat website atau platform penjualan?

Situs web atau platform untuk dijual

Ada berbagai solusi untuk menempatkan produk Anda di World Wide Web. Anda dapat membuat situs web Anda sendiri atau menggunakan platform pihak ketiga (grup, halaman di jejaring sosial, papan pesan, dll.). Mari kita berhenti di situsnya.

Anda memesan website, mengambil template yang sudah jadi, atau membuatnya sendiri menggunakan website builder (bisa google CMS), tidak masalah. Selanjutnya kami menempatkan sekumpulan kaus kaki silikon jenis yang berbeda dan bahagia.

Maaf mengganggu pembacaan. Bergabunglah dengan saluran telegram saya. Pengumuman artikel baru, pengembangan produk digital, dan growth hack, semuanya ada di sana. Menunggumu! Ayo lanjutkan...

Sistem pembayaran

Namun agar seseorang dapat membeli dari Anda di sini dan saat ini, sistem pembayaran perlu diubah. Ini adalah jenis layanan yang memungkinkan Anda melakukan pembelian secara online melalui: kartu bank, uang internet, Handphone dan masih banyak lagi. Untuk ini Anda harus membagi persentase transaksi, tetapi dengan cara ini Anda akan membuat hidup Anda lebih mudah.

Pilih layanan yang cocok untuk Anda. Di suatu tempat persentasenya akan lebih tinggi, dan di suatu tempat akan ada langganan atau yang lainnya. Lakukan sedikit riset. Masukkan kode yang diperlukan di situs web Anda, tautkan semua transaksi ke rekening kartu Anda dan voila!

Tampaknya itu saja. Ada website, kartu produk juga, bahkan tombol “beli” berfungsi, tapi ada yang kurang… Tidak ada aliran pelanggan yang akan membeli.

Arus pelanggan

Dimana: CAC = Biaya perolehan pelanggan baru. MCC (biaya kampanye pemasaran) = Total biaya biaya pemasaran yang ditujukan untuk menarik pelanggan (tetapi tidak mempertahankannya). W (upah) = Gaji pemasar dan manajer penjualan. S (perangkat lunak) = Biaya perangkat lunak yang digunakan dalam periklanan dan penjualan (misalnya, platform penjualan yang digunakan, otomatisasi pemasaran, pengujian A/B, layanan analitik, dll.). PS (layanan profesional) = Biaya layanan profesional layanan yang diberikan kepada departemen pemasaran dan penjualan (desain, konsultasi, dll.). O (lainnya) = Biaya overhead lainnya yang berhubungan dengan departemen pemasaran dan penjualan. CA (customersacquired) = Jumlah total pelanggan yang tertarik.

Namun kita tidak boleh melupakan kualitas klien, LTV akan membantu di sini.

Metrik penting: LTV

Nilai Waktu Langsung, siklus hidup pelanggan, merupakan indikator lain dalam e-commerce yang perlu diperhitungkan. Ini menunjukkan berapa banyak pendapatan rata-rata yang diperoleh satu klien. Ada pendekatan perhitungan yang berbeda, saya memilih pendekatan aktual berdasarkan keuntungan, sebagai salah satu yang paling akurat.

Ini hanyalah jumlah total pendapatan sepanjang riwayat pembelian untuk setiap pelanggan. Tambahkan jumlah seluruh pembelian pelanggan (transaksi) ke transaksi N, dimana transaksi N adalah pembelian terakhir yang dilakukan pelanggan dengan perusahaan Anda. Jika Anda memiliki akses ke seluruh data transaksi pelanggan, maka Anda dapat dengan mudah menghitungnya menggunakan Excel.

LTV = (transaksi 1 + transaksi 2 + transaksi 3... + transaksi N) x bagi hasil pendapatan.

Menghitung LTV berdasarkan laba bersih pada akhirnya menunjukkan keuntungan sebenarnya yang dibawa pelanggan ke perusahaan Anda. Ini memperhitungkan biaya layanan pelanggan, biaya retensi, biaya daya tarik, dll. Hasilnya adalah perhitungan yang rumit berdasarkan data individual. Total keuntungan yang dihasilkan per pelanggan dari waktu ke waktu akan memberi Anda pemahaman akurat tentang profitabilitas pelanggan Anda hingga saat ini.

Pendekatan lain dapat ditemukan di.

Indikator penting: Rasio CAC dan LTV

Untuk memahami kelangsungan suatu bisnis, sangat penting untuk melihat rasio dari dua rasio CAC:LTV yang disebutkan.

  • Kurang dari 1:1 - Anda sedang terburu-buru menuju kebangkrutan.
  • 1:1 – Anda kehilangan uang pada setiap klien yang tertarik.
  • 1:2 – Kelihatannya bagus, tapi sepertinya Anda tidak menginvestasikan cukup uang, dan Anda bisa berkembang lebih cepat. Luncurkan kampanye akuisisi pelanggan yang lebih agresif dan raih rasio mendekati 1:3.
  • 1:3 – Rasio ideal. Anda memiliki bisnis yang berkembang dan model bisnis yang kuat.

Indikator penting: ROI jangan lupa

Seperti yang telah kita bahas di atas, dalam e-commerce Anda perlu memahami dengan jelas apakah menggunakan saluran akuisisi menguntungkan atau tidak. Selain LTV dan CAC, ada indikator penting lainnya: ROI. Ini menunjukkan apakah investasi Anda, dalam kasus kami di bidang periklanan, telah membuahkan hasil. Itu adalah. berapa banyak yang didapat dari 1 rubel yang diinvestasikan bagi kita.

Rumus yang sangat sederhana digunakan untuk perhitungan:

Dimana “Pendapatan Kampanye” adalah selisih antara pendapatan dari saluran dan biaya produk Anda. Dan untuk menghitung keuntungan, kurangi biaya iklan.

Jadi, rumus lebih detailnya akan terlihat seperti ini:

ROI = (Pendapatan Saluran – Biaya) – Biaya Iklan / Biaya Iklan x 100%

Baca contoh lebih detail dengan perhitungan. Faktanya, rumus sederhana ini ditempatkan di tabel Excel yang sama, di mana semuanya dihitung secara otomatis.

Ketiga indikator yang telah kita bahas penting dalam E-commerce. Masing-masing memungkinkan Anda menemukan hambatan dalam aliran Anda dan mengatasinya. Di sinilah letak potensi pertumbuhan bisnis. Saya menambahkan sedikit lagi pada model kami dengan kaus kaki.

Tidak mungkin memasukkan semuanya ke dalam satu materi, dan siapa yang akan membacanya begitu lama? Nanti saya akan buatkan panduan tersendiri mengenai nuansa e-commerce yang dapat mengganggu penjualan.

Total

Secara keseluruhan, Anda sekarang memiliki pemahaman umum tentang perdagangan online atau e-commerce. Lebih lanjut, seperti yang mereka katakan: “Iblis ada dalam detailnya.” Pelajari setiap saluran secara terpisah, hitung indikator kinerja, dan cari wawasan baru dalam hal-hal kecil. Penjualan internet untuk Anda, dan banyak lagi! Dan saya punya satu materi lagi.

Ya, saya hampir lupa, Selamat Tahun Baru, para pembaca yang budiman! Saya berharap Anda mendapatkan kemenangan dan prestasi besar tahun depan!

Berkat World Wide Web, hampir semua orang dapat memberikan informasi online dalam bentuk yang mudah dilihat dan disebarluaskan. Anda pasti pernah menjelajahi Internet dan melihat situs lain, dan sekarang Anda mungkin tahu bahwa akronim menakutkan seperti "HTTP" dan "HTML" hanyalah singkatan dari "Web" dan "cara informasi diungkapkan di Internet". Anda mungkin sudah memiliki pengalaman menyajikan informasi di Internet.

Internet telah terbukti menjadi media yang ideal untuk menyebarkan informasi, terlihat dari popularitasnya yang sangat besar dan perkembangannya yang luas. Meskipun beberapa orang mempertanyakan kegunaan Internet dan mengaitkan perkembangan dan popularitasnya yang meluas terutama karena iklan yang mengganggu, tidak dapat disangkal bahwa Internet merupakan media penting untuk menyajikan segala jenis informasi. Tidak hanya terdapat banyak layanan untuk memberikan informasi terkini (berita, cuaca, siaran langsung acara olahraga) dan bahan referensi di dalamnya dalam format elektronik, sejumlah besar jenis data lain juga ditawarkan. IRS, yang mendistribusikan semua formulir pengembalian pajak tahun 1995 dan informasi lainnya melalui World Wide Web, baru-baru ini mengaku menerima surat penggemar untuk situs Web-nya. Siapa yang mengira IRS akan menerima surat penggemar? Hal ini bukan karena situsnya dirancang dengan baik, namun karena situsnya telah terbukti menjadi alat yang sangat berguna bagi ribuan, mungkin jutaan orang.

Apa yang membuat Web unik dan merupakan layanan informasi yang menarik? Pertama-tama, ia menyediakan antarmuka hypermedia ke data. Pikirkan tentang hard drive komputer Anda. Biasanya, data dinyatakan secara linier, mirip dengan sistem file. Misalnya, Anda memiliki sejumlah folder, dan di dalam setiap folder terdapat dokumen atau folder lain. Web menggunakan paradigma berbeda untuk mengekspresikan informasi yang disebut hypermedia. Antarmuka hypertext terdiri dari dokumen dan tautan. Tautan adalah kata-kata yang diklik untuk melihat dokumen lain atau menemukan jenis informasi lain. Web memperluas konsep hypertext dengan memasukkan jenis media lain, seperti grafik, suara, video (karenanya dinamakan "hypermedia"). Memilih teks atau grafik pada dokumen memungkinkan Anda melihat informasi terkait tentang item yang dipilih dalam berbagai bentuk.

Hampir semua orang dapat memperoleh manfaat dari cara menyajikan dan mendistribusikan informasi yang sederhana dan unik ini, mulai dari akademisi yang ingin segera menggunakan data bersama rekan-rekannya hingga para pebisnis yang berbagi informasi tentang perusahaannya kepada semua orang. Meskipun memberikan informasi sangatlah penting, dalam beberapa tahun terakhir banyak orang yang merasa bahwa menerima informasi juga merupakan proses yang sama pentingnya.

Meskipun Web menyediakan antarmuka hypermedia yang unik untuk informasi, masih banyak lagi yang lainnya cara yang efektif distribusi data. Misalnya, layanan jaringan seperti File Transfer Protocol (FTP) dan newsgroup Gopher sudah ada jauh sebelum World Wide Web. Surat elektronik telah menjadi media utama untuk komunikasi dan pertukaran informasi di Internet dan sebagian besar jaringan lainnya hampir sejak awal mula jaringan ini. Mengapa Internet menjadi seperti ini? cara populer distribusi informasi? Aspek multimedia dari Internet telah memberikan kontribusi yang signifikan terhadap keberhasilannya yang belum pernah terjadi sebelumnya, namun agar Internet menjadi paling efektif, Internet harus bersifat interaktif.

Tanpa kemampuan untuk menerima masukan pengguna dan memberikan informasi, Web akan menjadi lingkungan yang sepenuhnya statis. Informasi hanya akan tersedia dalam format yang ditentukan oleh penulis. Hal ini akan melemahkan salah satu kemampuan komputasi secara umum: informasi interaktif. Misalnya, daripada memaksa pengguna untuk melihat beberapa dokumen seolah-olah dia sedang melihat-lihat buku atau kamus, akan lebih baik jika pengguna dapat mengidentifikasi kata kunci pada topik yang diminati. Pengguna dapat menyesuaikan penyajian data daripada mengandalkan struktur kaku yang ditentukan oleh penyedia konten.

Istilah "server Web" bisa menyesatkan karena dapat merujuk pada mesin fisik dan perangkat lunak yang digunakan untuk berkomunikasi dengan browser Internet. Ketika browser meminta alamat Web tertentu, pertama-tama ia terhubung ke mesin melalui Internet, mengirimkan permintaan dokumen ke perangkat lunak server Web. Ini perangkat lunak berjalan terus menerus, menunggu permintaan tersebut tiba dan merespons dengan tepat.

Meskipun server dapat mengirim dan menerima data, server itu sendiri Kegunaan terbatas. Misalnya, server paling primitif hanya dapat mengirimkan file yang diperlukan ke browser. Server biasanya tidak tahu apa yang harus dilakukan dengan input tambahan ini atau itu. Jika ISP tidak memberi tahu server cara menangani informasi tambahan ini, kemungkinan besar server akan mengabaikan masukan tersebut.

Agar server dapat melakukan operasi lain selain mencari dan mengirim file ke browser Internet, Anda perlu mengetahui cara memperluas fungsionalitas server. Misalnya, server Web tidak dapat mencari database berdasarkan kata kunci yang dimasukkan oleh pengguna dan mengembalikan beberapa dokumen yang cocok kecuali kemampuan tersebut telah diprogram ke dalam server dengan cara tertentu.

Apa itu CGI?

Common Gateway Interface (CGI) adalah antarmuka ke server yang memungkinkan Anda memperluas fungsionalitas server. Dengan menggunakan CGI, Anda dapat berinteraksi secara interaktif dengan pengguna yang mengakses situs Anda. Secara teoritis, CGI memungkinkan server untuk mampu mengurai (menafsirkan) masukan dari browser dan mengembalikan informasi berdasarkan masukan pengguna. Pada tingkat praktis, CGI adalah sebuah antarmuka yang memungkinkan seorang programmer untuk menulis program yang berkomunikasi dengan mudah dengan server.

Biasanya, untuk memperluas kemampuan server, Anda harus memodifikasi server sendiri. Solusi ini tidak diinginkan karena memerlukan pemahaman pemrograman jaringan Protokol Internet lapisan bawah. Ini juga memerlukan pengeditan dan kompilasi ulang kode sumber server atau penulisan server khusus untuk setiap tugas. Katakanlah Anda ingin memperluas kemampuan server sehingga bertindak sebagai gateway Web-ke-e-mail, mengambil informasi yang dimasukkan pengguna dari browser dan mengirimkannya melalui email ke pengguna lain. Server harus memasukkan kode untuk menguraikan masukan dari browser, meneruskannya melalui email ke pengguna lain, dan meneruskan respons kembali ke browser melalui koneksi jaringan.

Pertama, tugas seperti itu memerlukan akses ke kode server, yang tidak selalu memungkinkan.

Kedua, sulit dan memerlukan pengetahuan teknis yang luas.

Ketiga, ini hanya berlaku pada server tertentu. Jika Anda perlu memindahkan server ke platform lain, Anda harus menjalankan atau setidaknya menghabiskan banyak waktu untuk mem-porting kode ke platform tersebut.

Mengapa CGI?

CGI menawarkan solusi portabel dan sederhana untuk masalah ini. Protokol CGI mendefinisikan cara standar agar program dapat menghubungi server Web. Tanpa pengetahuan khusus, Anda dapat menulis program dalam bahasa mesin apa pun yang berinteraksi dan berkomunikasi dengan server Web. Program ini akan bekerja dengan semua server Web yang memahami protokol CGI.

Komunikasi CGI dilakukan menggunakan input dan output standar, yang berarti jika Anda mengetahui cara mencetak dan membaca data menggunakan bahasa pemrograman, Anda dapat menulis aplikasi server Web. Selain mengurai input dan output, pemrograman aplikasi CGI hampir setara dengan pemrograman aplikasi lainnya. Misalnya, untuk memprogram program "Halo, Dunia!", Anda menggunakan fungsi pencetakan bahasa Anda dan format yang ditentukan untuk program CGI untuk mencetak pesan terkait.

Memilih bahasa pemrograman

Karena CGI adalah antarmuka universal, Anda tidak dibatasi pada bahasa mesin tertentu. Pertanyaan penting yang sering ditanyakan adalah: bahasa pemrograman apa saja yang bisa digunakan untuk pemrograman CGI? Anda dapat menggunakan bahasa apa pun yang memungkinkan Anda melakukan hal berikut:

  • Cetak ke keluaran standar
  • Baca dari input standar
  • Membaca dari mode variabel

Hampir semua bahasa pemrograman dan banyak bahasa scripting melakukan ketiga hal ini, dan Anda dapat menggunakan salah satunya.

Bahasa termasuk dalam salah satu dari dua kelas berikut: diterjemahkan dan ditafsirkan. Bahasa terjemahan seperti C atau C++ biasanya lebih kecil dan lebih cepat, sedangkan bahasa interpretasi seperti Perl atau Rexx terkadang memerlukan penerjemah besar untuk dimuat saat startup. Selain itu, Anda dapat mendistribusikan kode biner (kode yang diterjemahkan ke dalam bahasa mesin) tanpa kode sumber jika bahasa Anda dapat diterjemahkan. Mendistribusikan skrip yang dapat ditafsirkan biasanya berarti mendistribusikan kode sumber.

Sebelum memilih bahasa, Anda perlu mempertimbangkan prioritas Anda terlebih dahulu. Anda perlu mempertimbangkan keunggulan kecepatan dan efisiensi satu bahasa pemrograman dibandingkan kemudahan pemrograman bahasa lain. Jika Anda ingin mempelajari bahasa lain, alih-alih menggunakan bahasa yang sudah Anda ketahui, pertimbangkan baik-baik kelebihan dan kekurangan kedua bahasa tersebut.

Dua bahasa yang paling umum digunakan untuk pemrograman CGI adalah C dan Perl (keduanya dibahas dalam buku ini). Keduanya jelas mempunyai kelebihan dan kekurangan. Perl sangat level tinggi, dan pada saat yang sama merupakan bahasa yang kuat, sangat cocok untuk penguraian teks. Meskipun kemudahan penggunaan, fleksibilitas, dan kekuatannya menjadikannya bahasa yang menarik untuk pemrograman CGI, ukurannya yang relatif besar dan pengoperasian yang lebih lambat terkadang membuatnya tidak cocok untuk beberapa aplikasi. Program C lebih kecil, lebih efisien, dan menyediakan kontrol sistem tingkat rendah, namun lebih kompleks untuk diprogram, tidak memiliki rutinitas pemrosesan teks bawaan yang ringan, dan lebih sulit untuk di-debug.

Bahasa apa yang paling cocok untuk pemrograman CGI? Salah satu yang Anda anggap lebih nyaman dari sudut pandang pemrograman. Keduanya sama-sama efektif untuk pemrograman aplikasi CGI, dan dengan perpustakaan yang tepat, keduanya memiliki kemampuan serupa. Namun, jika Anda memiliki server yang sulit dijangkau, Anda dapat menggunakan program terjemahan C yang lebih kecil. Jika Anda perlu menulis aplikasi dengan cepat yang memerlukan banyak pekerjaan pemrosesan teks, Anda dapat menggunakan Perl.

Perhatian

Ada beberapa alternatif penting untuk aplikasi CGI. Banyak server sekarang menyertakan pemrograman API, yang membuatnya lebih mudah untuk memprogram ekstensi server langsung dibandingkan dengan aplikasi CGI yang berdiri sendiri. Server API umumnya lebih efisien dibandingkan program CGI. Server lain menyertakan fungsionalitas bawaan yang dapat menangani elemen non-CGI khusus, seperti penautan basis data. Terakhir, beberapa aplikasi dapat ditangani oleh beberapa teknologi sisi klien (bukan sisi server) baru seperti Java. Dengan perubahan teknologi yang begitu cepat, apakah CGI akan cepat ketinggalan jaman?

Hampir tidak. CGI memiliki beberapa keunggulan dibandingkan teknologi baru.

  • Ini serbaguna dan portabel. Anda dapat menulis aplikasi CGI menggunakan hampir semua bahasa pemrograman di platform apa pun. Beberapa alternatif, seperti API server, membatasi Anda pada bahasa tertentu dan jauh lebih sulit dipelajari.
  • Kecil kemungkinannya teknologi sisi klien seperti Java akan menggantikan CGI, karena ada beberapa aplikasi yang lebih cocok dijalankan oleh aplikasi sisi server.
  • Banyak keterbatasan CGI adalah keterbatasan HTML atau HTTP. Seiring berkembangnya standar Internet secara keseluruhan, begitu pula kemampuan CGI.

Ringkasan

Common Gateway Interface adalah protokol dimana program berinteraksi dengan server Web. Fleksibilitas CGI memberikan pemrogram kemampuan untuk menulis program gateway dalam hampir semua bahasa, meskipun ada banyak trade-off yang terkait dengan bahasa yang berbeda. Tanpa kemampuan ini, membuat halaman Web interaktif akan sulit, memerlukan modifikasi server, dan interaktivitas tidak akan tersedia bagi sebagian besar pengguna yang bukan administrator situs.

Bab 2: Dasar-dasar

Beberapa tahun yang lalu, saya membuat halaman untuk sebuah perguruan tinggi di Harvard di mana orang dapat mengirimkan komentar tentang mereka. Pada saat itu, Internet masih muda dan dokumentasi masih langka. Saya, seperti banyak orang lainnya, mengandalkan dokumentasi singkat dan sistem pemrograman yang dibuat oleh orang lain untuk belajar pemrograman CGI. Meskipun metode pembelajaran ini memerlukan beberapa pencarian, banyak eksperimen, dan menimbulkan banyak pertanyaan, namun metode ini sangat efektif. Bab ini adalah hasil karya awal saya dengan CGI (dengan beberapa penyesuaian tentunya).

Meskipun memerlukan waktu untuk sepenuhnya memahami dan menguasai antarmuka gateway umum, protokolnya sendiri cukup sederhana. Siapa pun yang memiliki keterampilan pemrograman dasar dan akrab dengan Web dapat dengan cepat belajar memprogram aplikasi CGI yang cukup kompleks seperti yang saya dan orang lain pelajari beberapa tahun yang lalu.

Tujuan bab ini adalah untuk menyajikan dasar-dasar CGI secara komprehensif, meskipun ringkas. Setiap konsep yang dibahas di sini disajikan secara rinci dalam bab-bab berikutnya. Namun, setelah menyelesaikan bab ini, Anda dapat segera memulai pemrograman aplikasi CGI. Setelah Anda mencapai level ini, Anda dapat mempelajari seluk-beluk CGI, baik dengan membaca sisa buku ini atau sekadar bereksperimen sendiri.

Anda dapat membagi pemrograman CGI menjadi dua tugas: menerima informasi dari browser Web dan mengirimkan informasi kembali ke browser. Hal ini dilakukan secara intuitif setelah Anda terbiasa dengan penggunaan normal aplikasi CGI. Seringkali pengguna diminta mengisi beberapa formulir, misalnya memasukkan namanya. Setelah pengguna mengisi formulir dan menekan Enter, informasi ini dikirim ke program CGI. Program CGI kemudian harus mengubah informasi ini menjadi sesuatu yang dapat dipahami, memprosesnya sesuai dengan itu, dan kemudian mengirimkannya kembali ke browser, baik itu konfirmasi sederhana atau hasil pencarian di database multiguna.

Dengan kata lain, pemrograman CGI memerlukan pemahaman bagaimana menerima masukan dari browser Internet dan bagaimana mengirimkan kembali keluarannya. Apa yang terjadi antara tahap masukan dan keluaran program CGI bergantung pada tujuan pengembang. Anda akan menemukan bahwa kesulitan utama dalam pemrograman CGI terletak pada tahap peralihan ini; Setelah Anda mempelajari cara bekerja dengan input dan output, itu sudah cukup untuk menjadi pengembang CGI.

Dalam bab ini, Anda akan mempelajari prinsip-prinsip di balik input dan output CGI, serta keterampilan dasar lainnya yang Anda perlukan untuk menulis dan menggunakan CGI, termasuk hal-hal seperti membuat formulir HTML dan memberi nama program CGI Anda. Bab ini mencakup topik-topik berikut:

  • Program tradisional "Halo Dunia!";
  • Output CGI: Mengirim informasi kembali untuk ditampilkan di browser Internet;
  • Mengonfigurasi, menginstal, dan menjalankan aplikasi. Anda akan belajar tentang berbagai platform dan server Web;
  • Input CGI: Interpretasi informasi yang dikirim oleh browser Web. Pengenalan beberapa perpustakaan pemrograman yang berguna untuk mengurai masukan tersebut;
  • Contoh sederhananya: mencakup semua pelajaran dalam satu bab tertentu;
  • Strategi pemrograman.

Karena sifat bab ini, saya hanya menyentuh sedikit topik tertentu. Jangan khawatir; Semua topik ini dibahas lebih mendalam di bab-bab lain.

Halo Dunia!

Anda mulai dengan masalah pemrograman pengantar tradisional. Anda akan menulis sebuah program yang menampilkan "Halo, Dunia!" di browser Web Anda. Sebelum Anda menulis program ini, Anda harus memahami informasi apa yang diharapkan diterima oleh browser Web dari program CGI. Anda juga perlu mengetahui cara menjalankan program ini agar Anda dapat melihatnya beraksi.

CGI tidak bergantung pada bahasa, sehingga Anda dapat mengimplementasikan program ini dalam bahasa apa pun. Beberapa bahasa berbeda digunakan di sini untuk menunjukkan kemandirian masing-masing bahasa. Di Perl, program "Halo, Dunia!" ditunjukkan pada Daftar 2.1.

Daftar 2.1. Halo Dunia! di Perl. #!/usr/local/bin/perl # Hello.cgi - Program CGI pertama saya mencetak "Tipe Konten: teks/html\n\n"; mencetak " \n"; cetak " Halo Dunia!"; mencetak"\n"; cetak " \n"; cetak "

Halo Dunia!

\n"; cetak " \N";

Simpan program ini sebagai hello.cgi, dan instal di lokasi yang sesuai. (Jika Anda tidak yakin di mana letaknya, jangan khawatir; Anda akan mengetahuinya di bagian "Menginstal dan Menjalankan Program CGI" nanti di bab ini.) Untuk sebagian besar server, direktori yang Anda perlukan adalah cgi-bin . Sekarang, panggil program dari browser Web Anda. Bagi sebagian besar orang, ini berarti membuka Uniform Resource Locator (URL) berikut:

http://namahost/namadirektori/hello.cgi

Nama host adalah nama server Web Anda, dan nama direktori adalah direktori tempat Anda meletakkan hello.cgi (mungkin cgi-bin).

Memisahkan hello.cgi

Ada beberapa hal yang perlu diperhatikan tentang hello.cgi.

Pertama, Anda menggunakan perintah cetak sederhana. Program CGI tidak memerlukan deskriptor file khusus atau deskriptor keluaran. Untuk mengirim keluaran ke browser, cukup cetak ke stdout.

Kedua, perhatikan bahwa isi pernyataan cetak pertama (Tipe Konten: teks/html) tidak muncul di browser Web Anda. Anda dapat mengirimkan informasi apa pun yang Anda inginkan kembali ke browser (halaman HTML, grafik, atau suara), tetapi pertama-tama, Anda perlu memberi tahu browser jenis data apa yang Anda kirimkan. Baris ini memberi tahu browser jenis informasi apa yang diharapkan - dalam hal ini, halaman HTML.

Ketiga, program ini disebut hello.cgi. Anda tidak selalu perlu menggunakan ekstensi .cgi dengan nama program CGI Anda. Meskipun kode sumber untuk banyak bahasa juga menggunakan ekstensi .cgi, ekstensi ini tidak digunakan untuk menunjukkan jenis bahasa, namun merupakan cara bagi server untuk mengidentifikasi file sebagai file yang dapat dieksekusi, bukan sebagai file grafik, file HTML, atau berkas teks. Server sering kali dikonfigurasi untuk hanya mencoba mengeksekusi file-file yang memiliki ekstensi ini, menampilkan konten file lainnya. Meskipun penggunaan ekstensi .cgi tidak diperlukan, namun tetap dianggap sebagai praktik yang baik.

Secara umum hello.cgi terdiri dari dua bagian utama:

  • memberi tahu browser informasi apa yang diharapkan (Tipe Konten: teks/html)
  • memberi tahu browser apa yang akan ditampilkan (Halo, Dunia!)

Halo Dunia! di C

Untuk menunjukkan kemandirian bahasa program CGI, Listing 2.2 menunjukkan padanan program hello.cgi yang ditulis dalam C.

Daftar 2.2. Halo Dunia! di C. /* hello.cgi.c - Halo, Dunia CGI */ #include int main() ( printf("Jenis Konten: teks/html\r\n\r\n"); printf(" \n"); printf(" Halo Dunia!\n"); printf("\n"); printf(" \n"); printf("

Halo Dunia!

\n"); printf(" \N"); )

Catatan

Perhatikan bahwa hello.cgi versi Perl menggunakan Tipe Konten print ": text/html\n\n "; Sedangkan versi C menggunakan Printf("Content-Type: text/html\r\n\r\n");

Mengapa Perl mencetak operator diakhiri dengan dua baris baru (\n) sedangkan C printf diakhiri dengan dua pengangkutan kembali dan baris baru (\r\n)?

Secara teknis, header (semua keluaran sebelum baris kosong) diharapkan dipisahkan oleh pengangkutan kembali dan baris baru. Sayangnya, pada mesin DOS dan Windows, Perl menerjemahkan \r sebagai baris baru dan bukan sebagai carriage return.

Meskipun pengecualian Perl \rs secara teknis salah, pengecualian ini akan bekerja pada hampir semua protokol dan bersifat portabel di semua platform. Oleh karena itu, dalam semua contoh Perl dalam buku ini, saya menggunakan header pemisah baris baru daripada carriage return dan baris baru.

Solusi yang tepat untuk masalah ini disajikan pada Bab 4, Kesimpulan.

Baik server Web maupun browser tidak peduli bahasa apa yang digunakan untuk menulis program. Meskipun setiap bahasa memiliki kelebihan dan kekurangan sebagai bahasa pemrograman CGI, sebaiknya gunakan bahasa yang paling nyaman untuk Anda gunakan. (Pilihan bahasa pemrograman dibahas lebih rinci di Bab 1, “Common Gateway Interface (CGI)”).

Rendering CGI

Sekarang Anda dapat melihat lebih dekat masalah pengiriman informasi ke browser Web. Dari contoh "Halo, Dunia!", Anda dapat melihat bahwa browser Web mengharapkan dua set data: header, yang berisi informasi seperti informasi apa yang akan ditampilkan (misalnya Tipe Konten: baris) dan informasi aktual (apa yang browser Web ditampilkan). Kedua informasi ini dipisahkan oleh baris kosong.

Headernya disebut header HTTP. Ini memberikan informasi penting tentang informasi yang akan diterima browser. Ada beberapa berbagai jenis Header HTTP, dan yang paling universal adalah yang Anda gunakan sebelumnya: Content-Type: header. Anda dapat menggunakan kombinasi header HTTP yang berbeda, dipisahkan berdasarkan carriage return dan baris baru (\r\n). Baris kosong yang memisahkan header dari data juga terdiri dari carriage return dan baris baru (mengapa keduanya diperlukan akan dibahas secara singkat di catatan sebelumnya dan dirinci di Bab 4). Anda akan mempelajari tentang header HTTP lainnya di Bab 4; Saat ini Anda berurusan dengan Content-Type: header.

Tipe Konten: Header menjelaskan tipe data yang dikembalikan CGI. Format yang sesuai untuk header ini adalah:

Tipe Konten: subtipe/tipe

Dimana subtipe/tipe adalah tipe Multi Purpose Internet Mail Extensions (MIME) yang benar. Tipe MIME yang paling umum adalah tipe HTML: text/html. Tabel 2.1 mencantumkan beberapa tipe MIME umum yang akan dibahas; Daftar dan analisis tipe MIME yang lebih lengkap disajikan di Bab 4.

Catatan

MIME awalnya diciptakan untuk mendeskripsikan isi badan pesan email. Ini telah menjadi cara yang cukup umum untuk merepresentasikan informasi Tipe Konten. Anda dapat membaca lebih lanjut tentang MIME di RFC1521. RFC di Internet adalah singkatan dari Requests for Comments (Permintaan Komentar), yang merupakan ringkasan keputusan yang dibuat oleh kelompok-kelompok di Internet yang mencoba menetapkan standar. Anda dapat melihat hasil RFC1521 di alamat berikut: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabel 2.1. Beberapa tipe MIME yang umum. Jenis MIME Deskripsi Teks/html Hypertext Markup Language (HTML) Teks/polos File teks biasa Gambar/gif File grafis GIF Gambar/jpeg File grafik terkompresi JPEG Audio/file Audio dasar Sun *.au Audio/x-wav File Windows *.wav

Setelah header dan baris kosong, Anda cukup mencetak data dalam bentuk yang Anda butuhkan. Jika Anda mengirim HTML, cetak tag HTML dan datanya ke stdout setelah header. Anda juga dapat mengirim file grafik, suara, dan biner lainnya hanya dengan mencetak konten file ke stdout. Beberapa contoh mengenai hal ini diberikan dalam Bab 4.

Menginstal dan Menjalankan Program CGI

Bagian ini agak menyimpang dari pemrograman CGI dan berbicara tentang mengkonfigurasi server Web Anda untuk menggunakan CGI, menginstal dan menjalankan program. Anda akan diperkenalkan ke server yang berbeda untuk platform yang berbeda dengan lebih atau kurang detail, namun Anda harus menggali lebih dalam dokumentasi server Anda untuk menemukan opsi terbaik.

Semua server memerlukan ruang untuk file server dan ruang untuk dokumen HTML. Dalam buku ini, area server disebut ServerRoot, dan area dokumen disebut DocumentRoot. Pada mesin UNIX, ServerRoot biasanya berada di /usr/local/etc/httpd/, dan DocumentRoot biasanya berada di /usr/local/etc/httpd/htdocs/. Namun, ini tidak akan membuat perbedaan apa pun pada sistem Anda, jadi ganti semua referensi ke ServerRoot dan DocumentRoot dengan ServerRoot dan DocumentRoot Anda sendiri.

Saat Anda mengakses file menggunakan browser Web, Anda menentukan file di URL yang berhubungan dengan DocumentRoot. Misalnya, jika alamat server Anda adalah mymachine.org, maka Anda mengakses file ini dengan URL berikut: http://mymachine.org/index.html

Konfigurasi server untuk CGI

Sebagian besar server Web telah dikonfigurasi sebelumnya untuk memungkinkan penggunaan program CGI. Biasanya dua parameter menunjukkan ke server apakah file tersebut merupakan aplikasi CGI atau bukan:

  • Direktori yang ditunjuk. Beberapa server memungkinkan Anda menentukan bahwa semua file dalam direktori yang ditentukan (biasanya disebut cgi-bin secara default) adalah CGI.
  • Ekstensi nama file. Banyak server memiliki pra-konfigurasi yang memungkinkan semua file yang diakhiri dengan .cgi didefinisikan sebagai CGI.

Metode direktori yang ditunjuk adalah peninggalan masa lalu (server pertama menggunakannya sebagai satu-satunya metode untuk menentukan file mana yang merupakan program CGI), tetapi metode ini memiliki beberapa keunggulan.

  • Itu membuat program CGI tetap terpusat, mencegah direktori lain menjadi berantakan.
  • Anda tidak dibatasi pada ekstensi nama file tertentu, jadi Anda dapat memberi nama file apa pun yang Anda inginkan. Beberapa server memungkinkan Anda menetapkan beberapa direktori berbeda sebagai direktori CGI.
  • Ini juga memberi Anda kontrol lebih besar atas siapa yang dapat merekam CGI. Misalnya, jika Anda memiliki server dan mendukung sistem dengan banyak pengguna dan tidak ingin mereka menggunakan skrip CGI mereka sendiri tanpa meninjau program terlebih dahulu demi alasan keamanan, Anda hanya dapat menetapkan file tersebut dalam direktori terbatas dan terpusat sebagai CGI . Pengguna kemudian harus memberi Anda program CGI untuk diinstal, dan Anda dapat mengaudit kodenya terlebih dahulu untuk memastikan program tersebut tidak memiliki masalah keamanan yang besar.

Notasi CGI melalui ekstensi nama file dapat berguna karena fleksibilitasnya. Anda tidak dibatasi pada satu direktori untuk program CGI. Sebagian besar server dapat dikonfigurasi untuk mengenali CGI melalui ekstensi nama file, meskipun tidak semua server dikonfigurasi dengan cara ini secara default.

Peringatan

Ingatlah pentingnya masalah keamanan saat Anda mengkonfigurasi server Anda untuk CGI. Beberapa tips akan dibahas di sini, dan Bab 9, Melindungi CGI, membahas aspek-aspek ini secara lebih rinci.

Menginstal CGI di server UNIX

Terlepas dari bagaimana server UNIX Anda dikonfigurasi, ada beberapa langkah yang perlu Anda ambil untuk memastikan aplikasi CGI Anda berjalan seperti yang diharapkan. Server Web Anda biasanya akan berjalan sebagai pengguna yang tidak ada (yaitu, pengguna UNIX bukan siapa-siapa - akun yang tidak memiliki izin file dan tidak dapat login). Skrip CGI (ditulis dalam Perl, shell Bourne, atau bahasa skrip lainnya) harus dapat dieksekusi dan dibaca di seluruh dunia.

Petunjuk

Untuk membuat file Anda dapat dibaca dan dieksekusi oleh seluruh dunia, gunakan perintah izin UNIX berikut: chmod 755 nama file.

Jika Anda menggunakan bahasa skrip seperti Perl atau Tcl, berikan jalur lengkap juru bahasa Anda di baris pertama skrip Anda. Misalnya, skrip Perl yang menggunakan Perl di direktori /usr/local/bin akan dimulai dengan baris berikut:

#!/usr/local/bin/Perl

Peringatan

Jangan sekali-kali menempatkan interpreter (perl, atau biner Tcl Wish) di direktori /cgi-bin karena akan menimbulkan risiko keamanan pada sistem Anda. Hal ini akan dibahas lebih detail di Bab 9.

Beberapa server UNIX generik

Server NCSA dan Apache memiliki file konfigurasi yang serupa karena server Apache awalnya didasarkan pada kode NCSA. Secara default, mereka dikonfigurasi sehingga file apa pun di direktori cgi-bin (terletak secara default di ServerRoot) adalah program CGI. Untuk mengubah lokasi direktori cgi-bin, Anda dapat mengedit file konfigurasi conf/srm.conf. Format untuk mengkonfigurasi direktori ini adalah

ScriptAlias ​​​​nama direktori palsu nama direktori asli

dimana fakedirectoryname adalah nama direktori semu (/cgi-bin) dan realdirectoryname adalah path lengkap dimana program CGI sebenarnya disimpan. Anda dapat mengonfigurasi lebih dari satu ScriptAlias ​​dengan menambahkan lebih banyak baris ScriptAlias.

Konfigurasi default sudah cukup untuk kebutuhan sebagian besar pengguna. Anda perlu mengedit baris di file srm.conf untuk menentukan nama direktori sebenarnya yang benar. Jika, misalnya, program CGI Anda berlokasi di /usr/local/etc/httpd/cgi-bin, baris ScriptAlias ​​​​di file srm.conf Anda akan terlihat seperti ini:

SkripAlias ​​​​/cgi-bin/ /usr/local/etc/httpd/cgi-bin/

Untuk mengakses atau menautkan ke program CGI yang terletak di direktori ini, gunakan URL berikut:

Http://namahost/cgi-bin/namaprogram

Dimana nama host adalah nama host server Web Anda, dan nama program adalah nama CGI Anda.

Misalnya, Anda menyalin program hello.cgi ke direktori cgi-bin (misalnya /usr/local/etc/httpd/cgi-bin) di server Web Anda yang bernama www.company.com. Untuk mengakses CGI Anda, gunakan URL berikut: http://www.company.com/cgi-bin/hello.cgi

Jika Anda ingin mengonfigurasi server NCSA atau Apache untuk mengenali file apa pun dengan ekstensi .cgi sebagai CGI, Anda perlu mengedit dua file konfigurasi. Pertama, di file srm.conf, hapus komentar pada baris berikut:

Aplikasi AddType/x-httpd-cgi .cgi

Ini akan mengaitkan CGI tipe MIME dengan ekstensi .cgi. Sekarang, kita perlu mengubah file access.conf agar kita dapat menjalankan CGI di direktori mana pun. Untuk melakukan ini, tambahkan opsi ExecCGI ke baris Opsi. Ini akan terlihat seperti baris berikut:

Indeks Opsi FollowSymLinks ExecCGI

Sekarang, file apa pun dengan ekstensi .cgi dianggap CGI; mengaksesnya seperti yang Anda lakukan pada file apa pun di server Anda.

Server CERN dikonfigurasi dengan cara yang sama seperti server Apache dan NCSA. Alih-alih ScriptAlias, server CERN menggunakan perintah Exec. Misalnya, di file httpd.conf, Anda akan melihat baris berikut:

Jalankan /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

Server UNIX lainnya dapat dikonfigurasi dengan cara yang sama; Hal ini dijelaskan secara lebih rinci dalam dokumentasi server.

Menginstal CGI di Windows

Sebagian besar server yang tersedia untuk Windows 3.1, Windows 95 dan Windows NT dikonfigurasi menggunakan metode "ekstensi nama file" untuk pengenalan CGI. Secara umum, mengubah konfigurasi server berbasis Windows hanya memerlukan menjalankan program konfigurasi server dan melakukan perubahan yang sesuai.

Terkadang mengonfigurasi server untuk menjalankan skrip (seperti Perl) dengan benar bisa jadi sulit. Di DOS atau Windows, Anda tidak akan dapat menentukan penerjemah pada baris pertama skrip, seperti halnya dengan UNIX. Beberapa server memiliki konfigurasi yang telah ditentukan sebelumnya untuk mengaitkan ekstensi nama file tertentu dengan penerjemah. Misalnya, banyak server Web Windows berasumsi bahwa file yang diakhiri dengan .pl adalah skrip Perl.

Jika server tidak melakukan asosiasi file jenis ini, Anda dapat menentukan file batch pengemas yang memanggil juru bahasa dan skrip. Seperti pada server UNIX, jangan menginstal interpreter di direktori cgi-bin atau direktori mana pun yang dapat diakses oleh Web.

Menginstal CGI di Macintosh

Dua opsi server paling terkenal untuk Macintosh adalah WebStar StarNine dan pendahulunya MacHTTP. Keduanya mengenali CGI dari ekstensi nama filenya.

MacHTTP memahami dua ekstensi berbeda: .cgi dan .acgi, yang merupakan singkatan dari asynchronous CGI. Program CGI reguler yang diinstal pada Macintosh (dengan ekstensi .cgi) akan membuat server Web dalam keadaan sibuk hingga CGI selesai berjalan, menyebabkan server menunda semua permintaan lainnya. CGI asinkron, di sisi lain, memungkinkan server menerima permintaan bahkan saat sedang berjalan.

Pengembang CGI Macintosh yang menggunakan salah satu server Web ini, jika memungkinkan, sebaiknya hanya menggunakan ekstensi .acgi, bukan ekstensi .cgi. Ini harus bekerja dengan sebagian besar program CGI; jika tidak berhasil, ganti nama program menjadi .cgi.

Menjalankan CGI

Setelah Anda menginstal CGI, ada beberapa cara untuk menjalankannya. Jika program CGI Anda merupakan program keluaran saja, seperti program Hello,World!, maka Anda dapat menjalankannya hanya dengan mengakses URL-nya.

Sebagian besar program dijalankan sebagai aplikasi server dalam bentuk HTML. Sebelum mempelajari cara mendapatkan informasi dari formulir-formulir tersebut, bacalah terlebih dahulu pengenalan singkat tentang pembuatan formulir-formulir tersebut.

Tutorial singkat tentang formulir HTML

Dua tag terpenting dalam formulir HTML adalah

Dan . Anda dapat membuat sebagian besar formulir HTML hanya dengan menggunakan dua tag ini. Dalam bab ini, Anda akan menjelajahi tag-tag ini dan sebagian kecil kemungkinan tipe atau atribut. . Panduan Lengkap dan tautan ke formulir HTML ada di Bab 3, HTML dan Formulir.

Menandai

Menandai digunakan untuk menentukan bagian mana dari file HTML yang harus digunakan untuk informasi yang dimasukkan pengguna. Ini mengacu pada bagaimana sebagian besar halaman HTML menyebut program CGI. Atribut tag menentukan nama dan lokasi program - baik secara lokal atau sebagai URL lengkap, jenis pengkodean yang digunakan, dan metode pergerakan data yang digunakan oleh program.

Baris berikutnya menunjukkan spesifikasi tag :

< ACTION FORM = "url" METHOD = ENCTYPE = "..." >

Atribut ENCTYPE tidak memainkan peran khusus dan biasanya tidak disertakan dengan tag . Informasi rinci mengenai tag ENCTYPE diberikan di Bab 3. Salah satu cara menggunakan ENCTYPE ditunjukkan di Bab 14, "Ekstensi Bermerek".

Atribut ACTION mengacu pada URL program CGI. Setelah pengguna mengisi formulir dan memberikan informasi, semua informasi dikodekan dan ditransfer ke program CGI. Program CGI sendiri memecahkan masalah decoding dan pemrosesan informasi; Aspek ini dibahas dalam "Menerima Masukan dari Browser" pada bab selanjutnya.

Terakhir, atribut METHOD menjelaskan bagaimana program CGI harus menerima masukan. Kedua metode, GET dan POST, berbeda dalam cara meneruskan informasi ke program CGI. Keduanya dibahas dalam "Menerima Input dari Browser".

Agar browser mengizinkan input pengguna, semua tag formulir dan informasi harus diapit oleh tag . Jangan lupa tag penutupnya

untuk menunjukkan akhir formulir. Anda tidak bisa memiliki formulir di dalam formulir, meskipun Anda bisa menyiapkan formulir yang memungkinkan Anda menyajikan potongan informasi di tempat berbeda; aspek ini dibahas secara luas di Bab 3.

Menandai

Anda dapat membuat bilah masukan teks, tombol radio, kotak centang, dan cara lain untuk menerima masukan menggunakan tag . Bagian ini hanya mencakup kolom input teks. Untuk mengimplementasikan bidang ini, gunakan tag dengan atribut berikut:

< INPUT TYPE=text NAME = "... " VALUE = "... " SIZE = MAXLENGTH = >

NAMA adalah nama simbolis dari variabel yang berisi nilai yang dimasukkan oleh pengguna. Jika Anda menyertakan teks dalam atribut VALUE, teks tersebut akan ditempatkan sebagai default di kolom masukan teks. Atribut SIZE memungkinkan Anda menentukan panjang horizontal kolom input seperti yang akan muncul di jendela browser. Terakhir, MAXLENGTH menentukan jumlah maksimum karakter yang dapat dimasukkan pengguna ke dalam kolom. Harap diperhatikan bahwa atribut VALUE, SIZE, MAXLENGTH bersifat opsional.

Pengiriman Formulir

Jika Anda hanya memiliki satu bidang teks dalam formulir, pengguna dapat mengirimkan formulir hanya dengan mengetikkan informasi pada keyboard dan menekan Enter. Jika tidak, pasti ada cara lain bagi pengguna untuk menyajikan informasi. Pengguna mengirimkan informasi menggunakan tombol kirim dengan tag berikut:

< Input type=submit >

Tag ini membuat tombol Kirim di dalam formulir Anda. Ketika pengguna selesai mengisi formulir, dia dapat mengirimkan isinya ke URL yang ditentukan oleh atribut ACTION formulir dengan mengklik tombol Kirim.

Menerima masukan dari browser

Di atas adalah contoh rekaman program CGI yang mengirimkan informasi dari server ke browser. Pada kenyataannya, program CGI yang hanya mengeluarkan data tidak memiliki banyak penerapan (beberapa contoh diberikan di Bab 4). Kemampuan CGI yang lebih penting adalah menerima informasi dari browser - fitur yang memberikan karakter interaktif pada Web.

Program CGI menerima dua jenis informasi dari browser.

  • Pertama, ia memperoleh berbagai informasi tentang browser (tipenya, apa yang dapat dilihatnya, host host, dan sebagainya), server (nama dan versinya, port eksekusinya, dan sebagainya), dan program CGI. itu sendiri (nama program dan lokasinya). Server memberikan semua informasi ini ke program CGI melalui variabel lingkungan.
  • Kedua, program CGI dapat menerima masukan pengguna. Informasi ini, setelah dikodekan oleh browser, dikirim melalui variabel lingkungan (metode GET) atau melalui input standar (stdin - metode POST).

Variabel Lingkungan

Penting untuk mengetahui variabel lingkungan apa yang tersedia untuk program CGI, baik selama pelatihan maupun untuk debugging. Tabel 2.2 mencantumkan beberapa variabel lingkungan CGI yang tersedia. Anda juga dapat menulis program CGI yang menampilkan variabel lingkungan dan nilainya ke browser Web.

Tabel 2.2. Beberapa Variabel Lingkungan CGI Penting Variabel Lingkungan Tujuan REMOTE_ADDR Alamat IP mesin klien. REMOTE_HOST Host dari mesin klien. HTTP _ACCEPT Mencantumkan tipe data MIME yang dapat diinterpretasikan oleh browser. HTTP _USER_AGENT Informasi browser (jenis browser, nomor versi, sistem operasi, dll.). REQUEST_METHOD DAPATKAN atau POST. CONTENT_LENGTH Besarnya masukan jika dikirim melalui POST. Jika tidak ada masukan atau jika metode GET digunakan, parameter ini tidak ditentukan. QUERY_STRING Berisi informasi masukan ketika diteruskan menggunakan metode GET. PATH_INFO Memungkinkan pengguna untuk menentukan jalur dari garis komando CGI (misalnya, http://hostname/cgi-bin/programname/path). PATH_TRANSLATED Menerjemahkan jalur relatif di PATH_INFO ke jalur aktual pada sistem.

Untuk menulis aplikasi CGI yang menampilkan variabel lingkungan, Anda perlu mengetahui cara melakukan dua hal:

  • Tentukan semua variabel lingkungan dan nilainya yang terkait.
  • Cetak hasilnya ke browser.

Anda sudah tahu cara melakukan operasi terakhir. Di Perl, variabel lingkungan disimpan dalam array asosiatif %ENV, yang diperkenalkan dengan nama variabel lingkungan. Listing 2.3 berisi env.cgi, program Perl yang mencapai tujuan kita.

Daftar 2.3. Program Perl, env.cgi, yang mencetak semua variabel lingkungan CGI.

#!/usr/local/bin/Perl print "Jenis konten: teks/html\n\n"; mencetak " \n"; cetak " Lingkungan CGI\n"; cetak "\n"; cetak " \n"; cetak "

Lingkungan CGI

\n"; foreach $env_var (kunci %ENV) ( cetak " $env_var= $ENV($env_var)
\n"; ) mencetak " \N";

Program serupa bisa ditulis dalam C; kode lengkapnya ada di Listing 2.4.

Daftar 2.4. Env.cgi.c di C. /* env.cgi.c */ #include karakter eksternal **lingkungan; int main() ( char **p = lingkungan; printf("Jenis Konten: teks/html\r\n\r\n"); printf(" \n"); printf(" Lingkungan CGI\n"); printf("\n"); printf(" \n"); printf("

Lingkungan CGI

\n"); while(*p != NULL) printf("%s
\n",*p++); printf(" \N"); )

DAPATKAN atau POSKAN?

Apa perbedaan antara metode GET dan POST? GET meneruskan string masukan yang disandikan melalui variabel lingkungan QUERY_STRING, sementara POST meneruskannya melalui stdin. POST merupakan metode yang disukai terutama untuk formulir dengan data yang banyak, karena tidak ada batasan jumlah informasi yang dikirim, sedangkan dengan metode GET jumlah ruang media terbatas. Namun, GET yakin properti yang berguna; ini dibahas secara rinci di Bab 5, Masukan.

Untuk menentukan metode mana yang digunakan, program CGI memeriksa variabel lingkungan REQUEST_METHOD, yang akan disetel ke GET atau POST. Jika diatur ke POST, panjang informasi yang dikodekan disimpan dalam variabel lingkungan CONTENT_LENGTH.

Masukan Berkode

Saat pengguna mengirimkan formulir, browser terlebih dahulu mengkodekan informasinya sebelum mengirimkannya ke server dan kemudian ke aplikasi CGI. Saat Anda menggunakan tag , setiap bidang diberi nama simbolis. Nilai yang dimasukkan oleh pengguna direpresentasikan sebagai nilai variabel.

Untuk menentukan hal ini, browser menggunakan spesifikasi pengkodean URL, yang dapat dijelaskan sebagai berikut:

  • Pisahkan bidang yang berbeda dengan tanda ampersand (&).
  • Pisahkan nama dan nilai dengan tanda sama dengan (=), dengan nama di sebelah kiri dan nilai di sebelah kanan.
  • Mengganti spasi dengan tanda plus (+).
  • Mengganti semua karakter "abnormal" dengan tanda persen (%) diikuti dengan kode hex dua digit untuk karakter tersebut.

String akhir yang disandikan akan serupa dengan berikut ini:

Nama1=nilai1&nama2=nilai2&nama3=nilai3 ...

Catatan: Spesifikasi untuk pengkodean URL ditemukan di RFC1738.

Misalnya, Anda memiliki formulir yang menanyakan nama dan umur. Kode HTML yang digunakan untuk menampilkan formulir ini ditunjukkan pada Listing 2.5.

Daftar 2.5. Kode HTML untuk menampilkan form nama dan umur.

Nama dan Umur

Masukkan nama Anda:

Masukkan Umur anda:

Katakanlah pengguna memasukkan Joe Schmoe di kolom nama dan 20 di kolom umur. Masukan akan dikodekan dalam string masukan.

Nama=Joe+Schmoe&usia=20

Mengurai masukan

Agar informasi ini berguna, Anda perlu menggunakan informasi tersebut pada sesuatu yang dapat digunakan oleh program CGI Anda. Strategi untuk mengurai masukan dibahas di Bab 5. Dalam praktiknya, Anda tidak perlu memikirkan cara mengurai masukan, karena beberapa ahli telah menulis perpustakaan yang melakukan penguraian, dapat diakses oleh semua orang. Dua perpustakaan tersebut disajikan dalam bab ini di bagian berikut: cgi -lib.pl untuk Perl (ditulis oleh Steve Brenner) dan cgihtml untuk C (ditulis oleh saya).

Tujuan umum dari sebagian besar perpustakaan yang ditulis dalam berbagai bahasa adalah untuk mengurai string yang disandikan dan memasukkan pasangan nama dan nilai ke dalam struktur data. Tersedia keuntungan yang jelas dalam menggunakan bahasa yang memiliki struktur data bawaan seperti Perl; namun, sebagian besar perpustakaan untuk bahasa tingkat rendah seperti C dan C++ menyertakan struktur data dan eksekusi subrutin.

Pemahaman lengkap tentang perpustakaan tidak perlu dicapai; lebih penting mempelajari cara menggunakannya sebagai alat untuk mempermudah pekerjaan programmer CGI.

Cgi-lib.pl

Cgi-lib.pl menggunakan array asosiatif Perl. Fungsi &ReadParse mem-parsing string input dan memasukkan setiap pasangan nama/nilai berdasarkan nama. Misalnya, string Perl terkait yang diperlukan untuk memecahkan kode string masukan "nama/usia" yang baru saja disajikan

&BacaParse(*masukan);

Sekarang, untuk melihat nilai yang dimasukkan untuk "nama", Anda dapat mengakses array asosiatif $input("nama"). Demikian pula, untuk mengakses nilai "usia", Anda perlu melihat variabel $input ("usia").

Cgihtml

C tidak memiliki struktur data bawaan apa pun, jadi cgihtml mengimplementasikan daftar tautannya sendiri untuk digunakan dengan rutinitas penguraian CGI-nya. Ini mendefinisikan struktur tipe entri sebagai berikut:

Typedef struct ( Char *nama; Char *nilai; ) Tipe entri;

Untuk mengurai string input "nama/umur" di C menggunakan cgihtml, berikut ini digunakan:

/* mendeklarasikan daftar tertaut yang disebut input */ Llist input; /* mengurai input dan lokasi di daftar tertaut */ read_cgi_input(&input);

Untuk mengakses informasi usia, Anda dapat menguraikan daftar secara manual atau menggunakan fungsi cgi _val() yang tersedia.

#termasuk #termasuk Char *usia = malloc(sizeof(char)*strlen(cgi_val(input, "usia")) + 1); Strcpy(usia, cgi_val(masukan, "usia"));

Nilai "usia" sekarang disimpan dalam string usia.

Catatan: Daripada menggunakan array sederhana (seperti char age ;), saya secara dinamis mengalokasikan ruang memori untuk string age. Meskipun hal ini membuat pemrograman menjadi lebih sulit, namun hal ini penting dari sudut pandang keamanan. Hal ini dibahas lebih rinci di Bab 9.

Sebuah program CGI sederhana

Anda akan menulis program CGI bernama nameage.cgi yang menangani formulir nama/usia. Pemrosesan data (yang biasa saya sebut "barang") sangat minim. Nameage.cgi hanya menerjemahkan input dan menampilkan nama dan usia pengguna. Meskipun tidak banyak gunanya alat seperti itu, alat ini menunjukkan aspek paling penting dari pemrograman CGI: input dan output.

Anda menggunakan formulir yang sama seperti di atas, memanggil kolom "nama dan umur". Jangan khawatir tentang ketahanan dan efisiensi dulu; menyelesaikan masalah yang ada dengan cara yang paling sederhana. Solusi Perl dan C masing-masing ditunjukkan pada Listing 2.6 dan 2.7.

Daftar 2.6. Namaage.cgi di Perl

#!/usr/local/bin/Perl # nameage.cgi memerlukan "cgi-lib.pl" &ReadParse(*input); print "Tipe Konten: teks/html\r\n\r\n"; mencetak " \n"; cetak " Nama dan Umur\n"; cetak "\n"; cetak " \n"; print "Halo, " . $input("nama") . ". Anda\n"; print $input("usia") . " tahun.

\n"; cetak " \N";

Daftar 2.7. nameage.cgi di C

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( masukan daftar; read_cgi_input(&input); printf("Jenis Konten: teks/html\r\n\r\n"); printf(" \n"); printf(" Nama dan Umur\n"); printf("\n"); printf(" \n"); printf("Halo, %s. Anda\n",cgi_val(input,"nama")); printf("%s tahun.

\n",cgi_val(masukan,"umur")); printf(" \N"); )

Perlu diketahui bahwa kedua program ini hampir setara. Keduanya berisi rutinitas penguraian yang hanya menempati satu baris dan memproses seluruh masukan (berkat rutinitas perpustakaan yang sesuai). Outputnya pada dasarnya adalah versi modifikasi dari program utama Hello, World!.

Cobalah untuk menjalankan program dengan mengisi formulir dan mengklik tombol Kirim.

Strategi pemrograman umum

Anda sekarang mengetahui semua prinsip dasar yang diperlukan untuk pemrograman CGI. Setelah Anda memahami bagaimana CGI menerima informasi dan mengirimkannya kembali ke browser, kualitas sebenarnya dari produk akhir Anda bergantung pada kemampuan pemrograman umum Anda. Yaitu, ketika Anda memprogram CGI (atau apa pun), ingatlah kualitas berikut:

  • Kesederhanaan
  • Efisiensi
  • Keserbagunaan

Dua kualitas pertama cukup umum: cobalah membuat kode Anda mudah dibaca dan seefisien mungkin. Fleksibilitas lebih berlaku pada program CGI dibandingkan aplikasi lainnya. Saat Anda mulai mengembangkan program CGI Anda sendiri, Anda akan mengetahui bahwa ada beberapa aplikasi dasar yang ingin dibuat oleh semua orang. Misalnya, salah satu tugas paling umum dan jelas dari program CGI adalah memproses formulir dan mengirimkan hasilnya melalui email ke penerima tertentu. Anda dapat memproses beberapa formulir terpisah, masing-masing dengan penerima berbeda. Daripada menulis program CGI untuk setiap formulir, Anda dapat menghemat waktu dengan menulis program CGI yang lebih umum yang berlaku untuk semua formulir.

Dengan mencakup semua aspek dasar CGI, saya telah memberi Anda informasi yang cukup untuk memulai pemrograman CGI. Namun, untuk menjadi pengembang CGI yang efektif, Anda perlu memiliki pemahaman yang lebih mendalam tentang bagaimana CGI berkomunikasi dengan server dan browser. Sisa buku ini membahas secara rinci isu-isu yang disebutkan secara singkat dalam bab ini, serta strategi pengembangan aplikasi serta kelebihan dan keterbatasan protokol.

Ringkasan

Bab ini secara singkat memperkenalkan dasar-dasar pemrograman CGI. Anda membuat keluaran dengan memformat data Anda dengan benar dan mencetak ke stdout. Menerima masukan CGI sedikit lebih rumit karena harus diurai sebelum dapat digunakan. Untungnya, sudah ada beberapa perpustakaan yang melakukan parsing.

Saat ini Anda seharusnya sudah cukup nyaman dengan pemrograman aplikasi CGI. Sisa buku ini membahas lebih detail tentang spesifikasi, tip, dan strategi pemrograman untuk aplikasi yang lebih maju dan kompleks.