Ev Ofis malzemesi Kârsız ticaret cgi. E-Ticaret - nedir bu?

Kârsız ticaret cgi. E-Ticaret - nedir bu?

Açık Rusça e-ticaret. Çevrimiçi ticaret nasıl çalışır?

Son zamanlarda çevrimiçi ticaretle ilgili giderek daha fazla proje ortaya çıkıyor. Bu alanı incelerken sürecin genel ve anlaşılır bir tanımını bulamadım. Bu nedenle e-ticaret gibi bir alanda prosedürü anlamak için her zaman başvurabileceğiniz bir kopya kağıdı gibi bir şey yapmaya karar verdim.

Müşteri çekmeye yardımcı olan süreç ve kanallara odaklandığım için hemen rezervasyon yapacağım.

E-ticaret: neyle ilgili?

Çeşitli kaynaklardan alınan tanımlar, internet üzerinden mal veya hizmet satışına ilişkin bir şeyler söylüyor. Basit bir ifadeyle e-ticaret, paranın ortaya çıktığı herhangi bir çevrimiçi etkinliktir.

Alışveriş, satış, sigorta, bankacılık, elektronik para, her şey burada. Al ve imzala.

Hedeften

Konuyu anlamak için yola en baştan başlamanızı öneririm. Herhangi bir işletmenin amacı nedir? Doğru, para kazan. Yani herhangi bir ürünü, örneğin silikon çorapları hayal edin. Neden!

Aklıma ilk geleni aldım, böyle bir şey olduğu ortaya çıktı...

Bizim görevimiz bu çoraplardan para kazanmak. İnterneti düşünüyoruz. Hmm...neden bir web sitesi yapmıyorsunuz ve satışlar bu şekilde devam edecek, sadece beni Maldivler'de tutun! Ama bu o kadar basit değil.

Çizim yapmayı gerçekten seviyorum. Bu, çeşitli süreçlerin anlaşılmasına yardımcı olur. Hadi çizelim?!

Şu ana kadar modelimiz bu şekilde görünüyor. Çorapları alıp internete koyuyoruz ve para alıyoruz. Bu tek kelimeyle harika! Gözleriniz yanıyor, avuçlarınız terliyor ve şimdiden işe koyulmak istiyorsunuz. Peki bir web sitesi veya satış platformu oluşturmanız gerekiyor mu?

Satılık web sitesi veya platform

Ürününüzü World Wide Web'e yerleştirmenin çeşitli çözümleri vardır. Kendi web sitenizi oluşturabilir veya üçüncü taraf platformları (gruplar, sosyal ağlardaki sayfalar, mesaj panoları vb.) kullanabilirsiniz. Sitede duralım.

Bir web sitesi sipariş ettiniz, hazır bir şablon aldınız veya bir web sitesi oluşturucuyu kullanarak kendiniz oluşturdunuz (CMS'yi Google'da kullanabilirsiniz), önemli değil. Daha sonra farklı türde bir sürü silikon çorap yerleştirdiler ve mutlu oldular.

Okumayı böldüğüm için özür dilerim. Telegram kanalıma katılın. Yeni makale duyuruları, dijital ürünlerin geliştirilmesi ve büyüme hileleri, hepsi orada. Seni bekliyor! Devam edelim...

Ödeme sistemleri

Ancak bir kişinin sizden burada ve şimdi satın alması için ödeme sistemlerinde ince ayar yapılması gerekecektir. Bu, çevrimiçi alışveriş yapmanıza olanak tanıyan bir tür hizmettir: banka kartları, İnternet parası, cep telefonları ve diğer birçok şey. Bunun için işlemlerin bir yüzdesini paylaşmanız gerekecek ancak bu şekilde hayatınızı çok daha kolay hale getireceksiniz.

Size uygun hizmeti seçin. Bir yerlerde yüzde daha yüksek olacak ve bir yerlerde abonelik ya da başka bir şey olacak. Sadece biraz araştırma yap. Gerekli kodu web sitenize koyun, tüm işlemleri kart hesabınıza bağlayın ve işte!

Görünüşe göre hepsi bu. İnternet sitesi var, ürün kartları da var, hatta satın al butonu bile çalışıyor ama bir şeyler eksik... Satın alacak müşteri akışı yok.

Müşteri akışları

Nerede: CAC = Yeni bir müşteri edinmenin maliyeti. MM (pazarlamakampanya maliyetleri) = Müşterileri çekmeyi (ancak onları elde tutmayı değil) amaçlayan pazarlama harcamalarının toplam maliyeti. W (ücretler) = Pazarlamacıların ve satış yöneticilerinin maaşı. S (yazılım) = Reklam ve satışta kullanılan yazılımın maliyeti (örneğin, kullanılan satış platformu, pazarlama otomasyonu, A/B testi, analiz hizmetleri vb.). PS (profesyonel hizmetler) = Pazarlama ve satış departmanlarına (tasarım, danışmanlık vb.) sağlanan profesyonel hizmetlerin maliyeti. O (diğer) = Pazarlama ve satış departmanlarıyla ilgili diğer genel giderler. CA (kazanılan müşteriler) = Çekilen müşterilerin toplam sayısı.

Ancak müşterinin kalitesini unutmamalıyız; LTV burada yardımcı olacaktır.

Önemli metrikler: YBD

Müşteri yaşam döngüsü olan Canlı Zaman Değeri, e-ticarette dikkate alınması gereken bir diğer göstergedir. Bir müşterinin ortalama ne kadar gelir getirdiğini gösterir. Hesaplamada farklı yaklaşımlar var, ben kâra dayalı olanı, en doğru olanı olarak seçtim.

Bu, her bir müşterinin tüm satın alma geçmişi boyunca elde ettiği toplam gelirin toplamıdır. Tüm müşteri satın almalarının (işlemlerinin) toplamını N işlemine ekleyin; burada N işlemi, müşterinin şirketinizle yaptığı son satın alma işlemidir. Tüm müşteri işlem verilerine erişiminiz varsa bunu Excel kullanarak kolayca hesaplayabilirsiniz.

LTV = (işlem 1 + işlem 2 + işlem 3... + işlem N) x gelirdeki kâr payı.

LTV'yi net kara göre hesaplamak sonuçta bir müşterinin şirketinize getirdiği gerçek karı gösterir. Bu, müşteri hizmetlerinin maliyetini, elde tutma maliyetini, cazibe maliyetini vb. hesaba katar. Sonuç, bireysel verilere dayanan bir dizi hesaplamadır. Zaman içinde müşteri başına elde edilen toplam kâr, müşterilerinizin bugüne kadarki kârlılığı konusunda size doğru bir anlayış sağlayacaktır.

Diğer yaklaşımları adresinde bulabilirsiniz.

Önemli göstergeler: CAC ve LTV oranı

Bir işletmenin sürdürülebilirliğini anlamak için bahsedilen iki CAC:LTV oranının oranına bakmak çok önemlidir.

  • 1:1'den az - Tam hızla iflasa doğru koşuyorsunuz.
  • 1:1 – Çektiğiniz her müşteriden para kaybedersiniz.
  • 1:2 – İyi görünüyor, ancak yeterince yatırım yapmıyorsunuz ve daha hızlı gelişebilirsiniz. Daha agresif müşteri edinme kampanyaları başlatın ve 1:3'e yakın oranlara ulaşın.
  • 1:3 – İdeal oran. Başarılı bir işiniz ve güçlü bir iş modeliniz var.

Önemli göstergeler: ROI unutma

Yukarıda da bahsettiğimiz gibi e-ticarette satın alma kanalını kullanmanın karlı olup olmadığını net bir şekilde anlamanız gerekiyor. LTV ve CAC'nin yanı sıra önemli bir gösterge daha var: ROI. Bizim durumumuzda reklamcılığa yaptığınız yatırımın karşılığını alıp almadığını gösterir. Yani. yatırılan 1 ruble sonunda bize ne kadar kazandırdı.

Hesaplama için çok basit bir formül kullanılır:

Burada "Kampanya Geliri", kanaldan elde edilen gelir ile ürününüzün maliyeti arasındaki farktır. Kârı hesaplamak için reklam maliyetlerini çıkarın.

Böylece daha ayrıntılı bir formül şöyle görünecektir:

ROI = (Kanal Geliri – Maliyet) – Reklam Giderleri / Reklam Giderleri x %100

Hesaplamayla ilgili daha ayrıntılı bir örneği okuyun. Aslında bu basit formül, her şeyin otomatik olarak hesaplandığı aynı Excel tablosuna yerleştirilmiştir.

E-ticarette ele aldığımız üç gösterge de önemlidir. Her biri akışlarınızdaki darboğazları bulmanıza ve onlarla çalışmanıza olanak tanır. İşte iş dünyasının büyüme potansiyeli burada yatıyor. Çoraplı modelimize biraz daha ekledim.

Her şeyi tek bir materyale sığdırmak imkansız ve onu bu kadar uzun süre kim okuyacak? Daha sonra e-ticaretin satışlara müdahale edebilecek nüansları hakkında ayrı bir rehber hazırlayacağım.

Toplam

Genel olarak, artık çevrimiçi ticaret veya e-ticaret hakkında genel bir anlayışa sahipsiniz. Üstelik dedikleri gibi: "Şeytan ayrıntıda gizlidir." Her kanalı ayrı ayrı inceleyin, performans göstergelerini hesaplayın ve küçük şeylerde yeni bilgiler arayın. Size özel internet satışları ve daha fazlası! Ve bir malzemem daha var.

Evet, neredeyse unutuyordum, Mutlu Yıllar sevgili okuyucular! Gelecek yıl size büyük zaferler ve başarılar diliyorum!

Andover, Massachusetts, 19 Kasım 2003

Ticaret Grubu, Inc. (NYSE: CGI), Massachusetts'teki en büyük özel yolcu otomobil sigortası yazarı ve CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), önde gelen bilgi teknolojisi ve iş işleme hizmetleri sağlayıcısı, bugün 35 milyon ABD Doları değerinde altı yıllık bir iş süreci dış kaynak kullanımı (BPO) sözleşmesi yenilemesinin imzalandığını duyurdu. CGI, Massachusetts özel yolcu ve ticari otomobil hatları için tam poliçe işleme hizmetleri sağlamanın yanı sıra, CGI'nın CollaborativeEdge acente arayüz aracını, uygulama desteğini ve bakımını, düzenleyici desteği, sistem danışmanlığını ve belge yönetimi hizmetlerini de sağlayacak.

Commerce Group'un başkan yardımcısı ve CFO'su Gerald Fels şunları söyledi: "Massachusetts'teki lider özel binek otomobil sağlayıcısı olarak amacımız, temsilcilerimize ve çalışanlarımıza en üst düzeyde performans göstermelerine yardımcı olacak hizmetler sunmaktır. Yıllar boyunca CGI ile güçlü bir ilişki geliştirdik. Sistemleri sağlam ve doğrudur ve ekipleri dahili işleme sistemlerimize oldukça aşinadır. Bu bizim için önemli."

CGI Sigorta Hizmetleri Başkanı Serge LaPalme şunları ekledi: "Ticaret Grubu ile 30 yılı aşkın süredir devam eden ilişkimizi sürdürmekten çok memnunuz. Ticaret Grubu değerli iş ortaklarımızdan biri olmaya devam ediyor ve Başarımız. Müşterilerimizin asıl işlerine daha fazla odaklanmasına yardımcı olmak için, yeni teknolojilerden gerektiği zaman ve yerde yararlanıyoruz. Ekibimiz sigorta endüstrisini ve Devletin benzersiz düzenleyici ortamını yakından tanıyor ve bunun sonucunda hızlı bir şekilde hareket ediyor. Mevcut çözümleri sürekli gelişen bu sektöre uyarlamak."

The Commerce Group, Inc. Hakkında

Bir sigorta holding şirketi olan Commerce Group, Inc.'in merkezi Webster, Massachusetts'te bulunmaktadır. Commerce Group'un mülk ve kaza sigortası iştirakleri arasında Massachusetts'teki The Commerce Insurance Company ve Citation Insurance Company, California'daki Commerce West Insurance Company ve Ohio'daki American Commerce Insurance Company bulunmaktadır. Bağlı ortaklıklarının birleşik sigorta faaliyetleri aracılığıyla Commerce Group, 22. sırada yer almaktadır. A.M.'ye göre ülkedeki en büyük bireysel otomobil sigortası grubu En iyisi, 2002'nin doğrudan yazılı prim bilgilerine dayanmaktadır.

CGI hakkında
1976 yılında kurulan CGI, çalışan sayısına göre Kuzey Amerika'nın beşinci büyük bağımsız bilgi teknolojisi hizmetleri şirketidir. CGI ve bağlı şirketleri 20.000 profesyonel istihdam etmektedir. CGI'nın yıllık gelir oranı şu anda 2,8 milyar Kanada Doları (1,9 milyar ABD Doları) olup, 30 Eylül 2003 itibarıyla CGI'nın birikmiş sipariş miktarı 12,3 milyar Kanada Doları (9,1 milyar ABD Doları) idi. CGI, Kanada, Amerika Birleşik Devletleri ve Avrupa'daki ofislerden dünya çapındaki müşterilere uçtan uca BT ve iş süreci hizmetleri sunmaktadır. CGI'nın hisseleri TSX (GIB.A) ve NYSE'de (GIB) listelenmektedir ve TSX 100 Bileşik Endeksi'nin yanı sıra S&P/TSX Kanada Bilgi Teknolojisi ve Kanada MidCap Endekslerine dahil edilmiştir.

2012: British Logica'nın satın alınması

Haziran 2012'de CGI Group, Avrupa'nın en büyük sistem entegratörü Logica'yı satın almak için bir anlaşma imzaladığını duyurdu. İşlem tutarı 2,8 milyar Kanada doları (2,7 milyar dolar) oldu. Varılan anlaşmaların bir parçası olarak CGI, Logica'nın 515 milyon C$ tutarındaki borcunu geri ödeme yükümlülüğünü de üstlenmeyi kabul etti.

CGI, işlemi finanse etmek için ek 46,7 milyon hisse ihraç ederek 1 milyar Kanada doları toplamayı, Kanada Imperial Bank of Commerce, National Bank of Canada ve The Toronto-Dominion Bank'tan 2 milyar Kanada doları ve yaklaşık 650 milyon Kanada doları borç almayı planlıyor. dolar daha fazla dolar - mevcut kredi limiti dahilinde.

Hisse başına önerilen fiyat, Logica'nın 30 Mayıs 2012'deki kapanış fiyatından %59,8 daha yüksekti. Anlaşma, Logica'nın yıl içindeki faiz, vergi, amortisman ve amortisman öncesi kazancının (FAVÖK) yaklaşık 6,6 katını temsil ediyor. 31 Aralık 2011'de sona eren 12 aylık dönem

Logica'nın satın alınmasının, satın alma ve entegrasyon maliyetleri hariç, CGI'nın hisse başına kazancını %25 ila %30 oranında artırması bekleniyor. Birleşmenin sonucunda ortaya çıkacak şirketin iş gücü ve yıllık geliri, CGI'nınkinin iki katından fazla olacak. Birleşen şirketin personelinin büyüklüğü 43 ülkedeki ofislerde bulunan yaklaşık 72 bin çalışandan oluşacak ve yıllık gelir yaklaşık 10,4 milyar Kanada doları (9,6 milyar dolar) olacak.

Yeni şirket, dünyanın BT danışmanları arasında altıncı büyük şirket olacak. Reuters'in tahminlerine göre bunların en büyükleri IBM, Accenture, Cap Gemini, Tata Consultancy ve Infosys'tir.

CGI Başkanı ve CEO'su Michael Roach şunları söyledi: "Logica, kendini işine adamış profesyonellere ve güvenilir, uzun vadeli müşterilere sahip lider bir iş ve teknoloji hizmetleri şirketidir. Doğru şeyi yaptığımızdan eminiz." Logica'yı satın alarak, onu da satın almış oluyoruz. doğru fiyatla ve doğru zamanda, uçtan uca teknoloji hizmetlerinin en büyük birkaç bağımsız sağlayıcısından birini yaratmak."

CGI'nın yönetim kurulu, işlemi oybirliğiyle onayladı. Hissedar onayı alındıktan ve standart prosedürler izlenerek Eylül 2012'de tamamlanması planlanıyor. Şirket entegrasyon sürecinin 3 yıl içerisinde tamamlanması planlanıyor

Çevrimiçi mağaza sahipleri "elektronik ticaret" kavramına ilk elden aşinadır, "e-ticaret nedir?" sorusunun cevabını zaten biliyorlar. Ancak işin özüne inerseniz birçok nüans ortaya çıkıyor ve bu terim daha geniş bir anlam kazanıyor.

E-ticaret: nedir bu?

Genel kavram şu şekildedir: E-ticaret, mal tedarikinde veya hizmet/iş tedarikinde dijital veri aktarımını kullanan bir dizi operasyonun dahil edilmesini içeren, iş yapmaya yönelik belirli bir yaklaşım olarak anlaşılmaktadır. İnternet.

Dolayısıyla elektronik iletişim araçları kullanılarak gerçekleştirilen herhangi bir ticari işlemdir.

Çalışma şeması şu şekilde düzenlenmiştir:

  • Herkes blog yazarı olabilir veya kendi İnternet sayfasının herhangi bir sahibi olabilir) bu sisteme kaydolur;
  • kendi bağlantısını alır;
  • web sayfasına özel bir kod yerleştirir - e-Ticaret Ortakları Ağının seçilen resmi ortağı için bir reklam görünür;
  • web sitesi dönüşümünü izler;
  • Satış ortağı bağlantısını takip eden web sitenize gelen bir ziyaretçinin yaptığı her satın alma işlemi için belirli bir yüzde kazanır.

WP e-Ticaret

Artık çok sayıda insan, kendi ürünlerini satmak için benzersiz bir çevrimiçi mağaza olan kendi web sitelerini oluşturma arzusu nedeniyle e-ticaret konusunda tutkulu. Bu artan talebi karşılamak için geliştiriciler e-ticaret şablonları oluşturmaya odaklandı. Bakalım bundan sonra ne olacak.

Böyle bir şablon örneği WordPress e-ticaretidir. Öncelikle blog oluşturmak ve düzenlemek için tasarlanmış, WordPress (en ünlü web kaynağı yönetim sistemlerinden biri) için bir alışveriş sepeti eklentisidir. Tamamen ücretsiz olarak sağlanmakta ve site ziyaretçilerinin web sitesi üzerinden alışveriş yapmalarına olanak sağlamaktadır.

Başka bir deyişle, bu eklenti bir çevrimiçi mağaza (WordPress tabanlı) oluşturmanıza olanak tanır. Bu e-ticaret eklentisi, modern ihtiyaçlara uyacak gerekli tüm araçlara, ayarlara ve seçeneklere sahiptir.

World Wide Web sayesinde hemen hemen herkes, gözleri yormayan ve geniş çapta yayılabilen bir biçimde çevrimiçi bilgi sağlayabilir. Hiç şüphe yok ki internette gezindiniz ve diğer siteleri gördünüz ve artık muhtemelen "HTTP" ve "HTML" gibi korkutucu kısaltmaların "Web" ve "bilginin internette ifade edilme şekli"nin kısaltması olduğunu biliyorsunuzdur. İnternette bilgi sunma deneyiminiz zaten olabilir.

İnternetin, muazzam popülaritesinden ve yaygın gelişiminden de görülebileceği gibi, bilgi dağıtımı için ideal bir ortam olduğu kanıtlanmıştır. Bazıları İnternet'in kullanışlılığını sorgulamış ve yaygın gelişimini ve popülaritesini esas olarak izinsiz reklamlara bağlamış olsa da, İnternet'in her türlü bilgiyi sunmak için önemli bir araç olduğu inkâr edilemez. Güncel bilgileri (haberler, hava durumu, canlı spor etkinlikleri) ve referans malzemelerini elektronik olarak sağlamak için mevcut birçok hizmetin yanı sıra, önemli miktarda başka veri türü de mevcuttur. 1995 yılındaki tüm vergi beyannamesi formlarını ve diğer bilgileri World Wide Web aracılığıyla dağıtan IRS, yakın zamanda Web sitesi için hayran postaları aldığını itiraf etti. IRS'in hayran mektupları alacağını kim düşünebilirdi? Bunun nedeni, sitesinin iyi tasarlanmış olması değil, binlerce, belki de milyonlarca insan için gerçekten yararlı bir araç olduğunun kanıtlanmış olmasıdır.

Web'i benzersiz ve bu kadar çekici bir bilgi hizmeti yapan şey nedir? Her şeyden önce verilere hipermedya arayüzü sağlar. Bilgisayarınızın sabit diskini düşünün. Tipik olarak veriler, dosya sistemine benzer şekilde doğrusal bir biçimde ifade edilir. Örneğin, çok sayıda klasörünüz var ve her klasörün içinde belgeler veya başka klasörler var. Web, hipermedya adı verilen bilgiyi ifade etmek için farklı bir paradigma kullanır. Köprü metni arayüzü bir belge ve bağlantılardan oluşur. Bağlantılar, diğer belgeleri görmek veya başka türdeki bilgileri bulmak için tıklanan kelimelerdir. Web, hipermetin kavramını grafikler, sesler, video gibi diğer medya türlerini de kapsayacak şekilde genişletir (bundan dolayı "hipermedya" adı verilir). Bir belgede metin veya grafik seçmek, seçilen öğeyle ilgili bilgileri istediğiniz sayıda formda görmenize olanak tanır.

Verileri meslektaşlarıyla anında kullanmak isteyen akademisyenlerden, şirketleri hakkındaki bilgileri herkesle paylaşan iş adamlarına kadar hemen hemen herkes, bilgiyi sunmanın ve dağıtmanın bu basit ve benzersiz yolundan yararlanabilir. Ancak, bilgi vermek son derece önemli olsa da, son birkaç yılda birçok kişi bilgi almanın da aynı derecede önemli bir süreç olduğunu düşünmeye başladı.

Web bilgi için benzersiz bir hipermedya arayüzü sağlasa da, verileri dağıtmanın başka birçok etkili yolu vardır. Örneğin, Dosya Aktarım Protokolü (FTP) ve Gopher haber grubu gibi ağ hizmetleri, World Wide Web'den çok önce mevcuttu. Elektronik posta, neredeyse bu ağların başlangıcından beri İnternet ve diğer ağların çoğunda iletişim ve bilgi alışverişinin birincil aracı olmuştur. İnternet neden bilgi dağıtmanın bu kadar popüler bir yolu haline geldi? İnternet'in multimedya yönü, benzeri görülmemiş başarısına önemli ölçüde katkıda bulunmuştur, ancak İnternet'in en etkili olabilmesi için etkileşimli olması gerekir.

Kullanıcı girişi alma ve bilgi sağlama yeteneği olmasaydı Web tamamen statik bir ortam olurdu. Bilgiler yalnızca yazar tarafından belirtilen formatta mevcut olacaktır. Bu, genel olarak bilgi işlemin yeteneklerinden birini zayıflatacaktır: etkileşimli bilgi. Örneğin, kullanıcıyı sanki bir kitap ya da sözlüğe bakıyormuş gibi birden fazla belgeyi görüntülemeye zorlamak yerine, kullanıcının ilgi duyduğu bir konuyla ilgili anahtar kelimeleri belirlemesine izin vermek daha iyi olacaktır. Kullanıcılar, içerik sağlayıcı tarafından tanımlanan katı bir yapıya güvenmek yerine verilerin sunumunu özelleştirebilir.

"Web sunucusu" terimi yanıltıcı olabilir çünkü hem fiziksel makineyi hem de onun İnternet tarayıcılarıyla iletişim kurmak için kullandığı yazılımı ifade edebilir. Bir tarayıcı belirli bir Web adresini istediğinde, önce makineye İnternet üzerinden bağlanır ve Web sunucusu yazılımına belge için bir istek gönderir. Bu yazılım sürekli olarak çalışır, bu tür isteklerin gelmesini bekler ve buna göre yanıt verir.

Sunucular veri gönderip alabilmesine rağmen sunucunun işlevselliği sınırlıdır. Örneğin en ilkel sunucu sadece gerekli dosyayı tarayıcıya gönderebilir. Sunucu genellikle bu veya bu ek girdiyle ne yapacağını bilemez. ISP, sunucuya bu ek bilgilerin nasıl işleneceğini söylemezse, sunucu büyük olasılıkla girişi görmezden gelecektir.

Sunucunun, İnternet tarayıcısına dosya arama ve gönderme dışında diğer işlemleri gerçekleştirebilmesi için, sunucunun işlevselliğini nasıl genişleteceğinizi bilmeniz gerekir. Örneğin, bir Web sunucusu, böyle bir yetenek sunucuya bir şekilde programlanmadığı sürece, kullanıcı tarafından girilen bir anahtar kelimeye dayalı olarak bir veritabanında arama yapamaz ve birden fazla eşleşen belgeyi döndüremez.

CGI nedir?

Ortak Ağ Geçidi Arayüzü (CGI), sunucunun işlevselliğini genişletmenize olanak tanıyan, sunucuya yönelik bir arayüzdür. CGI'yı kullanarak sitenize erişen kullanıcılarla etkileşimli olarak etkileşim kurabilirsiniz. Teorik düzeyde CGI, sunucunun tarayıcıdan gelen girdiyi ayrıştırmasına (yorumlamasına) ve kullanıcının girdisine dayalı olarak bilgi döndürmesine olanak tanır. Pratik düzeyde CGI, programcının sunucuyla kolayca iletişim kuran programlar yazmasına olanak tanıyan bir arayüzdür.

Genellikle sunucunun yeteneklerini genişletmek için sunucuyu kendiniz değiştirmeniz gerekir. Bu çözüm, İnternet Protokolü ağ programlamasının alt katmanının anlaşılmasını gerektirdiğinden istenmeyen bir çözümdür. Bu aynı zamanda sunucu kaynak kodunun düzenlenmesini ve yeniden derlenmesini veya her görev için özel bir sunucu yazılmasını da gerektirir. Diyelim ki sunucunun yeteneklerini, tarayıcıdan kullanıcı tarafından girilen bilgileri alıp başka bir kullanıcıya e-postayla göndererek Web'den e-postaya ağ geçidi görevi görecek şekilde genişletmek istiyorsunuz. Sunucunun, tarayıcıdan gelen girişi ayrıştırmak, e-posta yoluyla diğer kullanıcıya iletmek ve yanıtı ağ bağlantısı üzerinden tarayıcıya geri iletmek için kod eklemesi gerekir.

İlk olarak, böyle bir görev sunucu koduna erişim gerektirir ve bu her zaman mümkün değildir.

İkincisi zordur ve kapsamlı teknik bilgi gerektirir.

Üçüncüsü, bu yalnızca belirli bir sunucu için geçerlidir. Sunucunuzu başka bir platforma taşımanız gerekiyorsa, bu platforma kod taşımak için çalıştırmanız veya en azından çok fazla zaman harcamanız gerekecektir.

Neden CGI?

CGI bu sorunlara taşınabilir ve basit bir çözüm sunuyor. CGI protokolü, programların bir Web sunucusuyla iletişim kurması için standart bir yol tanımlar. Herhangi bir özel bilgi gerektirmeden, Web sunucusuyla arayüz oluşturan ve iletişim kuran herhangi bir makine dilinde bir program yazabilirsiniz. Bu program CGI protokolünü anlayan tüm Web sunucularıyla çalışacaktır.

CGI iletişimi standart giriş ve çıkış kullanılarak yapılır; bu, programlama dilinizi kullanarak verileri nasıl yazdıracağınızı ve okuyacağınızı biliyorsanız, bir Web sunucusu uygulaması yazabileceğiniz anlamına gelir. Girdi ve çıktıyı ayrıştırmanın dışında, CGI uygulamalarını programlamak neredeyse başka herhangi bir uygulamayı programlamaya eşdeğerdir. Örneğin, "Merhaba Dünya!" programını programlamak için, dilinizin yazdırma işlevlerini ve uygun mesajı yazdırmak üzere CGI programları için tanımlanan formatı kullanırsınız.

Bir programlama dili seçme

CGI evrensel bir arayüz olduğundan herhangi bir makine diliyle sınırlı değilsiniz. Sıklıkla sorulan önemli bir soru şudur: CGI programlama için hangi programlama dilleri kullanılabilir? Aşağıdakileri yapmanıza olanak tanıyan herhangi bir dili kullanabilirsiniz:

  • Standart çıktıya yazdır
  • Standart girişten oku
  • Değişken modlardan okuma

Hemen hemen tüm programlama dilleri ve birçok betik dili bu üç şeyi yapar ve bunlardan herhangi birini kullanabilirsiniz.

Diller şu iki sınıftan birine girer: çevrilmiş ve yorumlanmış. C veya C++ gibi çevrilmiş bir dil genellikle daha küçük ve daha hızlıdır; Perl veya Rexx gibi yorumlanan diller ise bazen başlangıçta büyük bir yorumlayıcının yüklenmesini gerektirir. Ayrıca, diliniz çevrilebilirse, ikili kodları (makine diline çevrilen kod) kaynak kodu olmadan dağıtabilirsiniz. Yorumlanabilir komut dosyalarının dağıtılması genellikle kaynak kodunun dağıtılması anlamına gelir.

Dil seçmeden önce öncelikle önceliklerinizi göz önünde bulundurmanız gerekir. Bir programlama dilinin hızının ve verimliliğinin faydalarını diğerinin programlama kolaylığına göre tartmanız gerekir. Başka bir dil öğrenmek istiyorsanız, bildiğiniz dili kullanmak yerine her iki dilin avantajlarını ve dezavantajlarını dikkatlice tartın.

CGI programlama için en yaygın kullanılan iki dil C ve Perl'dir (her ikisi de bu kitapta ele alınmaktadır). Her ikisinin de belirgin avantajları ve dezavantajları vardır. Perl çok üst düzey bir dildir ve aynı zamanda güçlü bir dildir, özellikle metin ayrıştırmaya uygundur. Kullanım kolaylığı, esnekliği ve gücü onu CGI programlama için çekici bir dil haline getirse de, nispeten büyük boyutu ve daha yavaş çalışması onu bazen bazı uygulamalar için uygunsuz hale getirir. C programları daha küçüktür, daha verimlidir ve daha düşük düzeyde sistem kontrolü sağlar, ancak programlanması daha karmaşıktır, hafif yerleşik metin işleme rutinlerine sahip değildir ve hata ayıklaması daha zordur.

CGI programlama için en uygun dil hangisidir? Programlama açısından daha uygun olduğunu düşündüğünüz. Her ikisi de CGI uygulamalarını programlamak için eşit derecede etkilidir ve uygun kütüphanelerle her ikisi de benzer yeteneklere sahiptir. Ancak ulaşılması zor bir sunucunuz varsa daha küçük, çevrilmiş C programlarını kullanabilirsiniz.Çok fazla metin işleme çalışması gerektiren bir uygulamayı hızlı bir şekilde yazmanız gerekiyorsa bunun yerine Perl'i kullanabilirsiniz.

Dikkat

CGI uygulamalarına bazı önemli alternatifler bulunmaktadır. Artık birçok sunucu, bağımsız CGI uygulamalarının aksine doğrudan sunucu uzantılarının programlanmasını kolaylaştıran API programlamayı içeriyor. API sunucuları genellikle CGI programlarından daha verimlidir. Diğer sunucular, veritabanı bağlantısı gibi CGI olmayan özel öğeleri işleyebilen yerleşik işlevsellik içerir. Son olarak, bazı uygulamalar Java gibi bazı yeni istemci tarafı (sunucu tarafı yerine) teknolojiler tarafından yönetilebilir. Teknolojideki bu kadar hızlı değişimlerle birlikte CGI hızla geçerliliğini yitirecek mi?

Zorlu. CGI'nın yeni teknolojilere göre birçok avantajı vardır.

  • Çok yönlü ve taşınabilirdir. Herhangi bir platformda hemen hemen her programlama dilini kullanarak bir CGI uygulaması yazabilirsiniz. Sunucu API'si gibi alternatiflerden bazıları sizi belirli dillerle sınırlandırır ve öğrenilmesi çok daha zordur.
  • Java gibi istemci tarafı teknolojilerinin CGI'nın yerini alması pek olası değildir çünkü sunucu tarafı uygulamaları çalıştırmaya çok daha uygun olan bazı uygulamalar vardır.
  • CGI sınırlamalarının çoğu HTML veya HTTP sınırlamalarıdır. İnternet standartları bir bütün olarak geliştikçe CGI yetenekleri de gelişiyor.

Özet

Ortak Ağ Geçidi Arayüzü, programların Web sunucularıyla etkileşime girmesini sağlayan protokoldür. CGI'nın çok yönlülüğü, programcılara hemen hemen her dilde ağ geçidi programları yazma yeteneği verir, ancak farklı dillerle ilişkili birçok ödünleşim vardır. Bu yetenek olmasaydı, etkileşimli Web sayfaları oluşturmak zor olurdu, en iyi ihtimalle sunucu değişiklikleri gerektirirdi ve etkileşim, site yöneticisi olmayan çoğu kullanıcı için kullanılamaz olurdu.

Bölüm 2: Temel Bilgiler

Birkaç yıl önce Harvard'daki bir üniversite için insanların onlar hakkında yorum yapabileceği bir sayfa oluşturdum. O zamanlar İnternet henüz yeniydi ve belgeler kıttı. Diğerleri gibi ben de CGI programlamayı kendime öğretmek için başkaları tarafından oluşturulan kısa dokümantasyon ve programlama sistemlerine güvendim. Her ne kadar bu çalışma yöntemi biraz araştırma, birçok deney gerektirse ve birçok soru oluştursa da oldukça etkiliydi. Bu bölüm CGI ile yaptığım ilk çalışmanın sonucudur (elbette birkaç değişiklikle).

Ortak ağ geçidi arayüzünü tam olarak anlamak ve uzmanlaşmak biraz zaman alsa da protokolün kendisi oldukça basittir. Bazı temel programlama becerilerine sahip olan ve Web'e aşina olan herkes, tıpkı benim ve diğerlerinin birkaç yıl önce yapmayı öğrendiği gibi, oldukça karmaşık CGI uygulamalarını programlamayı hızlı bir şekilde öğrenebilir.

Bu bölümün amacı CGI'nın temellerini özetlenmiş de olsa kapsamlı bir şekilde sunmaktır. Burada tartışılan her kavram sonraki bölümlerde ayrıntılı olarak sunulmaktadır. Ancak bu bölümü tamamladıktan sonra hemen CGI uygulamalarını programlamaya başlayabilirsiniz. Bu seviyeye ulaştığınızda, bu kitabın geri kalanını okuyarak veya kendi başınıza deneyler yaparak CGI'nın inceliklerini öğrenebilirsiniz.

CGI programlamayı iki göreve indirgeyebilirsiniz: Web tarayıcısından bilgi almak ve bilgiyi tarayıcıya geri göndermek. Bu, CGI uygulamalarının normal kullanımına aşina olduğunuzda oldukça sezgisel olarak yapılır. Çoğu zaman kullanıcıdan bir form doldurması, örneğin adını eklemesi istenir. Kullanıcı formu doldurup Enter tuşuna bastığında bu bilgi CGI programına gönderilir. CGI programı daha sonra bu bilgiyi anlayacağı bir şeye dönüştürmeli, uygun şekilde işlemeli ve ister basit bir onay ister çok amaçlı bir veritabanındaki aramanın sonucu olsun, tarayıcıya geri göndermelidir.

Başka bir deyişle, CGI programlamak, İnternet tarayıcısından girdinin nasıl alınacağını ve çıktının nasıl geri gönderileceğini anlamayı gerektirir. Bir CGI programının giriş ve çıkış aşamaları arasında ne olacağı geliştiricinin hedefine bağlıdır. CGI programlamadaki ana zorluğun bu ara aşamada yattığını göreceksiniz; Giriş ve çıkışla nasıl çalışılacağını öğrendikten sonra bu, bir CGI geliştiricisi olmak için aslında yeterlidir.

Bu bölümde, CGI girdisi ve çıktısının ardındaki ilkelerin yanı sıra, HTML formları oluşturma ve CGI programlarınızı adlandırma gibi şeyler de dahil olmak üzere, CGI yazmak ve kullanmak için ihtiyaç duyacağınız diğer temel becerileri öğreneceksiniz. Bu bölüm aşağıdaki konuları kapsamaktadır:

  • Geleneksel program "Merhaba Dünya!";
  • CGI Çıkışı: Bilginin bir İnternet tarayıcısında görüntülenmek üzere geri gönderilmesi;
  • Uygulamayı yapılandırma, yükleme ve çalıştırma. Farklı Web platformları ve sunucuları hakkında bilgi edineceksiniz;
  • CGI Girişi: Web tarayıcısı tarafından gönderilen bilgilerin yorumlanması. Bu tür girdilerin ayrıştırılmasına yönelik bazı yararlı programlama kitaplıklarına giriş;
  • Basit bir örnek: belirli bir bölümdeki tüm dersleri kapsar;
  • Programlama stratejisi.

Bu bölümün doğası gereği bazı konulara sadece hafifçe değineceğim. Merak etme; Bu konuların tümü diğer bölümlerde çok daha derinlemesine ele alınmaktadır.

Selam Dünya!

Geleneksel bir giriş programlama problemiyle başlarsınız. "Merhaba Dünya!" görüntüleyen bir program yazacaksınız. Web tarayıcınızda. Bu programı yazmadan önce Web tarayıcısının CGI programlarından hangi bilgileri almayı beklediğini anlamalısınız. Ayrıca bu programı nasıl çalıştıracağınızı da bilmeniz gerekir, böylece onu çalışırken görebilirsiniz.

CGI dilden bağımsızdır, dolayısıyla bu programı herhangi bir dilde uygulayabilirsiniz. Burada her dilin bağımsızlığını göstermek için birkaç farklı dil kullanılıyor. Perl'de "Merhaba Dünya!" programı Liste 2.1'de gösterilmiştir.

Listeleme 2.1. Selam Dünya! Perl'de. #!/usr/local/bin/perl # Hello.cgi - İlk CGI programım print "Content-Type: text/html\n\n"; Yazdır " \n"; yazdır " Selam Dünya!"; Yazdır "\n"; yazdır " \n"; yazdır "

Selam Dünya!

\n"; yazdır " \N";

Bu programı hello.cgi olarak kaydedin ve uygun konuma yükleyin. (Nerede olduğundan emin değilseniz endişelenmeyin; bunu bu bölümün ilerleyen kısımlarındaki "Bir CGI Programını Kurmak ve Çalıştırmak" bölümünde bulacaksınız.) Çoğu sunucu için ihtiyacınız olan dizin cgi-bin'dir. . Şimdi programı Web tarayıcınızdan arayın. Çoğu kişi için bu, aşağıdaki tek tip kaynak bulucuyu (URL) açmak anlamına gelir:

http://anasistem adı/dizin adı/hello.cgi

Ana bilgisayar adı Web sunucunuzun adıdır ve dizin adı hello.cgi'yi (muhtemelen cgi-bin) koyduğunuz dizindir.

hello.cgi'yi bölme

hello.cgi hakkında dikkat edilmesi gereken birkaç nokta var.

Öncelikle basit yazdırma komutlarını kullanırsınız. CGI programları herhangi bir özel dosya tanımlayıcısına veya çıktı tanımlayıcısına ihtiyaç duymaz. Çıktıyı tarayıcıya göndermek için stdout'a yazdırmanız yeterlidir.

İkinci olarak, ilk print ifadesinin içeriğinin (Content-Type: text/html) Web tarayıcınızda görünmediğine dikkat edin. Tarayıcıya istediğiniz herhangi bir bilgiyi (HTML sayfası, grafik veya ses) gönderebilirsiniz ancak öncelikle tarayıcıya ne tür veriler gönderdiğinizi söylemeniz gerekir. Bu satır, tarayıcıya ne tür bilgilerin (bu durumda bir HTML sayfası) bekleneceğini söyler.

Üçüncüsü programın adı hello.cgi'dir. CGI programınızın adıyla birlikte her zaman .cgi uzantısını kullanmanıza gerek yoktur. Birçok dilin kaynak kodu da .cgi uzantısını kullansa da, dil türünü belirtmek için kullanılmaz, ancak sunucunun dosyayı bir grafik dosyası, HTML dosyası veya yürütülebilir bir dosya olarak tanımlamasının bir yoludur. Metin dosyası. Sunucular genellikle yalnızca bu uzantıya sahip dosyaları yürütmeye çalışacak ve diğer tüm dosyaların içeriğini görüntüleyecek şekilde yapılandırılır. .cgi uzantısının kullanılması zorunlu olmasa da yine de iyi bir uygulama olarak kabul edilmektedir.

Genel olarak hello.cgi iki ana bölümden oluşur:

  • tarayıcıya hangi bilgilerin bekleneceğini söyler (Content-Type: text/html)
  • tarayıcıya ne görüntüleyeceğini söyler (Merhaba Dünya!)

Selam Dünya! C'de

CGI programlarının dil bağımsızlığını göstermek için Liste 2.2, C dilinde yazılmış hello.cgi programının eşdeğerini gösterir.

Listeleme 2.2. Selam Dünya! C dilinde. /* hello.cgi.c - Merhaba, Dünya CGI'sı */ #include int main() ( printf("İçerik Türü: metin/html\r\n\r\n"); printf(" \n"); printf(" Selam Dünya!\n"); printf("\n"); printf(" \n"); printf("

Selam Dünya!

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

Not

hello.cgi'nin Perl sürümünün Content-Type print ": text/html\n\n "; kullandığını unutmayın. C sürümü Printf("Content-Type: text/html\r\n\r\n"); kullanırken

Perl neden operatörün sonunu iki yeni satırla (\n) yazdırırken, C printf iki satırbaşı ve yeni satırla (\r\n) bitiyor?

Teknik olarak, başlıkların (boş satırdan önceki tüm çıktıların) satırbaşları ve yeni satırlarla ayrılması beklenir. Ne yazık ki, DOS ve Windows makinelerinde Perl, \r'yi satır başı yerine başka bir yeni satır olarak çevirir.

Perl'ün istisnası teknik olarak yanlış olmasına rağmen, neredeyse tüm protokollerde çalışacak ve tüm platformlarda eşit derecede taşınabilir. Bu nedenle, bu kitaptaki tüm Perl örneklerinde, satırbaşları ve yeni satırlar yerine yeni satır ayırıcı başlıkları kullanıyorum.

Bu soruna uygun bir çözüm Bölüm 4, Sonuç'ta sunulmaktadır.

Ne Web sunucusu ne de tarayıcı, programı yazmak için hangi dilin kullanıldığını umursamaz. Her dilin bir CGI programlama dili olarak avantaj ve dezavantajları olmasına rağmen, en rahat çalıştığınız dili kullanmak en iyisidir. (Programlama dilinin seçimi Bölüm 1, “Ortak Ağ Geçidi Arayüzü (CGI)”nde daha ayrıntılı olarak tartışılmaktadır).

CGI oluşturma

Artık Web tarayıcısına bilgi gönderme konusuna daha yakından bakabilirsiniz. "Merhaba, Dünya!" örneğinden, Web tarayıcılarının iki veri kümesi beklediğini görebilirsiniz: hangi bilgilerin görüntüleneceği (örn. Content-Type: satırı) gibi bilgileri içeren bir başlık ve gerçek bilgiler (Web tarayıcısının ne yapacağı) görüntüler). Bu iki bilgi parçası boş bir satırla ayrılmıştır.

Başlığa HTTP başlığı denir. Tarayıcının alacağı bilgiler hakkında önemli bilgiler verir. Birkaç farklı HTTP başlığı türü vardır ve en yaygın olanı daha önce kullandığınızdır: Content-Type: başlık. Satırbaşları ve yeni satırlarla (\r\n) ayrılmış, farklı HTTP üstbilgisi bileşimleri kullanabilirsiniz. Başlığı veriden ayıran boş satır aynı zamanda bir satır başı ve bir yeni satırdan oluşur (neden her ikisine de ihtiyaç duyulduğu önceki notta kısaca tartışılmış ve Bölüm 4'te ayrıntılı olarak açıklanmıştır). Bölüm 4'te diğer HTTP başlıklarını öğreneceksiniz; Şu anda Content-Type: başlığıyla uğraşıyorsunuz.

İçerik Türü: Başlık, CGI'nın döndürdüğü veri türünü açıklar. Bu başlık için uygun format şöyledir:

İçerik Türü: alt tür/tür

Burada alt tür/tür, doğru Çok Amaçlı İnternet Posta Uzantıları (MIME) türüdür. En yaygın MIME türü HTML türüdür: text/html. Tablo 2.1'de tartışılacak birkaç yaygın MIME türü listelenmektedir; MIME türlerinin daha kapsamlı bir listesi ve analizi Bölüm 4'te verilmektedir.

Not

MIME, başlangıçta posta mesajı gövdelerinin içeriğini tanımlamak için icat edildi. İçerik Türü bilgilerini temsil etmenin oldukça yaygın bir yolu haline geldi. MIME hakkında daha fazla bilgiyi RFC1521'de bulabilirsiniz. İnternet'teki RFC'ler, İnternet'te standartları belirlemeye çalışan grupların aldığı kararların özetleri olan Yorum İstekleri anlamına gelir. RFC1521 sonuçlarını aşağıdaki adreste görebilirsiniz: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tablo 2.1. Bazı yaygın MIME türleri. MIME Türü Açıklama Metin/html Köprü Metni İşaretleme Dili (HTML) Metin/düz Düz metin dosyaları Resim/gif Grafik dosyaları GIF Resim/jpeg Sıkıştırılmış grafik dosyaları JPEG Ses/temel Ses dosyaları Sun *.au Ses/x-wav Windows dosyaları *.wav

Başlık ve boş bir satırdan sonra verileri ihtiyacınız olan biçimde yazdırmanız yeterlidir. HTML gönderiyorsanız, HTML etiketlerini ve verilerini başlıktan sonra stdout'a yazdırın. Ayrıca grafik, ses ve diğer ikili dosyaları, dosyanın içeriğini stdout'a yazdırarak da gönderebilirsiniz. Bunun çeşitli örnekleri Bölüm 4'te verilmiştir.

CGI Programını Kurmak ve Çalıştırmak

Bu bölüm CGI programlamasından biraz farklıdır ve Web sunucunuzun CGI kullanacak şekilde yapılandırılması, programların kurulması ve çalıştırılması hakkında konuşur. Farklı platformlar için farklı sunucularla az çok ayrıntılı olarak tanışacaksınız, ancak en iyi seçeneği bulmak için sunucunuzun belgelerini daha derinlemesine incelemeniz gerekecek.

Tüm sunucular, sunucu dosyaları için alana ve HTML belgeleri için alana ihtiyaç duyar. Bu kitapta sunucu alanına SunucuKökü, belge alanına ise BelgeKökü adı verilmektedir. UNIX makinelerde, ServerRoot genellikle /usr/local/etc/httpd/ konumundadır ve DocumentRoot genellikle /usr/local/etc/httpd/htdocs/ konumundadır. Ancak bu, sisteminizde herhangi bir değişiklik yaratmayacağından, ServerRoot ve DocumentRoot'a yapılan tüm referansları kendi ServerRoot ve DocumentRoot'unuzla değiştirin.

Web tarayıcınızı kullanarak dosyalara eriştiğinizde, dosyayı DocumentRoot'a göre URL'de belirtirsiniz. Örneğin, sunucu adresiniz mymachine.org ise bu dosyaya şu URL ile erişirsiniz: http://mymachine.org/index.html

Sunucuyu CGI için yapılandırma

Çoğu Web sunucusu, CGI programlarının kullanımına izin verecek şekilde önceden yapılandırılmıştır. Genellikle iki parametre sunucuya dosyanın bir CGI uygulaması olup olmadığını gösterir:

  • Belirlenen dizin. Bazı sunucular, belirlenmiş bir dizindeki (genellikle varsayılan olarak cgi-bin olarak adlandırılır) tüm dosyaların CGI olduğunu belirlemenize olanak tanır.
  • Dosya adı uzantıları. Birçok sunucu, .cgi ile biten tüm dosyaların CGI olarak tanımlanmasına olanak tanıyan bu ön yapılandırmaya sahiptir.

Belirlenen dizin yöntemi geçmişten kalma bir şeydir (ilk sunucular bunu hangi dosyaların CGI programı olduğunu belirlemek için tek yöntem olarak kullanmıştır), ancak birçok avantajı vardır.

  • CGI programlarını merkezi tutarak diğer dizinlerin dağılmasını önler.
  • Belirli bir dosya adı uzantısıyla sınırlı değilsiniz, dolayısıyla dosyalarınızı istediğiniz şekilde adlandırabilirsiniz. Bazı sunucular birkaç farklı dizini CGI dizinleri olarak atamanıza izin verir.
  • Ayrıca size kimin CGI kaydedebileceği konusunda daha fazla kontrol sağlar. Örneğin, bir sunucunuz varsa ve birden fazla kullanıcılı bir sistemi destekliyorsanız ve güvenlik nedeniyle önce programı incelemeden kendi CGI komut dosyalarını kullanmalarını istemiyorsanız, yalnızca sınırlı, merkezi bir dizindeki bu dosyaları CGI olarak atayabilirsiniz. . Kullanıcıların daha sonra size yüklemeniz için CGI programları sağlaması gerekecektir ve siz de öncelikle programın önemli bir güvenlik sorunu olmadığından emin olmak için kodu denetleyebilirsiniz.

Dosya adı uzantısı aracılığıyla CGI gösterimi, esnekliği nedeniyle faydalı olabilir. CGI programları için tek bir dizinle sınırlı değilsiniz. Çoğu sunucu, dosya adı uzantısı aracılığıyla CGI'yı tanıyacak şekilde yapılandırılabilir, ancak tümü varsayılan olarak bu şekilde yapılandırılmamıştır.

Uyarı

Sunucunuzu CGI için yapılandırırken güvenlik konularının önemini unutmayın. Burada bazı ipuçları ele alınacaktır ve Bölüm 9, CGI'nın Korunması bu hususları daha ayrıntılı olarak ele almaktadır.

UNIX sunucularına CGI kurulumu

UNIX sunucunuzun nasıl yapılandırıldığına bakılmaksızın, CGI uygulamalarınızın beklendiği gibi çalışmasını sağlamak için uygulamanız gereken birkaç adım vardır. Web sunucunuz genellikle var olmayan bir kullanıcı (yani UNIX kullanıcısı hiç kimse - dosya izinleri olmayan ve oturum açamayan bir hesap) olarak çalışacaktır. CGI betikleri (Perl, Bourne kabuğu veya başka bir betik dili ile yazılmış) dünya çapında çalıştırılabilir ve okunabilir olmalıdır.

İpucu

Dosyalarınızı herkes tarafından okunabilir ve yürütülebilir hale getirmek için aşağıdaki UNIX izinleri komutunu kullanın: chmod 755 dosyaadı.

Perl veya Tcl gibi bir kodlama dili kullanıyorsanız, yorumlayıcınızın tam yolunu komut dosyanızın ilk satırında belirtin. Örneğin, /usr/local/bin dizininde Perl kullanan bir Perl betiği aşağıdaki satırla başlayacaktır:

#!/usr/local/bin/perl

Uyarı

Yorumlayıcıyı (perl veya Tcl Wish ikili dosyası) asla /cgi-bin dizinine yerleştirmeyin. Bu, sisteminizde bir güvenlik riski oluşturur. Bu, Bölüm 9'da daha ayrıntılı olarak tartışılacaktır.

Bazı genel UNIX sunucuları

NCSA ve Apache sunucuları benzer yapılandırma dosyalarına sahiptir çünkü Apache sunucusu orijinal olarak NCSA kodunu temel almaktadır. Varsayılan olarak, cgi-bin dizinindeki (varsayılan olarak ServerRoot'ta bulunur) herhangi bir dosya bir CGI programı olacak şekilde yapılandırılmışlardır. Cgi-bin dizininin konumunu değiştirmek için conf/srm.conf yapılandırma dosyasını düzenleyebilirsiniz. Bu dizini yapılandırmanın formatı

ScriptAlias ​​​​fakedirectoryname realdirectoryname

burada fakedirectoryname sahte dizin adıdır (/cgi-bin) ve realdirectoryname CGI programlarının gerçekte depolandığı tam yoldur. Daha fazla ScriptAlias ​​satırı ekleyerek birden fazla ScriptAlias ​​yapılandırabilirsiniz.

Varsayılan yapılandırma çoğu kullanıcının ihtiyaçları için yeterlidir. Her iki durumda da doğru gerçek dizin adını belirlemek için srm.conf dosyasındaki satırı düzenlemeniz gerekir. Örneğin, CGI programlarınız /usr/local/etc/httpd/cgi-bin konumunda bulunuyorsa, srm.conf dosyanızdaki ScriptAlias ​​satırı şöyle olmalıdır:

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

Bu dizinde bulunan CGI programlarına erişmek veya bu programlara bağlanmak için aşağıdaki URL'yi kullanın:

Http://ana bilgisayar adı/cgi-bin/program adı

Ana bilgisayar adı, Web sunucunuzun ana bilgisayarının adıdır ve program adı, CGI'nizin adıdır.

Örneğin hello.cgi programını www.company.com adlı Web sunucunuzdaki cgi-bin dizininize (örneğin /usr/local/etc/httpd/cgi-bin) kopyaladığınızı varsayalım. CGI'nıza erişmek için aşağıdaki URL'yi kullanın: http://www.company.com/cgi-bin/hello.cgi

NCSA veya Apache sunucunuzu, .cgi uzantılı herhangi bir dosyayı CGI olarak tanıyacak şekilde yapılandırmak istiyorsanız, iki yapılandırma dosyasını düzenlemeniz gerekir. Öncelikle srm.conf dosyasında aşağıdaki satırın açıklamasını kaldırın:

AddType uygulaması/x-httpd-cgi .cgi

Bu, MIME tipi CGI'yı .cgi uzantısıyla ilişkilendirecektir. Şimdi CGI’yı herhangi bir dizinde çalıştırabilmemiz için erişim.conf dosyasını değiştirmemiz gerekiyor. Bunu yapmak için ExecCGI seçeneğini Option satırına ekleyin. Aşağıdaki satıra benzer bir şeye benzeyecek:

Seçenek Dizinleri FollowSymLinks ExecCGI

Artık .cgi uzantılı her dosya CGI olarak kabul ediliyor; sunucunuzdaki herhangi bir dosyaya eriştiğiniz gibi erişin.

CERN sunucusu Apache ve NCSA sunucularıyla aynı şekilde yapılandırılmıştır. CERN sunucusu ScriptAlias ​​yerine Exec komutunu kullanır. Örneğin httpd.conf dosyasında aşağıdaki satırı göreceksiniz:

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

Diğer UNIX sunucuları da aynı şekilde yapılandırılabilir; Bu, sunucu belgelerinde daha ayrıntılı olarak açıklanmaktadır.

Windows'a CGI Kurulumu

Windows 3.1, Windows 95 ve Windows NT için kullanılabilen çoğu sunucu, CGI tanıma için "dosya adı uzantısı" yöntemi kullanılarak yapılandırılmıştır. Genel olarak, Windows tabanlı bir sunucunun yapılandırmasını değiştirmek, yalnızca sunucu yapılandırma programının çalıştırılmasını ve uygun değişikliklerin yapılmasını gerektirir.

Bazen bir sunucuyu bir betiği (Perl gibi) doğru şekilde çalıştıracak şekilde yapılandırmak zor olabilir. DOS veya Windows'ta, UNIX'te olduğu gibi yorumlayıcıyı betiğin ilk satırında belirtemezsiniz. Bazı sunucular, belirli dosya adı uzantılarını yorumlayıcıyla ilişkilendirmek için önceden tanımlanmış bir yapılandırmaya sahiptir. Örneğin, birçok Windows Web sunucusu, .pl ile biten dosyaların Perl komut dosyaları olduğunu varsayar.

Sunucu bu tür bir dosya ilişkilendirmesini gerçekleştirmezse, hem yorumlayıcıyı hem de betiği çağıran bir paketleyici toplu iş dosyası tanımlayabilirsiniz. UNIX sunucusunda olduğu gibi, yorumlayıcıyı cgi-bin dizinine veya Web'den erişilebilen herhangi bir dizine kurmayın.

Macintosh'a CGI Kurulumu

Macintosh için en iyi bilinen iki sunucu seçeneği WebStar StarNine ve onun öncülü MacHTTP'dir. Her ikisi de CGI'yı dosya adı uzantısından tanır.

MacHTTP iki farklı uzantıyı anlar: .cgi ve .acgi, eşzamansız CGI anlamına gelir. Macintosh'a (.cgi uzantılı) yüklenen normal CGI programları, CGI'nın çalışması bitene kadar Web sunucusunu meşgul durumda tutacak ve sunucunun tüm diğer istekleri askıya almasına neden olacaktır. Asenkron CGI ise sunucunun çalışırken bile istekleri kabul etmesine olanak tanır.

Bu Web sunucularından herhangi birini kullanan bir CGI Macintosh geliştiricisi, mümkünse, .cgi uzantısı yerine yalnızca .acgi uzantısını kullanmalıdır. Çoğu CGI programıyla çalışmalıdır; işe yaramazsa programın adını .cgi olarak yeniden adlandırın.

CGI'yı yürütme

CGI'yı yükledikten sonra onu çalıştırmanın birkaç yolu vardır. Eğer CGI programınız Hello,World! programı gibi yalnızca çıktı içeren bir programsa, o zaman onu yalnızca URL'sine erişerek çalıştırabilirsiniz.

Çoğu program bir HTML formunda sunucu uygulaması olarak çalışır. Bu formlardan nasıl bilgi alınacağını öğrenmeden önce öncelikle bu tür formların oluşturulmasıyla ilgili kısa bir giriş okuyun.

HTML formları hakkında hızlı bir eğitim

Bir HTML formundaki en önemli iki etiket şunlardır:

Ve . Çoğu HTML formunu yalnızca bu iki etiketi kullanarak oluşturabilirsiniz. Bu bölümde bu etiketleri ve olası tür ve niteliklerin küçük bir alt kümesini inceleyeceksiniz. . HTML formlarına ilişkin eksiksiz bir kılavuz ve bağlantı Bölüm 3, HTML ve Formlar'da bulunmaktadır.

Etiket

Etiket Kullanıcı tarafından girilen bilgiler için HTML dosyasının hangi bölümünün kullanılması gerektiğini belirlemek için kullanılır. Bu, çoğu HTML sayfasının bir CGI programını nasıl çağırdığını ifade eder. Etiket nitelikleri programın adını ve konumunu (yerel olarak veya tam URL olarak), kullanılan kodlama türünü ve program tarafından kullanılan veri taşıma yöntemini belirtir.

Sonraki satır etiketin özelliklerini gösterir :

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

ENCTYPE özelliği özel bir rol oynamaz ve genellikle etikete dahil edilmez. . ENCTYPE etiketiyle ilgili ayrıntılı bilgi Bölüm 3'te verilmiştir. ENCTYPE'ı kullanmanın bir yolu Bölüm 14, "Markalı Uzantılar"da gösterilmiştir.

ACTION özelliği CGI programının URL'sini ifade eder. Kullanıcı formu doldurup bilgi verdikten sonra tüm bilgiler kodlanarak CGI programına aktarılır. CGI programının kendisi bilginin kodunu çözme ve işleme sorununu çözer; Bu husus, bu bölümün ilerleyen kısımlarında yer alan "Tarayıcıdan Giriş Kabul Etme" başlığı altında ele alınmaktadır.

Son olarak METHOD özelliği CGI programının girdiyi nasıl alması gerektiğini açıklar. GET ve POST olmak üzere iki yöntem, bilgiyi CGI programına aktarma şekli açısından farklılık gösterir. Her ikisi de "Tarayıcıdan Giriş Kabul Etme" bölümünde tartışılmaktadır.

Tarayıcının kullanıcı girişine izin vermesi için tüm form etiketlerinin ve bilgilerin etiketiyle çevrelenmesi gerekir. . Kapanış etiketini unutmayın

Formun sonunu belirtmek için. Form içinde form oluşturamazsınız, ancak bilgi parçalarını farklı yerlerde sunmanıza olanak tanıyan bir form oluşturabilirsiniz; bu husus 3. Bölümde kapsamlı bir şekilde tartışılmaktadır.

Etiket

Etiketini kullanarak metin giriş çubukları, radyo düğmeleri, onay kutuları ve girişi kabul etmenin diğer yollarını oluşturabilirsiniz. . Bu bölüm yalnızca metin giriş alanlarını kapsar. Bu alanı uygulamak için etiketini kullanın aşağıdaki niteliklere sahip:

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

NAME, kullanıcının girdiği değeri içeren değişkenin sembolik adıdır. VALUE özelliğine metin eklerseniz bu metin, metin giriş alanına varsayılan olarak yerleştirilecektir. SIZE özelliği, giriş alanının tarayıcı penceresinde görüneceği şekilde yatay uzunluğunu belirtmenize olanak tanır. Son olarak MAXLENGTH, kullanıcının alana girebileceği maksimum karakter sayısını belirtir. VALUE, SIZE, MAXLENGTH özelliklerinin isteğe bağlı olduğunu lütfen unutmayın.

Form gönderme

Bir formda yalnızca bir metin alanınız varsa, kullanıcı yalnızca klavyede bilgileri yazıp Enter tuşuna basarak formu gönderebilir. Aksi halde kullanıcının bilgiyi sunabileceği başka bir yol bulunmalıdır. Kullanıcı, aşağıdaki etikete sahip bir gönder düğmesini kullanarak bilgileri gönderir:

< Input type=submit >

Bu etiket formunuzun içinde bir Gönder düğmesi oluşturur. Kullanıcı formu doldurmayı bitirdiğinde, Gönder düğmesini tıklayarak formun içeriğini formun ACTION özelliği tarafından belirtilen URL'ye gönderebilir.

Tarayıcıdan girişi kabul etme

Yukarıda, sunucudan tarayıcıya bilgi gönderen bir CGI programının kaydedilmesine ilişkin örnekler verilmiştir. Gerçekte, yalnızca veri çıkışı sağlayan bir CGI programının pek fazla uygulaması yoktur (Bölüm 4'te bazı örnekler verilmiştir). CGI'nın daha önemli yeteneği, Web'e etkileşimli karakterini veren özellik olan tarayıcıdan bilgi alabilmesidir.

CGI programı tarayıcıdan iki tür bilgi alır.

  • İlk olarak, tarayıcı (türü, neyi görüntüleyebildiği, ana bilgisayar vb.), sunucu (adı ve sürümü, yürütme portu vb.) ve CGI programı hakkında çeşitli bilgiler elde eder. kendisi (programın adı ve bulunduğu yer). Sunucu tüm bu bilgileri ortam değişkenleri aracılığıyla CGI programına verir.
  • İkincisi, CGI programı kullanıcı girdisini alabilir. Bu bilgiler tarayıcı tarafından kodlandıktan sonra ya bir ortam değişkeni (GET yöntemi) veya standart giriş (stdin - POST yöntemi) aracılığıyla gönderilir.

Ortam Değişkenleri

Hem eğitim sırasında hem de hata ayıklama sırasında bir CGI programında hangi ortam değişkenlerinin mevcut olduğunu bilmek faydalıdır. Tablo 2.2 mevcut CGI ortam değişkenlerinden bazılarını listelemektedir. Ayrıca ortam değişkenlerini ve değerlerini bir Web tarayıcısına çıkaran bir CGI programı da yazabilirsiniz.

Tablo 2.2. Bazı Önemli CGI Ortam Değişkenleri Ortam Değişkeni Amaçlı REMOTE_ADDR İstemci makinenin IP adresi. REMOTE_HOST İstemci makinenin ana bilgisayarı. HTTP _ACCEPT Tarayıcının yorumlayabileceği MIME veri türlerini listeler. HTTP _USER_AGENT Tarayıcı bilgileri (tarayıcı türü, sürüm numarası, işletim sistemi vb.). REQUEST_METHOD GET veya POST. CONTENT_LENGTH POST yoluyla gönderildiğinde girişin boyutu. Eğer giriş yoksa veya GET metodu kullanılıyorsa bu parametre tanımsızdır. QUERY_STRING GET yöntemi kullanılarak iletildiğinde giriş bilgilerini içerir. PATH_INFO Kullanıcının CGI komut satırından bir yol belirtmesine izin verir (örneğin, http://anasistem adı/cgi-bin/programadı/yol). PATH_TRANSLATED PATH_INFO'daki göreceli yolu sistemdeki gerçek yola çevirir.

Ortam değişkenlerini görüntüleyen bir CGI uygulaması yazmak için iki şeyin nasıl yapılacağını bilmeniz gerekir:

  • Tüm ortam değişkenlerini ve bunlara karşılık gelen değerleri tanımlayın.
  • Sonuçları tarayıcıya yazdırın.

Son işlemin nasıl gerçekleştirileceğini zaten biliyorsunuz. Perl'de ortam değişkenleri, ortam değişkeninin adıyla tanıtılan %ENV ilişkisel dizisinde saklanır. Liste 2.3, amacımızı gerçekleştiren bir Perl programı olan env.cgi'yi içermektedir.

Listeleme 2.3. Tüm CGI ortam değişkenlerini yazdıran env.cgi adlı bir Perl programı.

#!/usr/local/bin/perl print "İçerik türü: metin/html\n\n"; Yazdır " \n"; yazdır " CGI Ortamı\n"; yazdır "\n"; yazdır " \n"; yazdır "

CGI Ortamı

\n"; foreach $env_var (anahtarlar %ENV) ( print " $env_var= $ENV($env_var)
\n"; ) yazdır " \N";

Benzer bir program C dilinde de yazılabilir; kodun tamamı Liste 2.4'tedir.

Listeleme 2.4. C dilinde Env.cgi.c. /* env.cgi.c */ #include dış karakter **çevre; int main() ( char **p = çevre; printf("İçerik Türü: metin/html\r\n\r\n"); printf(" \n"); printf(" CGI Ortamı\n"); printf("\n"); printf(" \n"); printf("

CGI Ortamı

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

AL veya POST?

GET ve POST yöntemleri arasındaki fark nedir? GET, kodlanmış giriş dizesini QUERY_STRING ortam değişkeni aracılığıyla geçirirken, POST bunu stdin aracılığıyla geçirir. POST, özellikle çok fazla veri içeren formlar için tercih edilen yöntemdir çünkü gönderilen bilgi miktarında herhangi bir kısıtlama yoktur, GET yönteminde ise medya alanı miktarı sınırlıdır. Ancak GET'in belirli bir yararlı özelliği vardır; bu, Bölüm 5, Giriş'te ayrıntılı olarak ele alınmaktadır.

Hangi yöntemin kullanıldığını belirlemek için CGI programı, GET veya POST olarak ayarlanacak olan REQUEST_METHOD ortam değişkenini kontrol eder. POST olarak ayarlanırsa kodlanmış bilginin uzunluğu CONTENT_LENGTH ortam değişkeninde depolanır.

Kodlu Giriş

Bir kullanıcı bir form gönderdiğinde, tarayıcı önce bilgiyi sunucuya ve ardından CGI uygulamasına göndermeden önce kodlar. Etiket kullandığınızda , her alana sembolik bir ad verilir. Kullanıcının girdiği değer değişkenin değeri olarak temsil edilir.

Bunu belirlemek için tarayıcı, aşağıdaki gibi tanımlanabilecek bir URL kodlama spesifikasyonu kullanır:

  • Farklı alanları ve işaretiyle (&) ayırır.
  • Adı ve değerleri eşittir işaretleri (=) ile, ad solda, değer sağda olacak şekilde ayırır.
  • Boşlukları artı işaretleriyle (+) değiştirir.
  • Tüm "anormal" karakterleri, yüzde işaretiyle (%) ve ardından karakter için iki basamaklı onaltılık kodla değiştirir.

Son kodlanmış dizeniz aşağıdakine benzer olacaktır:

Ad1=değer1&ad2=değer2&ad3=değer3 ...

Not: URL kodlamaya ilişkin özellikler RFC1738'de bulunur.

Örneğin isim ve yaş soran bir formunuz olduğunu varsayalım. Bu formu görüntülemek için kullanılan HTML kodu Liste 2.5'te gösterilmektedir.

Listeleme 2.5. Adı ve yaş formunu görüntülemek için HTML kodu.

İsim ve Yaş

Adınızı giriniz:

Yaşınızı girin:

Kullanıcının isim alanına Joe Schmoe, yaş alanına ise 20 girdiğini varsayalım. Giriş, giriş dizesinde kodlanacaktır.

İsim=Joe+Schmoe&yaşı=20

Giriş ayrıştırılıyor

Bu bilginin yararlı olması için, bilgiyi CGI programlarınız tarafından kullanılabilecek bir şey üzerinde kullanmanız gerekir. Girdiyi ayrıştırma stratejileri 5. Bölüm'de ele alınmıştır. Uygulamada, girdiyi nasıl ayrıştıracağınızı asla düşünmenize gerek kalmayacak çünkü birçok uzman zaten ayrıştırmayı yapan herkesin erişebileceği kütüphaneler yazmıştır. Bu bölümde bu türden iki kütüphane aşağıdaki bölümlerde sunulmaktadır: Perl için cgi -lib.pl (Steve Brenner tarafından yazılmıştır) ve C için cgihtml (benim tarafımdan yazılmıştır).

Çeşitli dillerde yazılmış çoğu kütüphanenin genel amacı, kodlanmış bir dizeyi ayrıştırıp ad ve değer çiftlerini bir veri yapısına yerleştirmektir. Perl gibi yerleşik veri yapılarına sahip bir dil kullanmanın bariz bir avantajı vardır; ancak C ve C++ gibi düşük seviyeli dillere yönelik kitaplıkların çoğu, veri yapısını ve alt yordam yürütmeyi içerir.

Kütüphaneleri tam olarak anlamak gerekli değildir; CGI programcısının işini kolaylaştırmak için bunları araç olarak nasıl kullanacağını öğrenmek daha önemlidir.

Cgi-lib.pl

Cgi-lib.pl Perl ilişkisel dizilerini kullanır. &ReadParse işlevi giriş dizesini ayrıştırır ve her ad/değer çiftini ada göre girer. Örneğin, az önce sunulan "isim/yaş" girdi dizisinin kodunu çözmek için gereken karşılık gelen Perl dizeleri şöyle olacaktır:

&ReadParse(*input);

Şimdi, "name" için girilen değeri görmek için $input("name") ilişkisel dizisine erişebilirsiniz. Benzer şekilde, "yaş" değerine erişmek için $input ("yaş") değişkenine bakmanız gerekir.

Cgihtml

C'de herhangi bir yerleşik veri yapısı yoktur, dolayısıyla cgihtml, CGI ayrıştırma rutinleriyle birlikte kullanılmak üzere kendi bağlantı listesini uygular. Bu, giriş türü yapısını şu şekilde tanımlar:

Typedef struct ( Char *name; Char *value; ) Giriş türü;

Cgihtml kullanarak C'deki "isim/yaş" girdi dizesini ayrıştırmak için aşağıdakiler kullanılır:

/* input adında bağlantılı bir liste tanımlayalım */ Llist input; /* bağlantılı listedeki girişi ve konumu ayrıştırın */ read_cgi_input(&input);

Yaş bilgisine erişmek için listeyi manuel olarak ayrıştırabilir veya mevcut cgi _val() işlevini kullanabilirsiniz.

#katmak #katmak Char *yaş = malloc(sizeof(char)*strlen(cgi_val(input, "age")) + 1); Strcpy(yaş, cgi_val(giriş, "yaş"));

"Yaş" değeri artık yaş dizesinde saklanıyor.

Not: Basit bir dizi kullanmak yerine (karakter yaşı; gibi); dize yaşı için dinamik olarak bellek alanı ayırıyorum. Bu, programlamayı zorlaştırsa da güvenlik açısından yine de önemlidir. Bu konu Bölüm 9'da daha ayrıntılı olarak tartışılmaktadır.

Basit bir CGI programı

İsim/yaş formunu işleyen nameage.cgi adında bir CGI programı yazacaksınız. Veri işleme (genellikle "aradaki şeyler" dediğim şey) minimum düzeydedir. Nameage.cgi basitçe girdinin kodunu çözer ve kullanıcının adını ve yaşını görüntüler. Böyle bir aracın pek bir faydası olmasa da, CGI programlamanın en kritik yönünü gösterir: girdi ve çıktı.

Yukarıdakiyle aynı formu kullanarak "isim ve yaş" alanlarını çağırırsınız. Henüz sağlamlık ve verimlilik konusunda endişelenmeyin; Mevcut sorunu en basit şekilde çözün. Perl ve C çözümleri sırasıyla Liste 2.6 ve 2.7'de gösterilmektedir.

Listeleme 2.6. Perl'de Nameage.cgi

#!/usr/local/bin/perl # nameage.cgi require "cgi-lib.pl" &ReadParse(*input); print "İçerik Türü: text/html\r\n\r\n"; Yazdır " \n"; yazdır " İsim ve Yaş\n"; yazdır "\n"; yazdır " \n"; print "Merhaba, " . $input("isim") . ". Siz\n"; print $input("age") . " yaşındasınız.

\n"; yazdır " \N";

Listeleme 2.7. C'de nameage.cgi

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( llist input; read_cgi_input(&input); printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" İsim ve Yaş\n"); printf("\n"); printf(" \n"); printf("Merhaba, %s. Sen\n",cgi_val(input,"name")); printf("%s yaşındasın.

\n",cgi_val(giriş,"yaş")); printf(" \N"); )

Lütfen bu iki programın neredeyse eşdeğer olduğunu unutmayın. Her ikisi de yalnızca bir satırı kaplayan ve girdinin tamamını işleyen ayrıştırma rutinleri içerir (ilgili kütüphane rutinleri sayesinde). Çıktı aslında ana Merhaba Dünya! programınızın değiştirilmiş bir versiyonudur.

Formu doldurup Gönder butonuna tıklayarak programı çalıştırmayı deneyin.

Genel programlama stratejisi

Artık CGI programlama için gereken tüm temel prensipleri biliyorsunuz. CGI'nın bilgiyi nasıl aldığını ve onu tarayıcıya nasıl geri gönderdiğini anladığınızda, nihai ürününüzün gerçek kalitesi genel programlama becerilerinize bağlıdır. Yani, CGI'yı (veya herhangi bir şeyi) programlarken aşağıdaki nitelikleri aklınızda bulundurun:

  • Basitlik
  • Yeterlik
  • Çok yönlülük

İlk iki özellik oldukça yaygındır: kodunuzu mümkün olduğunca okunabilir ve verimli hale getirmeye çalışın. Çok yönlülük, diğer uygulamalara göre CGI programlarına daha fazla uygulanır. Kendi CGI programlarınızı geliştirmeye başladığınızda herkesin yapmak istediği birkaç temel uygulamanın olduğunu öğreneceksiniz. Örneğin, bir CGI programının en yaygın ve belirgin görevlerinden biri, bir formu işlemek ve sonuçları belirli bir alıcıya e-postayla göndermektir. Her biri farklı bir alıcıya sahip birden fazla ayrı form işlenmiş olabilir. Her bir form için ayrı ayrı CGI programı yazmak yerine, tüm formlar için geçerli olan daha genel bir CGI programı yazarak zamandan tasarruf edebilirsiniz.

CGI'nın tüm temel yönlerini ele alarak size CGI programlamaya başlamanız için yeterli bilgi sağladım. Ancak etkili bir CGI geliştiricisi olmak için CGI'nın sunucu ve tarayıcıyla nasıl iletişim kurduğunu daha iyi anlamanız gerekir. Bu kitabın geri kalanında bu bölümde kısaca bahsedilen konuların yanı sıra uygulama geliştirme stratejisi ve protokolün avantajları ve sınırlamaları ayrıntılı olarak ele alınmaktadır.

Özet

Bu bölümde CGI programlamanın temelleri kısaca tanıtılmıştır. Verilerinizi doğru biçimlendirip stdout'a yazdırarak çıktı oluşturursunuz. CGI girişinin alınması biraz daha karmaşıktır çünkü kullanılmadan önce ayrıştırılması gerekir. Neyse ki, ayrıştırmayı gerçekleştiren birçok kütüphane zaten mevcut.

Şu ana kadar CGI uygulamalarını programlama konusunda oldukça rahat olmalısınız. Bu kitabın geri kalanında daha gelişmiş ve karmaşık uygulamalara yönelik özellikler, ipuçları ve programlama stratejileri hakkında daha ayrıntılı bilgi verilmektedir.

Sitede yeni

>

En popüler