सीजीआई कमांड. साफ़ ई-कॉमर्स. विंडोज़ पर सीजीआई स्थापित करना

वर्ल्ड वाइड वेब के लिए धन्यवाद, लगभग कोई भी इंटरनेट पर जानकारी ऐसे रूप में प्रदान कर सकता है जो आंखों को भाता हो और व्यापक प्रसार के लिए उपयुक्त हो। इसमें कोई संदेह नहीं है कि आपने इंटरनेट सर्फ किया होगा और अन्य साइटें देखी होंगी, और अब तक आप शायद जानते होंगे कि "HTTP" और "HTML" जैसे डरावने संक्षिप्त रूप "वेब" और "इंटरनेट पर जानकारी व्यक्त करने का एक तरीका" के संक्षिप्त रूप हैं। शायद आपके पास पहले से ही इंटरनेट पर जानकारी प्रस्तुत करने का कुछ अनुभव हो।

इंटरनेट सूचना के वितरण के लिए एक आदर्श माध्यम साबित हुआ है, जैसा कि इसकी अपार लोकप्रियता और बड़े पैमाने पर विकास से पता चलता है। हालाँकि कुछ लोगों ने इंटरनेट की उपयोगिता पर सवाल उठाया है और इसके व्यापक विकास और लोकप्रियता को मुख्य रूप से घुसपैठ वाले विज्ञापन के लिए जिम्मेदार ठहराया है, इंटरनेट निर्विवाद रूप से एक महत्वपूर्ण उपकरणसभी प्रकार की जानकारी की प्रस्तुति. न केवल इलेक्ट्रॉनिक रूप में नवीनतम जानकारी (समाचार, मौसम, वास्तविक समय के खेल आयोजन) और संदर्भ सामग्री प्रदान करने के लिए कई सेवाएँ हैं, बल्कि विभिन्न प्रकार के डेटा की भी महत्वपूर्ण मात्रा मौजूद है। आईआरएस, जिसने अपने सभी 1995 कर फॉर्म और अन्य जानकारी वर्ल्ड वाइड वेब के माध्यम से वितरित की, ने हाल ही में अपनी वेब साइट से प्रशंसक मेल प्राप्त करने की बात स्वीकार की। किसने सोचा होगा कि आईआरएस को कभी प्रशंसक मेल प्राप्त होगा? ऐसा इसलिए नहीं था क्योंकि उनकी साइट अच्छी तरह से डिज़ाइन की गई थी, बल्कि इसलिए कि यह हजारों, शायद लाखों लोगों के लिए वास्तव में उपयोगी उपकरण साबित हुई।

क्या चीज़ वेब को अद्वितीय और इतनी आकर्षक सूचना सेवा बनाती है? सबसे पहले, क्योंकि यह डेटा के लिए हाइपरमीडिया इंटरफ़ेस प्रदान करता है। अपने कंप्यूटर की हार्ड ड्राइव पर विचार करें. आमतौर पर, डेटा को फ़ाइल सिस्टम के समान, रैखिक तरीके से व्यक्त किया जाता है। उदाहरण के लिए, आपके पास कई फ़ोल्डर हैं, और प्रत्येक फ़ोल्डर के अंदर या तो दस्तावेज़ या अन्य फ़ोल्डर हैं। जानकारी को व्यक्त करने के लिए वेब एक अलग प्रतिमान का उपयोग करता है जिसे हाइपरमीडिया कहा जाता है। हाइपरटेक्स्ट इंटरफ़ेस में एक दस्तावेज़ और लिंक होते हैं। लिंक वे शब्द हैं जिन पर अन्य दस्तावेज़ देखने या अन्य प्रकार की जानकारी खोजने के लिए क्लिक किया जाता है। वेब अन्य प्रकार के मीडिया जैसे ग्राफिक्स, ध्वनि, वीडियो (इसलिए नाम "हाइपरमीडिया") को शामिल करने के लिए हाइपरटेक्स्ट की अवधारणा का विस्तार करता है। किसी दस्तावेज़ पर टेक्स्ट या ग्राफ़िक्स को हाइलाइट करने से आप किसी भी संख्या में चयनित तत्व के बारे में संबंधित जानकारी देख सकते हैं।

जानकारी प्रस्तुत करने और वितरित करने के इस सरल और अनूठे तरीके से लगभग हर कोई लाभान्वित हो सकता है, शिक्षाविदों से लेकर जो तुरंत अपने सहकर्मियों के साथ डेटा साझा करना चाहते हैं व्यापारी लोगजो अपनी कंपनी के बारे में सभी को जानकारी देते हैं। हालाँकि, जानकारी देना अत्यंत महत्वपूर्ण है, लेकिन पिछले कुछ वर्षों में कई लोगों ने महसूस किया है कि जानकारी प्राप्त करना भी उतना ही महत्वपूर्ण है।

जबकि वेब जानकारी के लिए एक अद्वितीय हाइपरमीडिया इंटरफ़ेस प्रदान करता है, वहीं कई अन्य भी हैं। प्रभावी तरीकेडेटा वितरण. उदाहरण के लिए, फाइल ट्रांसफर प्रोटोकॉल (एफटीपी) और "गोफर" समाचार समूह जैसी नेटवर्क सेवाएं वर्ल्ड वाइड वेब के आगमन से बहुत पहले से मौजूद थीं। इन नेटवर्कों की शुरुआत से ही ईमेल इंटरनेट और अधिकांश अन्य नेटवर्कों पर संचार और सूचना के आदान-प्रदान का प्राथमिक माध्यम रहा है। इंटरनेट सूचना वितरित करने का इतना लोकप्रिय तरीका क्यों बन गया है? इंटरनेट के मल्टीमीडिया पहलू ने इसकी अभूतपूर्व सफलता में महत्वपूर्ण योगदान दिया है, लेकिन इंटरनेट को सबसे प्रभावी बनाने के लिए, इसे इंटरैक्टिव होना चाहिए।

उपयोगकर्ताओं से इनपुट प्राप्त करने और जानकारी प्रदान करने की क्षमता के बिना, वेब पूरी तरह से स्थिर वातावरण होगा। जानकारी केवल लेखक द्वारा निर्दिष्ट प्रारूप में उपलब्ध होगी। यह सामान्य रूप से कंप्यूटिंग संभावनाओं में से एक को कमजोर कर देगा: इंटरैक्टिव जानकारी। उदाहरण के लिए, उपयोगकर्ता को कई दस्तावेज़ों को ब्राउज़ करने के लिए मजबूर करने के बजाय जैसे कि वह कोई किताब या शब्दकोश ब्राउज़ कर रहा हो, बेहतर होगा कि उपयोगकर्ता को उन कीवर्ड की पहचान करने की अनुमति दी जाए जो उनकी रुचि के हैं। उपयोगकर्ता सामग्री प्रदाता द्वारा परिभाषित कठोर संरचना पर भरोसा करने के बजाय डेटा प्रस्तुत करने के तरीके को अनुकूलित कर सकते हैं।

शब्द "वेब सर्वर" भ्रामक हो सकता है क्योंकि यह भौतिक मशीन और सॉफ़्टवेयर दोनों को संदर्भित कर सकता है जिसका उपयोग यह इंटरनेट ब्राउज़र के साथ इंटरैक्ट करने के लिए करता है। जब कोई ब्राउज़र किसी दिए गए वेब पते का अनुरोध करता है, तो वह पहले इंटरनेट के माध्यम से मशीन से जुड़ता है, वेब सर्वर सॉफ़्टवेयर को दस्तावेज़ के लिए अनुरोध भेजता है। यह सॉफ़्टवेयर लगातार चलता रहता है, ऐसे अनुरोधों की प्रतीक्षा करता है और तदनुसार प्रतिक्रिया देता है।

हालाँकि सर्वर डेटा भेज और प्राप्त कर सकते हैं, सर्वर की कार्यक्षमता स्वयं सीमित है। उदाहरण के लिए, सबसे आदिम सर्वर केवल अनुरोधित फ़ाइल को ब्राउज़र पर भेज सकता है। सर्वर आमतौर पर नहीं जानता कि इस या उस अतिरिक्त इनपुट के साथ क्या करना है। यदि आईएसपी सर्वर को यह नहीं बताता कि इसे कैसे संभालना है अतिरिक्त जानकारी, सबसे अधिक संभावना है कि सर्वर इनपुट को अनदेखा कर देगा।

सर्वर को इंटरनेट ब्राउज़र पर फ़ाइलें खोजने और भेजने के अलावा अन्य कार्य करने में सक्षम बनाने के लिए, आपको यह जानना होगा कि सर्वर की कार्यक्षमता को कैसे बढ़ाया जाए। उदाहरण के लिए, एक वेब सर्वर किसी उपयोगकर्ता द्वारा दर्ज किए गए कीवर्ड के आधार पर डेटाबेस की खोज नहीं कर सकता है और कई मिलान दस्तावेज़ वापस नहीं कर सकता है जब तक कि ऐसी क्षमता किसी तरह से सर्वर में प्रोग्राम न की गई हो।

सीजीआई क्या है?

कॉमन गेटवे इंटरफ़ेस (सीजीआई) सर्वर का एक इंटरफ़ेस है जो आपको सर्वर की कार्यक्षमता बढ़ाने की अनुमति देता है। सीजीआई का उपयोग करके, आप उन उपयोगकर्ताओं के साथ इंटरैक्टिव तरीके से काम कर सकते हैं जो आपकी साइट तक पहुंचते हैं। पर सैद्धांतिक स्तर, सीजीआई आपको ब्राउज़र से इनपुट को पार्स (व्याख्या) करने और उपयोगकर्ता के इनपुट के आधार पर जानकारी वापस करने की सर्वर की क्षमता का विस्तार करने की अनुमति देता है। व्यावहारिक स्तर पर, सीजीआई एक इंटरफ़ेस है जो प्रोग्रामर को प्रोग्राम लिखने की अनुमति देता है जो सर्वर के साथ आसानी से संचार करता है।

आमतौर पर, सर्वर की क्षमताओं का विस्तार करने के लिए, आपको सर्वर को स्वयं संशोधित करना होगा। यह समाधान अवांछनीय है क्योंकि इसके लिए इंटरनेट प्रोटोकॉल नेटवर्क प्रोग्रामिंग के निचले स्तर की समझ की आवश्यकता होती है। इसमें सर्वर स्रोत कोड को संपादित करने और पुनः संकलित करने या प्रत्येक कार्य के लिए एक कस्टम सर्वर लिखने की भी आवश्यकता होगी। मान लीजिए कि हम सर्वर की क्षमताओं का विस्तार करना चाहते हैं ताकि यह वेब-टू-ई-मेल गेटवे के रूप में कार्य करे, ब्राउज़र से उपयोगकर्ता इनपुट ले और उसे भेज सके। ईमेलदूसरे उपयोगकर्ता को. ब्राउज़र से इनपुट को पार्स करने, इसे किसी अन्य उपयोगकर्ता को ईमेल करने और नेटवर्क कनेक्शन पर ब्राउज़र को प्रतिक्रिया वापस भेजने के लिए कोड को सर्वर में इंजेक्ट करना होगा।

सबसे पहले, ऐसे कार्य के लिए सर्वर कोड तक पहुंच की आवश्यकता होती है, जो हमेशा संभव नहीं होता है।

दूसरे, यह कठिन है और इसके लिए व्यापक तकनीकी ज्ञान की आवश्यकता होती है।

तीसरा, यह केवल एक विशिष्ट सर्वर के लिए लागू है। यदि आपको अपने सर्वर को किसी अन्य प्लेटफ़ॉर्म पर ले जाने की आवश्यकता है, तो आपको उस प्लेटफ़ॉर्म पर कोड पोर्ट करने में बहुत समय लगाना होगा या कम से कम खर्च करना होगा।

सीजीआई क्यों?

सीजीआई इन समस्याओं का एक पोर्टेबल और आसान समाधान प्रदान करता है। सीजीआई प्रोटोकॉल प्रोग्राम के लिए वेब सर्वर के साथ संचार करने का एक मानक तरीका परिभाषित करता है। बिना किसी विशेष ज्ञान के, किसी भी मशीनी भाषा में एक प्रोग्राम लिखना संभव है जो वेब सर्वर के साथ इंटरफेस और संचार करता है। यह प्रोग्राम उन सभी वेब सर्वरों के साथ काम करेगा जो सीजीआई प्रोटोकॉल को समझते हैं।

सीजीआई संचार मानक इनपुट और आउटपुट द्वारा किया जाता है, जिसका अर्थ है कि यदि आप अपनी प्रोग्रामिंग भाषा का उपयोग करके डेटा को प्रिंट और पढ़ना जानते हैं, तो आप एक वेब सर्वर एप्लिकेशन लिख सकते हैं। इनपुट और आउटपुट को पार्स करने के अलावा, सीजीआई अनुप्रयोगों की प्रोग्रामिंग किसी भी अन्य एप्लिकेशन की प्रोग्रामिंग के लगभग बराबर है। उदाहरण के लिए, "हैलो, वर्ल्ड!" प्रोग्राम को प्रोग्राम करने के लिए, उचित संदेश को प्रिंट करने के लिए अपनी भाषा के मुद्रण कार्यों और सीजीआई प्रोग्राम के लिए परिभाषित प्रारूप का उपयोग करें।

एक प्रोग्रामिंग भाषा चुनना

चूँकि CGI एक सामान्य इंटरफ़ेस है, आप किसी विशेष मशीन भाषा तक सीमित नहीं हैं। अक्सर पूछा जाने वाला एक महत्वपूर्ण प्रश्न यह है कि सीजीआई प्रोग्रामिंग के लिए कौन सी प्रोग्रामिंग भाषाओं का उपयोग किया जा सकता है? आप किसी भी भाषा का उपयोग कर सकते हैं जो आपको निम्नलिखित कार्य करने की अनुमति देती है:

  • स्टडआउट करने के लिए प्रिंट करें
  • मानक इनपुट से पढ़ें
  • परिवर्तनीय मोड से पढ़ें

लगभग सभी प्रोग्रामिंग भाषाएं और कई स्क्रिप्टिंग भाषाएं ये तीन काम करती हैं, और आप इनमें से किसी का भी उपयोग कर सकते हैं।

भाषाएँ निम्नलिखित दो वर्गों में से एक में आती हैं: अनुवादित और व्याख्यायित। C या C++ जैसी अनुवादित भाषा आमतौर पर छोटी और तेज़ होती है, जबकि पर्ल या Rexx जैसी व्याख्या की गई भाषा को कभी-कभी स्टार्टअप पर लोड करने के लिए एक बड़े दुभाषिया की आवश्यकता होती है। इसके अतिरिक्त, यदि आपकी भाषा अनुवाद योग्य है तो आप स्रोत कोड के बिना बाइनरी कोड (मशीन भाषा में अनुवादित कोड) वितरित कर सकते हैं। व्याख्या की गई लिपियों के वितरण का अर्थ आमतौर पर स्रोत कोड का वितरण होता है।

किसी भाषा को चुनने से पहले आपको अपनी प्राथमिकताओं पर विचार करना होगा। आपको एक प्रोग्रामिंग भाषा की गति और दक्षता के साथ-साथ दूसरी प्रोग्रामिंग भाषा की आसानी के लाभों का मूल्यांकन करने की आवश्यकता है। यदि आपके मन में कोई दूसरी भाषा सीखने की इच्छा है, तो जो भाषा आप पहले से जानते हैं उसका उपयोग करने के बजाय, दोनों भाषाओं के फायदे और नुकसान पर ध्यानपूर्वक विचार करें।

सीजीआई प्रोग्रामिंग के लिए दो सबसे अधिक इस्तेमाल की जाने वाली भाषाएं सी और पर्ल हैं (दोनों को इस पुस्तक में शामिल किया गया है)। दोनों के स्पष्ट फायदे और नुकसान हैं। पर्ल एक बहुत है उच्च स्तर, और साथ ही एक शक्तिशाली भाषा, विशेष रूप से पाठ को पार्स करने के लिए उपयुक्त। जबकि इसके उपयोग में आसानी, लचीलापन और शक्ति इसे सीजीआई प्रोग्रामिंग के लिए एक आकर्षक भाषा बनाती है, इसका अपेक्षाकृत बड़ा आकार और धीमा संचालन कभी-कभी इसे कुछ अनुप्रयोगों के लिए अनुपयुक्त बना देता है। सी प्रोग्राम छोटे, अधिक कुशल होते हैं, और निम्न-स्तरीय सिस्टम नियंत्रण प्रदान करते हैं, लेकिन प्रोग्राम करना अधिक कठिन होता है, हल्के वजन वाले अंतर्निहित टेक्स्ट प्रोसेसिंग रूटीन का अभाव होता है और डीबग करना अधिक कठिन होता है।

CGI प्रोग्रामिंग के लिए सबसे उपयुक्त भाषा कौन सी है? जिसे आप प्रोग्रामिंग की दृष्टि से अपने लिए अधिक सुविधाजनक मानते हैं। सीजीआई अनुप्रयोगों की प्रोग्रामिंग के लिए दोनों समान रूप से प्रभावी हैं, और उचित पुस्तकालयों के साथ, दोनों की क्षमताएं समान हैं। हालाँकि, यदि आपके पास हार्ड-टू-पहुंच सर्वर है, तो आप छोटे संकलित सी प्रोग्राम का उपयोग कर सकते हैं। यदि आपको जल्दी से एक एप्लिकेशन लिखना है जिसके लिए बहुत अधिक टेक्स्ट प्रोसेसिंग कार्य की आवश्यकता है, तो आप इसके बजाय पर्ल का उपयोग कर सकते हैं।

चेतावनी

सीजीआई अनुप्रयोगों के लिए कुछ महत्वपूर्ण विकल्प हैं। कई सर्वरों में अब एपीआई प्रोग्रामिंग शामिल है, जो स्टैंडअलोन सीजीआई अनुप्रयोगों के विपरीत सीधे सर्वर एक्सटेंशन को प्रोग्राम करना आसान बनाता है। एपीआई सर्वर आमतौर पर सीजीआई प्रोग्राम की तुलना में अधिक कुशल होते हैं। अन्य सर्वरों में अंतर्निहित कार्यक्षमता शामिल होती है जो विशेष गैर-सीजीआई आइटम, जैसे डेटाबेस पेयरिंग को संभाल सकती है। अंत में, कुछ अनुप्रयोगों को जावा जैसी कुछ नई क्लाइंट-साइड (सर्वर-साइड के बजाय) प्रौद्योगिकियों द्वारा नियंत्रित किया जा सकता है। क्या प्रौद्योगिकी में इतने तीव्र बदलावों के सामने सीजीआई जल्दी ही अप्रचलित हो जाएगा?

मुश्किल से। नई प्रौद्योगिकियों की तुलना में सीजीआई के कई फायदे हैं।

  • यह बहुमुखी और पोर्टेबल है. आप किसी भी प्लेटफ़ॉर्म पर लगभग किसी भी प्रोग्रामिंग भाषा का उपयोग करके सीजीआई एप्लिकेशन लिख सकते हैं। कुछ विकल्प, जैसे सर्वर एपीआई, आपको कुछ भाषाओं तक ही सीमित रखते हैं और इन्हें सीखना अधिक कठिन होता है।
  • यह संभावना नहीं है कि जावा जैसी क्लाइंट प्रौद्योगिकियां सीजीआई की जगह ले लेंगी क्योंकि कुछ एप्लिकेशन ऐसे हैं जिनके लिए सर्वर एप्लिकेशन चलाने के लिए अधिक उपयुक्त हैं।
  • सीजीआई के कई प्रतिबंध HTML या HTTP प्रतिबंध हैं। जैसे-जैसे आम तौर पर इंटरनेट मानक विकसित होते हैं, वैसे-वैसे सीजीआई की क्षमताएं भी विकसित होती हैं।

सारांश

कॉमन गेटवे इंटरफ़ेस वह प्रोटोकॉल है जिसके द्वारा प्रोग्राम वेब सर्वर के साथ संचार करते हैं। सीजीआई की बहुमुखी प्रतिभा प्रोग्रामर्स को लगभग किसी भी भाषा में गेटवे प्रोग्राम लिखने की अनुमति देती है, हालांकि विभिन्न भाषाओं के साथ कई ट्रेड-ऑफ जुड़े हुए हैं। इस क्षमता के बिना, इंटरैक्टिव वेब पेज बनाना मुश्किल होगा, अधिक से अधिक सर्वर संशोधन की आवश्यकता होगी, और इंटरैक्टिविटी उन अधिकांश उपयोगकर्ताओं के लिए पहुंच योग्य नहीं होगी जो साइट प्रशासक नहीं हैं।

अध्याय 2. मूल बातें

कुछ साल पहले, मैंने हार्वर्ड के एक कॉलेज के लिए एक पेज बनाया था जहाँ आप उनके बारे में अपनी टिप्पणियाँ दे सकते थे। उस समय, इंटरनेट युवा था और दस्तावेज़ीकरण दुर्लभ था। मैंने, कई अन्य लोगों की तरह, सीजीआई प्रोग्रामिंग सीखने के लिए संक्षिप्त दस्तावेज़ीकरण और दूसरों द्वारा बनाई गई प्रोग्रामिंग प्रणाली पर भरोसा किया है। हालाँकि अध्ययन की इस पद्धति में कुछ खोज, कई प्रयोगों की आवश्यकता थी और कई सवाल उठे, लेकिन यह बहुत प्रभावी थी। यह अध्याय सीजीआई के साथ मेरे शुरुआती काम का फल है (निश्चित रूप से कुछ सुधारों के साथ)।

हालाँकि सामान्य गेटवे इंटरफ़ेस को पूरी तरह से समझने और उसमें महारत हासिल करने में कुछ समय लगता है, प्रोटोकॉल स्वयं काफी सरल है। जिस किसी के पास कुछ बुनियादी प्रोग्रामिंग कौशल हैं और वह वेब से परिचित है, वह तुरंत सीख सकता है कि काफी जटिल सीजीआई अनुप्रयोगों को कैसे प्रोग्राम किया जाए, जैसा कि मैंने और अन्य लोगों ने कुछ साल पहले सीखा था।

इस अध्याय का उद्देश्य सीजीआई की मूल बातों को व्यापक, यद्यपि संक्षिप्त रूप में प्रस्तुत करना है। यहां चर्चा की गई प्रत्येक अवधारणा को अगले अध्यायों में विस्तार से प्रस्तुत किया गया है। हालाँकि, इस अध्याय का अध्ययन करने के बाद, आप तुरंत सीजीआई अनुप्रयोगों की प्रोग्रामिंग शुरू कर सकते हैं। एक बार जब आप इस स्तर पर पहुंच जाते हैं, तो आप सीजीआई के बारे में पूरी जानकारी सीख सकते हैं, या तो इस पुस्तक के बाकी हिस्सों को पढ़कर या बस स्वयं प्रयोग करके।

आप सीजीआई प्रोग्रामिंग को दो कार्यों तक सीमित कर सकते हैं: वेब ब्राउज़र से जानकारी प्राप्त करना और जानकारी को ब्राउज़र पर वापस भेजना। एक बार जब आप सीजीआई अनुप्रयोगों के सामान्य उपयोग को समझ लेते हैं तो यह काफी सहज हो जाता है। अक्सर उपयोगकर्ता को एक फॉर्म भरने के लिए कहा जाता है, उदाहरण के लिए, अपना नाम डालने के लिए। एक बार जब उपयोगकर्ता फॉर्म भर देता है और एंटर दबाता है, तो यह जानकारी सीजीआई प्रोग्राम को भेज दी जाती है। सीजीआई प्रोग्राम को इस जानकारी को उसके द्वारा समझी गई जानकारी में परिवर्तित करना होगा, इसे उचित रूप से संसाधित करना होगा, और फिर इसे ब्राउज़र में वापस भेजना होगा, चाहे यह एक साधारण पुष्टि हो या बहुउद्देशीय डेटाबेस खोज का परिणाम हो।

दूसरे शब्दों में, सीजीआई प्रोग्रामिंग को यह समझने की आवश्यकता है कि इंटरनेट ब्राउज़र से इनपुट कैसे प्राप्त करें और आउटपुट को वापस कैसे भेजें। सीजीआई प्रोग्राम के इनपुट और आउटपुट चरणों के बीच क्या होता है यह डेवलपर के लक्ष्य पर निर्भर करता है। आप पाएंगे कि सीजीआई प्रोग्रामिंग में मुख्य कठिनाई इस मध्यवर्ती चरण में है; जब आप इनपुट और आउटपुट के साथ काम करना सीख जाते हैं, तो यह मूल रूप से सीजीआई डेवलपर बनने के लिए पर्याप्त है।

इस अध्याय में, आप सीजीआई इनपुट और आउटपुट के पीछे के सिद्धांतों के साथ-साथ अन्य बुनियादी कौशल सीखेंगे जिनकी आपको सीजीआई लिखने और उपयोग करने के लिए आवश्यकता होगी, जिसमें HTML फॉर्म बनाने और अपने सीजीआई कार्यक्रमों का नामकरण करने जैसी चीजें शामिल हैं। यह अध्याय निम्नलिखित विषयों को शामिल करता है:

  • पारंपरिक कार्यक्रम "हैलो, वर्ल्ड!";
  • सीजीआई आउटपुट: इंटरनेट ब्राउज़र में प्रदर्शन के लिए जानकारी वापस भेजना;
  • एप्लिकेशन को कॉन्फ़िगर करना, इंस्टॉल करना और चलाना। आप विभिन्न प्लेटफार्मों और वेब सर्वरों के बारे में जानेंगे;
  • सीजीआई इनपुट: वेब ब्राउज़र द्वारा भेजी गई जानकारी की व्याख्या करना। ऐसे इनपुट को पार्स करने के लिए कुछ उपयोगी प्रोग्रामिंग लाइब्रेरी से परिचित होना;
  • एक सरल उदाहरण: इसमें इस अध्याय के सभी पाठों को शामिल किया गया है;
  • प्रोग्रामिंग रणनीति.

इस अध्याय की प्रकृति के कारण, मैं केवल कुछ विषयों पर हल्के ढंग से बात करूंगा। चिंता मत करो; इन सभी विषयों को अन्य अध्यायों में अधिक गहराई से शामिल किया गया है।

हैलो वर्ल्ड!

आप एक पारंपरिक परिचयात्मक प्रोग्रामिंग कार्य से शुरुआत करते हैं। आप एक प्रोग्राम लिखेंगे जो "हैलो, वर्ल्ड!" प्रदर्शित करेगा। आपके वेब ब्राउज़र पर. इस प्रोग्राम को लिखने से पहले, आपको यह समझना होगा कि वेब ब्राउज़र सीजीआई प्रोग्राम से किस जानकारी की अपेक्षा करता है। इस प्रोग्राम को कार्यान्वित होते देखने के लिए आपको यह भी जानना होगा कि इस प्रोग्राम को कैसे चलाया जाए।

सीजीआई भाषा स्वतंत्र है, इसलिए आप इस कार्यक्रम को किसी भी भाषा में कार्यान्वित कर सकते हैं। प्रत्येक भाषा की स्वतंत्रता को प्रदर्शित करने के लिए यहां कई अलग-अलग भाषाओं का उपयोग किया जाता है। पर्ल में, कार्यक्रम "हैलो, वर्ल्ड!" सूची 2.1 में दिखाया गया है।

सूची 2.1. हैलो वर्ल्ड! पर्ल में. #!/usr/local/bin/perl # Hello.cgi - मेरा पहला CGI प्रोग्राम प्रिंट "सामग्री-प्रकार: text/html\n\n"; प्रिंट" \n";प्रिंट करें" हैलो वर्ल्ड!"; प्रिंट करें "\n";प्रिंट करें" \n";प्रिंट करें"

हैलो वर्ल्ड!

\n";प्रिंट करें" \एन";

इस प्रोग्राम को hello.cgi के रूप में सहेजें और उचित स्थान पर स्थापित करें। (यदि आप निश्चित नहीं हैं कि यह कहां है, तो चिंता न करें; आपको इस अध्याय में बाद में "सीजीआई प्रोग्राम इंस्टॉल करना और चलाना" अनुभाग में पता चलेगा।) अधिकांश सर्वरों के लिए, सही निर्देशिका को सीजीआई-बिन कहा जाता है . अब, अपने वेब ब्राउज़र से प्रोग्राम को कॉल करें। अधिकांश के लिए, इसका अर्थ निम्नलिखित यूनिफ़ॉर्म रिसोर्स लोकेटर (यूआरएल) खोलना है:

http://hostname/directoryname/hello.cgi

होस्टनाम आपके वेब सर्वर का नाम है, और डायरेक्ट्रीनाम वह निर्देशिका है जहां आप hello.cgi (संभवतः सीजीआई-बिन) डालते हैं।

बंटवारा hello.cgi

hello.cgi के बारे में ध्यान देने योग्य कुछ बातें हैं।

सबसे पहले, आप सरल प्रिंट कमांड का उपयोग करें। सीजीआई प्रोग्रामों को किसी विशेष फ़ाइल डिस्क्रिप्टर या आउटपुट डिस्क्रिप्टर की आवश्यकता नहीं होती है। ब्राउज़र पर आउटपुट भेजने के लिए, बस stdout पर प्रिंट करें।

दूसरा, ध्यान दें कि पहले प्रिंट स्टेटमेंट की सामग्री (सामग्री-प्रकार: टेक्स्ट/एचटीएमएल) आपके वेब ब्राउज़र पर दिखाई नहीं देती है। आप अपनी इच्छित कोई भी जानकारी ब्राउज़र पर वापस भेज सकते हैं (एक HTML पेज, एक ग्राफ़िक या एक ध्वनि), लेकिन पहले आपको ब्राउज़र को यह बताना होगा कि आप इसे किस प्रकार का डेटा भेज रहे हैं। यह पंक्ति ब्राउज़र को बताती है कि किस प्रकार की जानकारी की अपेक्षा की जानी चाहिए - इस मामले में, एक HTML पृष्ठ।

तीसरा, प्रोग्राम को hello.cgi कहा जाता है। आपके CGI प्रोग्राम के नाम के साथ .cgi एक्सटेंशन का उपयोग करना हमेशा आवश्यक नहीं होता है। हालाँकि कई भाषाओं के लिए स्रोत कोड .cgi एक्सटेंशन का भी उपयोग करता है, इसका उपयोग भाषा प्रकार को इंगित करने के लिए नहीं किया जाता है, लेकिन यह सर्वर के लिए एक छवि फ़ाइल, HTML फ़ाइल के बजाय एक निष्पादन योग्य फ़ाइल के रूप में फ़ाइल की पहचान करने का एक तरीका है। , या टेक्स्ट फ़ाइल। सर्वर को अक्सर केवल उन फ़ाइलों को निष्पादित करने का प्रयास करने के लिए कॉन्फ़िगर किया जाता है जिनमें अन्य सभी की सामग्री प्रदर्शित करते समय यह एक्सटेंशन होता है। हालाँकि .cgi एक्सटेंशन का उपयोग वैकल्पिक है, फिर भी इसे अच्छा अभ्यास माना जाता है।

सामान्य तौर पर, hello.cgi में दो मुख्य भाग होते हैं:

  • ब्राउज़र को बताता है कि किस जानकारी की अपेक्षा की जानी चाहिए (सामग्री-प्रकार: टेक्स्ट/एचटीएमएल)
  • ब्राउज़र को बताता है कि क्या प्रदर्शित करना है (हैलो, वर्ल्ड!)

हैलो वर्ल्ड! सी में

भाषाओं से सीजीआई कार्यक्रमों की स्वतंत्रता दिखाने के लिए, लिस्टिंग 2.2 hello.cgi कार्यक्रम के सी समकक्ष को दर्शाता है।

सूची 2.2. हैलो वर्ल्ड! सी में /* hello.cgi.c - हेलो, वर्ल्ड सीजीआई */ #शामिल int मुख्य() ( printf('सामग्री-प्रकार: text/html\r\n\r\n'); printf('' \n"); प्रिंटफ(" हैलो वर्ल्ड!\n"); प्रिंटफ("\n"); प्रिंटफ(" \n"); प्रिंटफ("

हैलो वर्ल्ड!

\n"); प्रिंटफ(" \एन"); )

टिप्पणी

ध्यान दें कि hello.cgi का पर्ल संस्करण कंटेंट-टाइप प्रिंट ": text/html\n\n " का उपयोग करता है; जबकि C संस्करण Printf(" content-Type: text/html\r\n\r\n "); का उपयोग करता है;

पर्ल स्टेटमेंट को दो न्यूलाइन (\n) के साथ क्यों प्रिंट करता है, जबकि सी प्रिंटफ दो कैरिज रिटर्न और एक न्यूलाइन (\r\n) के साथ समाप्त होता है?

औपचारिक रूप से, हेडर (खाली लाइन से पहले के सभी आउटपुट) को कैरिज रिटर्न और न्यूलाइन्स द्वारा अलग किया जाना चाहिए। दुर्भाग्य से, डॉस और विंडोज मशीनों पर, पर्ल \r को एक अन्य नई लाइन के रूप में अनुवादित करता है, कैरिज रिटर्न के रूप में नहीं।

हालाँकि पर्ल में \rs अपवाद तकनीकी रूप से ग़लत है, यह लगभग सभी प्रोटोकॉल में काम करेगा और सभी प्लेटफ़ॉर्म पर पोर्टेबल भी है। इसलिए, इस पुस्तक में पर्ल के सभी उदाहरणों में, मैं कैरिज रिटर्न और न्यूलाइन के बजाय हेडर को अलग करने के लिए न्यूलाइन का उपयोग करता हूं।

इस समस्या का उचित समाधान अध्याय 4, निष्कर्ष में प्रस्तुत किया गया है।

न तो वेब सर्वर और न ही ब्राउज़र को इसकी परवाह है कि प्रोग्राम लिखने के लिए किस भाषा का उपयोग किया जाता है। जबकि सीजीआई प्रोग्रामिंग भाषा के रूप में प्रत्येक भाषा के फायदे और नुकसान हैं, उस भाषा का उपयोग करना सबसे अच्छा है जिसमें आप सबसे अधिक सहज हों। (प्रोग्रामिंग भाषा की पसंद पर अध्याय 1 "कॉमन गेटवे इंटरफ़ेस (सीजीआई)" में अधिक विस्तार से चर्चा की गई है)।

सीजीआई आउटपुट

अब हम वेब ब्राउज़र पर जानकारी भेजने के मुद्दे पर करीब से नज़र डाल सकते हैं। "हैलो, वर्ल्ड!" उदाहरण से, आप देख सकते हैं कि वेब ब्राउज़र डेटा के दो सेटों की अपेक्षा करते हैं: एक हेडर जिसमें जानकारी होती है जैसे कि कौन सी जानकारी प्रदर्शित करनी है (जैसे सामग्री-प्रकार: लाइन) और वास्तविक जानकारी (क्या प्रदर्शित होता है) वेब ब्राउज़र)। सूचना के इन दो ब्लॉकों को एक रिक्त रेखा द्वारा अलग किया गया है।

हेडर को HTTP हेडर कहा जाता है। यह ब्राउज़र को प्राप्त होने वाली जानकारी के बारे में महत्वपूर्ण विवरण देता है। HTTP हेडर कई अलग-अलग प्रकार के होते हैं, और सबसे सामान्य वह है जिसका आपने पहले उपयोग किया है: सामग्री-प्रकार: हेडर। आप कैरिएज रिटर्न और न्यूलाइन्स (\r\n) द्वारा अलग किए गए HTTP हेडर के विभिन्न संयोजनों का उपयोग कर सकते हैं। हेडर को डेटा से अलग करने वाली खाली लाइन में एक कैरिज रिटर्न और एक नई लाइन भी शामिल होती है (दोनों की आवश्यकता क्यों है इसका संक्षेप में पिछले नोट में वर्णन किया गया है और अध्याय 4 में विस्तृत किया गया है)। आप अध्याय 4 में अन्य HTTP शीर्षलेखों के बारे में जानेंगे; आप वर्तमान में एक सामग्री-प्रकार: शीर्षलेख के साथ काम कर रहे हैं।

सामग्री-प्रकार: हेडर उस डेटा के प्रकार का वर्णन करता है जो सीजीआई लौटाता है। इस शीर्षलेख के लिए उपयुक्त प्रारूप है:

सामग्री-प्रकार: उपप्रकार/प्रकार

जहां उपप्रकार/प्रकार सही बहुउद्देशीय इंटरनेट मेल एक्सटेंशन (एमआईएमई) प्रकार है। सबसे आम MIME प्रकार HTML प्रकार है: text/html। तालिका 2.1 में कुछ और सामान्य MIME प्रकार सूचीबद्ध हैं जिन पर चर्चा की जाएगी; MIME प्रकारों की अधिक संपूर्ण सूची और विश्लेषण अध्याय 4 में प्रदान किया गया है।

टिप्पणी

MIME का आविष्कार मूल रूप से मेल संदेश निकायों की सामग्री का वर्णन करने के लिए किया गया था। यह सामग्री-प्रकार की जानकारी प्रस्तुत करने का एक काफी सामान्य तरीका बन गया है। आप RFC1521 में MIME के ​​बारे में अधिक पढ़ सकते हैं। इंटरनेट पर RFC का मतलब "टिप्पणियों के लिए अनुरोध" है, जो इंटरनेट पर उन समूहों द्वारा लिए गए निर्णयों का सारांश है जो मानक निर्धारित करने का प्रयास कर रहे हैं। आप RFC1521 के परिणाम निम्नलिखित पते पर देख सकते हैं: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

तालिका 2.1. कुछ सामान्य MIME प्रकार. MIME प्रकार विवरण टेक्स्ट/एचटीएमएल हाइपरटेक्स्ट मार्कअप लैंग्वेज (HTML) टेक्स्ट/सादा सादा पाठ फ़ाइलें छवि/gif GIF छवि फ़ाइलें छवि/jpeg JPEG संपीड़ित छवि फ़ाइलें ऑडियो/बेसिक सन ऑडियो फ़ाइलें *.au ऑडियो/x-wav विंडोज़* फ़ाइलें। wav

हेडर और एक खाली लाइन के बाद, आप बस उस फॉर्म में डेटा प्रिंट करें जिसकी आपको आवश्यकता है। यदि आप HTML भेज रहे हैं, तो हेडर के बाद stdout करने के लिए HTML टैग और डेटा प्रिंट करें। आप फ़ाइल की सामग्री को केवल स्टडआउट पर प्रिंट करके ग्राफ़िक्स, ध्वनि और अन्य बाइनरी फ़ाइलें भी भेज सकते हैं। इसके कुछ उदाहरण अध्याय 4 में दिये गये हैं।

सीजीआई प्रोग्राम स्थापित करना और चलाना

यह अनुभाग सीजीआई प्रोग्रामिंग से कुछ हद तक विचलित है और सीजीआई का उपयोग करने, प्रोग्राम स्थापित करने और चलाने के लिए आपके वेब सर्वर को कॉन्फ़िगर करने के बारे में बात करता है। आप विभिन्न प्लेटफार्मों के लिए अलग-अलग सर्वरों से कमोबेश विस्तार से परिचित होंगे, लेकिन सबसे अच्छा विकल्प खोजने के लिए आपको अपने सर्वर के दस्तावेज़ों में गहराई से जाना होगा।

सभी सर्वरों को सर्वर फ़ाइलों के लिए स्थान और HTML दस्तावेज़ों के लिए स्थान की आवश्यकता होती है। इस पुस्तक में, सर्वर क्षेत्र को सर्वररूट और दस्तावेज़ क्षेत्र को डॉक्यूमेंटरूट कहा जाता है। UNIX मशीनों पर, ServerRoot आमतौर पर /usr/local/etc/httpd/ में होता है और DocumentRoot आमतौर पर /usr/local/etc/httpd/htdocs/ में होता है। हालाँकि, इससे आपके सिस्टम पर कोई फर्क नहीं पड़ता, इसलिए ServerRoot और DocumentRoot के सभी संदर्भों को अपने स्वयं के ServerRoot और DocumentRoot से बदलें।

जब आप अपने वेब ब्राउज़र का उपयोग करके फ़ाइलों तक पहुँचते हैं, तो आप दस्तावेज़रूट के सापेक्ष URL में फ़ाइल निर्दिष्ट करते हैं। उदाहरण के लिए, यदि आपका सर्वर पता mymachine.org है, तो आप इस फ़ाइल को निम्न URL से एक्सेस करें: http://mymachine.org/index.html

सीजीआई के लिए सर्वर कॉन्फ़िगरेशन

अधिकांश वेब सर्वर सीजीआई कार्यक्रमों के उपयोग की अनुमति देने के लिए पूर्व-कॉन्फ़िगर किए गए हैं। आमतौर पर दो पैरामीटर सर्वर को बताते हैं कि फ़ाइल सीजीआई एप्लिकेशन है या नहीं:

  • निर्दिष्ट निर्देशिका. कुछ सर्वर आपको यह निर्दिष्ट करने की अनुमति देते हैं कि निर्दिष्ट निर्देशिका (आमतौर पर डिफ़ॉल्ट रूप से सीजीआई-बिन कहा जाता है) में सभी फाइलें सीजीआई हैं।
  • फ़ाइल नाम एक्सटेंशन. कई सर्वर .cgi में समाप्त होने वाली सभी फ़ाइलों को CGI के रूप में परिभाषित करने की अनुमति देने के लिए पूर्व-कॉन्फ़िगर किए गए हैं।

निर्दिष्ट निर्देशिका विधि कुछ हद तक होल्डओवर है (सबसे पहले सर्वर ने इसे यह निर्धारित करने के लिए एकमात्र विधि के रूप में उपयोग किया था कि कौन सी फ़ाइलें सीजीआई प्रोग्राम थीं), लेकिन इसके कई फायदे हैं।

  • यह सीजीआई कार्यक्रमों को केंद्रीकृत रखता है, अन्य निर्देशिकाओं को अव्यवस्थित होने से बचाता है।
  • आप किसी विशेष फ़ाइल नाम एक्सटेंशन तक सीमित नहीं हैं, इसलिए आप फ़ाइलों को अपनी इच्छानुसार नाम दे सकते हैं। कुछ सर्वर कई अलग-अलग निर्देशिकाओं को सीजीआई निर्देशिकाओं के रूप में नामित करने की अनुमति देते हैं।
  • यह आपको इस पर अधिक नियंत्रण भी देता है कि सीजीआई कौन लिख सकता है। उदाहरण के लिए, यदि आपके पास एक सर्वर है और कई उपयोगकर्ताओं वाले सिस्टम का समर्थन करते हैं और नहीं चाहते कि वे सुरक्षा कारणों से प्रोग्राम को संशोधित किए बिना अपनी स्वयं की सीजीआई स्क्रिप्ट का उपयोग करें, तो आप प्रतिबंधित, केंद्रीकृत निर्देशिका में केवल उन फ़ाइलों को सीजीआई के रूप में नामित कर सकते हैं . उपयोगकर्ताओं को इंस्टॉल करने के लिए आपको सीजीआई प्रोग्राम उपलब्ध कराने होंगे और आप पहले यह सुनिश्चित करने के लिए कोड का ऑडिट कर सकते हैं कि प्रोग्राम में कोई बड़ी सुरक्षा समस्या नहीं है।

फ़ाइल नाम एक्सटेंशन के माध्यम से सीजीआई को दर्शाना इसके लचीलेपन के कारण उपयोगी हो सकता है। आप सीजीआई कार्यक्रमों के लिए एक एकल निर्देशिका तक सीमित नहीं हैं। अधिकांश सर्वरों को फ़ाइल नाम एक्सटेंशन के माध्यम से सीजीआई को पहचानने के लिए कॉन्फ़िगर किया जा सकता है, हालांकि सभी को डिफ़ॉल्ट रूप से इस तरह से कॉन्फ़िगर नहीं किया जाता है।

चेतावनी

जब आप अपने सर्वर को सीजीआई के लिए कॉन्फ़िगर करते हैं तो सुरक्षा संबंधी चिंताओं को ध्यान में रखें। कुछ युक्तियों को यहां शामिल किया जाएगा, और अध्याय 9, सीजीआई को सुरक्षित करना, इन पहलुओं पर अधिक विस्तार से चर्चा करता है।

UNIX सर्वर पर CGI स्थापित करना

भले ही आपका UNIX सर्वर कैसे भी कॉन्फ़िगर किया गया हो, आपको यह सुनिश्चित करने के लिए कई कदम उठाने होंगे कि आपके CGI एप्लिकेशन ठीक से चलें। आपका वेब सर्वर आम तौर पर एक गैर-मौजूद उपयोगकर्ता के रूप में चलेगा (अर्थात, UNIX उपयोगकर्ता कोई नहीं - एक खाता जिसमें फ़ाइल अनुमतियाँ नहीं हैं और लॉग ऑन नहीं किया जा सकता है)। सीजीआई स्क्रिप्ट (चाहे पर्ल, बॉर्न शेल, या किसी अन्य स्क्रिप्टिंग भाषा में लिखी गई हो) विश्व स्तर पर निष्पादन योग्य और पठनीय होनी चाहिए।

संकेत

अपनी फ़ाइलों को विश्व स्तर पर पठनीय और निष्पादन योग्य बनाने के लिए, निम्नलिखित UNIX अनुमतियाँ कमांड का उपयोग करें: chmod 755 फ़ाइल नाम।

यदि आप पर्ल या टीसीएल जैसी स्क्रिप्टिंग भाषा का उपयोग कर रहे हैं, तो अपनी स्क्रिप्ट की पहली पंक्ति में अपने दुभाषिया का पूरा पथ शामिल करें। उदाहरण के लिए, /usr/local/bin निर्देशिका में पर्ल का उपयोग करने वाली एक पर्ल स्क्रिप्ट निम्नलिखित पंक्ति से शुरू होगी:

#!/usr/local/bin/perl

चेतावनी

/सीजीआई-बिन निर्देशिका में कभी भी दुभाषिया (पर्ल, या टीसीएल विश बाइनरी) न रखें। यह आपके सिस्टम पर सुरक्षा जोखिम पैदा करता है। इसे अध्याय 9 में अधिक विस्तार से कवर किया गया है।

कुछ यूनिवर्सल यूनिक्स सर्वर

एनसीएसए और अपाचे सर्वर में समान कॉन्फ़िगरेशन फ़ाइलें हैं क्योंकि अपाचे सर्वर मूल रूप से एनसीएसए कोड पर आधारित था। डिफ़ॉल्ट रूप से, उन्हें कॉन्फ़िगर किया गया है ताकि सीजीआई-बिन निर्देशिका (सर्वररूट में डिफ़ॉल्ट रूप से स्थित) में कोई भी फ़ाइल एक सीजीआई प्रोग्राम हो। Cgi-bin निर्देशिका का स्थान बदलने के लिए, आप conf/srm.conf कॉन्फ़िगरेशन फ़ाइल को संपादित कर सकते हैं। इस निर्देशिका को कॉन्फ़िगर करने का प्रारूप है

स्क्रिप्ट उपनाम नकली निर्देशिका नाम वास्तविक निर्देशिका नाम

जहां फेकडायरेक्टरीनाम छद्म निर्देशिका नाम (/सीजीआई-बिन) है और रियलडायरेक्टरीनाम पूरा पथ है जहां सीजीआई प्रोग्राम वास्तव में संग्रहीत हैं। आप अधिक ScriptAlias ​​पंक्तियाँ जोड़कर एक से अधिक ScriptAlias ​​​​को कॉन्फ़िगर कर सकते हैं।

अधिकांश उपयोगकर्ताओं की आवश्यकताओं के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन पर्याप्त है। आपको सही वास्तविक निर्देशिका नाम निर्धारित करने के लिए srm.conf फ़ाइल में एक पंक्ति को संपादित करने की आवश्यकता है। यदि, उदाहरण के लिए, आपका CGI प्रोग्राम /usr/local/etc/httpd/cgi-bin में स्थित है, तो आपकी srm.conf फ़ाइल में ScriptAlias ​​​​लाइन इस तरह दिखनी चाहिए:

स्क्रिप्ट उपनाम /cgi-bin/ /usr/local/etc/httpd/cgi-bin/

इस निर्देशिका में स्थित सीजीआई कार्यक्रमों तक पहुंचने या लिंक करने के लिए, निम्नलिखित यूआरएल का उपयोग करें:

http://hostname/cgi-bin/programname

जहां होस्टनाम आपके वेब सर्वर का होस्टनाम है और प्रोग्रामनाम आपके सीजीआई का नाम है।

उदाहरण के लिए, मान लें कि आपने www.company.com नामक अपने वेब सर्वर पर hello.cgi प्रोग्राम को अपनी cgi-bin निर्देशिका (जैसे /usr/local/etc/httpd/cgi-bin) में कॉपी कर लिया है। अपने सीजीआई तक पहुंचने के लिए, निम्नलिखित यूआरएल का उपयोग करें: http://www.company.com/cgi-bin/hello.cgi

यदि आप किसी .cgi फ़ाइल को CGI के रूप में पहचानने के लिए NCSA या Apache सर्वर को कॉन्फ़िगर करना चाहते हैं, तो आपको दो कॉन्फ़िगरेशन फ़ाइलों को संपादित करने की आवश्यकता है। सबसे पहले, srm.conf फ़ाइल में, निम्नलिखित पंक्ति पर टिप्पणी न करें:

AddType एप्लिकेशन/x-httpd-cgi .cgi

यह MIME प्रकार CGI को .cgi एक्सटेंशन के साथ संबद्ध करेगा। अब, हमें access.conf फ़ाइल को संशोधित करने की आवश्यकता है ताकि हम किसी भी निर्देशिका में CGI निष्पादित कर सकें। ऐसा करने के लिए, ExecCGI विकल्प को विकल्प पंक्ति में जोड़ें। यह कुछ-कुछ निम्न पंक्ति जैसा दिखेगा:

विकल्प अनुक्रमणिका फ़ॉलोसिमलिंक्स ExecCGI

अब, .cgi एक्सटेंशन वाली कोई भी फ़ाइल CGI मानी जाती है; इसे वैसे ही एक्सेस करें जैसे आप अपने सर्वर पर किसी फ़ाइल को एक्सेस करते हैं।

CERN सर्वर को Apache और NCSA सर्वर की तरह ही कॉन्फ़िगर किया गया है। ScriptAlias ​​के बजाय, CERN सर्वर Exec कमांड का उपयोग करता है। उदाहरण के लिए, httpd.conf फ़ाइल में, आपको निम्न पंक्ति दिखाई देगी:

कार्यकारी /सीजीआई-बिन/* /यूएसआर/स्थानीय/आदि/httpd/सीजीआई-बिन/*

अन्य UNIX सर्वरों को उसी तरह कॉन्फ़िगर किया जा सकता है; इसके बारे में अधिक विवरण सर्वर दस्तावेज़ में वर्णित हैं।

विंडोज़ पर सीजीआई स्थापित करना

विंडोज़ 3.1, विंडोज़ 95 और विंडोज़ एनटी के लिए उपलब्ध अधिकांश सर्वर सीजीआई पहचान के लिए "फ़ाइल नाम एक्सटेंशन" विधि से कॉन्फ़िगर किए गए हैं। सामान्य तौर पर, विंडोज़-आधारित सर्वर के कॉन्फ़िगरेशन को बदलने के लिए बस सर्वर कॉन्फ़िगरेशन प्रोग्राम चलाने और उचित परिवर्तन करने की आवश्यकता होती है।

कभी-कभी किसी स्क्रिप्ट (जैसे पर्ल) को सही ढंग से चलाने के लिए सर्वर को कॉन्फ़िगर करना मुश्किल हो सकता है। DOS या Windows पर, आप किसी स्क्रिप्ट की पहली पंक्ति पर एक दुभाषिया निर्दिष्ट नहीं कर पाएंगे, जैसा कि आप UNIX पर करेंगे। कुछ सर्वर दुभाषिया के साथ कुछ फ़ाइल नाम एक्सटेंशन को जोड़ने के लिए पूर्व-कॉन्फ़िगर किए गए हैं। उदाहरण के लिए, कई विंडोज़ वेब सर्वर मानते हैं कि .pl पर समाप्त होने वाली फ़ाइलें पर्ल स्क्रिप्ट हैं।

यदि सर्वर इस प्रकार की फ़ाइल एसोसिएशन को लागू नहीं करता है, तो आप एक पैकेजर बैच फ़ाइल को परिभाषित कर सकते हैं जो दुभाषिया और स्क्रिप्ट दोनों को कॉल करती है। UNIX सर्वर की तरह, दुभाषिया को cgi-bin निर्देशिका या किसी वेब पहुंच योग्य निर्देशिका में स्थापित न करें।

मैकिंटोश पर सीजीआई स्थापित करना

मैकिंटोश के लिए दो सबसे प्रसिद्ध सर्वर विकल्प वेबस्टार स्टारनाइन और इसके पूर्ववर्ती मैकएचटीटीपी हैं। दोनों सीजीआई को उसके फ़ाइल नाम एक्सटेंशन से पहचानते हैं।

MacHTTP दो अलग-अलग एक्सटेंशन को समझता है: .cgi और .acgi जो एसिंक्रोनस CGI के लिए है। मैकिंटोश पर स्थापित नियमित सीजीआई प्रोग्राम (.सीजीआई एक्सटेंशन के साथ) वेब सर्वर को तब तक व्यस्त रखेंगे जब तक कि सीजीआई का निष्पादन समाप्त न हो जाए, जिससे सर्वर को अन्य सभी अनुरोधों को निलंबित करना पड़ेगा। दूसरी ओर, एसिंक्रोनस सीजीआई, सर्वर को चलने के दौरान भी अनुरोध स्वीकार करने की अनुमति देता है।

इनमें से किसी भी वेब सर्वर का उपयोग करने वाले मैकिंटोश सीजीआई डेवलपर को जब भी संभव हो .cgi एक्सटेंशन के बजाय .acgi एक्सटेंशन का उपयोग करना चाहिए। इसे अधिकांश सीजीआई कार्यक्रमों के साथ काम करना चाहिए; यदि यह काम नहीं करता है, तो प्रोग्राम का नाम बदलकर .cgi कर दें।

सीजीआई निष्पादन

एक बार जब आप सीजीआई स्थापित कर लेते हैं, तो इसे निष्पादित करने के कई तरीके होते हैं। यदि आपका सीजीआई एक आउटपुट-ओनली प्रोग्राम है, जैसे हैलो, वर्ल्ड!, तो आप बस इसके यूआरएल तक पहुंच कर इसे निष्पादित कर सकते हैं।

अधिकांश प्रोग्राम HTML फॉर्म में सर्वर एप्लिकेशन के रूप में चलते हैं। इन प्रपत्रों से जानकारी प्राप्त करने का तरीका सीखने से पहले, ऐसे प्रपत्र बनाने के बारे में एक संक्षिप्त परिचय पढ़ें।

HTML फॉर्म पर त्वरित ट्यूटोरियल

HTML फॉर्म में दो सबसे महत्वपूर्ण टैग टैग हैं

और . आप केवल इन दो टैग का उपयोग करके अधिकांश HTML फॉर्म बना सकते हैं। इस अध्याय में, आप इन टैगों और संभावित प्रकारों या विशेषताओं के एक छोटे उपसमूह का पता लगाएंगे। . संपूर्ण गाइड और HTML फॉर्म के लिंक के लिए, अध्याय 3, HTML और फॉर्म देखें।

टैग

टैग इसका उपयोग यह निर्धारित करने के लिए किया जाता है कि उपयोगकर्ता द्वारा दर्ज की गई जानकारी के लिए HTML फ़ाइल के किस भाग का उपयोग किया जाना चाहिए। यह संदर्भित करता है कि अधिकांश HTML पृष्ठ CGI प्रोग्राम को कैसे आमंत्रित करते हैं। टैग विशेषताएँ प्रोग्राम के नाम और स्थान को परिभाषित करती हैं - या तो स्थानीय रूप से या पूर्ण URL के रूप में, उपयोग किए गए एन्कोडिंग के प्रकार और प्रोग्राम द्वारा उपयोग की जाने वाली डेटा ट्रांसफर विधि।

अगली पंक्ति टैग के लिए विशिष्टताओं को दर्शाती है :

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

ENCTYPE विशेषता की कोई विशेष भूमिका नहीं होती है और आमतौर पर इसे टैग के साथ शामिल नहीं किया जाता है . ENCTYPE टैग पर विस्तृत जानकारी अध्याय 3 में दी गई है। ENCTYPE का उपयोग करने का एक तरीका अध्याय 14 "ब्रांड एक्सटेंशन" में दिखाया गया है।

ACTION विशेषता CGI प्रोग्राम के URL को संदर्भित करती है। उपयोगकर्ता द्वारा फॉर्म पूरा करने और जानकारी प्रदान करने के बाद, सभी जानकारी एन्कोड की जाती है और सीजीआई प्रोग्राम को भेज दी जाती है। सीजीआई कार्यक्रम सूचना को डिकोड करने और संसाधित करने का प्रश्न स्वयं तय करता है; इस पहलू को इस अध्याय में बाद में "ब्राउज़र इनपुट स्वीकार करना" में शामिल किया गया है।

अंत में, METHOD विशेषता बताती है कि CGI प्रोग्राम को इनपुट कैसे प्राप्त करना चाहिए। दो विधियाँ, GET और POST, CGI प्रोग्राम तक जानकारी कैसे पहुँचाई जाती हैं, इसमें भिन्नता है। दोनों की चर्चा "ब्राउज़र से इनपुट स्वीकार करना" में की गई है।

ब्राउज़र को उपयोगकर्ता इनपुट की अनुमति देने के लिए, सभी फॉर्म टैग और जानकारी टैग से घिरी होनी चाहिए . अंतिम टैग मत भूलना

फॉर्म के अंत को चिह्नित करने के लिए. आपके पास एक फॉर्म के भीतर एक फॉर्म नहीं हो सकता है, हालाँकि आप एक ऐसा फॉर्म सेट कर सकते हैं जो आपको जानकारी के टुकड़ों को विभिन्न स्थानों पर प्रस्तुत करने की अनुमति देता है; इस पहलू पर अध्याय 3 में विस्तार से चर्चा की गई है।

टैग

आप टैग का उपयोग करके टेक्स्ट इनपुट स्ट्रिप्स, रेडियो बटन, चेकबॉक्स और इनपुट स्वीकार करने के अन्य साधन बना सकते हैं . यह अनुभाग केवल टेक्स्ट इनपुट फ़ील्ड को कवर करता है। इस फ़ील्ड को लागू करने के लिए, टैग का उपयोग करें निम्नलिखित विशेषताओं के साथ:

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

NAME वेरिएबल का प्रतीकात्मक नाम है जिसमें उपयोगकर्ता द्वारा दर्ज किया गया मान शामिल है। यदि आप VALUE विशेषता में टेक्स्ट शामिल करते हैं, तो वह टेक्स्ट टेक्स्ट इनपुट फ़ील्ड में डिफ़ॉल्ट के रूप में रखा जाएगा। SIZE विशेषता आपको इनपुट फ़ील्ड की क्षैतिज लंबाई निर्दिष्ट करने की अनुमति देती है क्योंकि यह ब्राउज़र विंडो में दिखाई देगी। अंत में, MAXLENGTH निर्दिष्ट करता है कि उपयोगकर्ता फ़ील्ड में अधिकतम कितने वर्ण दर्ज कर सकता है। ध्यान दें कि मान, आकार, अधिकतम लंबाई विशेषताएँ वैकल्पिक हैं।

फॉर्म जमा करना

यदि आपके पास फॉर्म के भीतर केवल एक टेक्स्ट फ़ील्ड है, तो उपयोगकर्ता केवल कीबोर्ड पर जानकारी टाइप करके और एंटर दबाकर फॉर्म सबमिट कर सकता है। अन्यथा, उपयोगकर्ता के लिए जानकारी प्रस्तुत करने का कोई अन्य तरीका अवश्य होना चाहिए। उपयोगकर्ता निम्नलिखित टैग के साथ सबमिट बटन का उपयोग करके जानकारी सबमिट करता है:

< Input type=submit >

यह टैग आपके फॉर्म के अंदर एक सबमिट बटन बनाता है। जब उपयोगकर्ता फ़ॉर्म भरना समाप्त कर लेता है, तो वह सबमिट बटन पर क्लिक करके फ़ॉर्म की ACTION विशेषता द्वारा निर्दिष्ट URL पर अपनी सामग्री सबमिट कर सकता है।

ब्राउज़र से इनपुट स्वीकार करना

ऊपर सीजीआई प्रोग्राम लिखने के उदाहरण दिए गए थे जो सर्वर से ब्राउज़र तक जानकारी भेजता है। वास्तव में, एक सीजीआई प्रोग्राम जो केवल डेटा आउटपुट करता है, उसके कई अनुप्रयोग नहीं होते हैं (कुछ उदाहरण अध्याय 4 में दिए गए हैं)। सीजीआई की एक अधिक महत्वपूर्ण क्षमता ब्राउज़र से जानकारी प्राप्त करना है, एक ऐसी सुविधा जो वेब को इंटरैक्टिव बनाती है।

CGI प्रोग्राम ब्राउज़र से दो प्रकार की जानकारी प्राप्त करता है।

  • सबसे पहले, इसे ब्राउज़र के बारे में विभिन्न जानकारी मिलती है (इसका प्रकार, यह क्या ब्राउज़ कर सकता है, होस्ट होस्ट, और इसी तरह), सर्वर (इसका नाम और संस्करण, इसका निष्पादन पोर्ट, और इसी तरह), और सीजीआई प्रोग्राम स्वयं (प्रोग्राम का नाम और यह कहाँ स्थित है)। सर्वर यह सारी जानकारी पर्यावरण चर के माध्यम से सीजीआई प्रोग्राम को देता है।
  • दूसरा, सीजीआई प्रोग्राम उपयोगकर्ता द्वारा दर्ज की गई जानकारी प्राप्त कर सकता है। यह जानकारी, ब्राउज़र द्वारा एन्कोड किए जाने के बाद, या तो एक पर्यावरण चर (GET विधि) या मानक इनपुट (stdin POST विधि) के माध्यम से भेजी जाती है।

पर्यावरण चर

यह जानना उपयोगी है कि सीजीआई प्रोग्राम में सीखने और डिबगिंग दोनों के लिए कौन से पर्यावरण चर उपलब्ध हैं। तालिका 2.2 कुछ उपलब्ध सीजीआई पर्यावरण चर सूचीबद्ध करती है। आप एक सीजीआई प्रोग्राम भी लिख सकते हैं जो पर्यावरण चर और उनके मूल्यों को वेब ब्राउज़र पर आउटपुट करता है।

तालिका 2.2. कुछ महत्वपूर्ण सीजीआई पर्यावरण चर पर्यावरण परिवर्तनीय उद्देश्य REMOTE_ADDR क्लाइंट की मशीन का आईपी पता। क्लाइंट के मशीन होस्ट का REMOTE_HOST होस्ट। HTTP _ACCEPT उन MIME डेटा प्रकारों को सूचीबद्ध करता है जिनकी ब्राउज़र व्याख्या कर सकता है। HTTP _USER_AGENT ब्राउज़र जानकारी (ब्राउज़र प्रकार, संस्करण संख्या, ऑपरेटिंग सिस्टम, आदि)। REQUEST_METHOD प्राप्त करें या पोस्ट करें। CONTENT_LENGTH यदि POST के माध्यम से भेजा गया है तो इनपुट की लंबाई। यदि कोई इनपुट नहीं है या यदि GET विधि का उपयोग किया जाता है, तो यह पैरामीटर अपरिभाषित है। QUERY_STRING में GET विधि का उपयोग करके सबमिट किए जाने पर इनपुट जानकारी शामिल होती है। PATH_INFO उपयोगकर्ता को CGI कमांड लाइन से पथ निर्दिष्ट करने की अनुमति देता है (उदाहरण के लिए, http://hostname/cgi-bin/programname/path)। PATH_TRANSLATED PATH_INFO में एक सापेक्ष पथ को सिस्टम पर वास्तविक पथ में अनुवादित करता है।

पर्यावरण चर प्रदर्शित करने वाला सीजीआई एप्लिकेशन लिखने के लिए, आपको यह जानना होगा कि दो चीजें कैसे करें:

  • सभी पर्यावरण चर और उनके संबंधित मूल्यों को परिभाषित करें।
  • ब्राउज़र के लिए परिणाम प्रदर्शित करें.

आप पहले से ही जानते हैं कि अंतिम ऑपरेशन कैसे करना है। पर्ल में, पर्यावरण चर को %ENV एसोसिएटिव ऐरे में संग्रहीत किया जाता है, जिसे पर्यावरण चर के नाम से पेश किया जाता है। लिस्टिंग 2.3 में env.cgi, एक पर्ल प्रोग्राम शामिल है जो हमारे लक्ष्य को पूरा करेगा।

सूचीकरण 2.3. पर्ल प्रोग्राम, env.cgi, जो सभी सीजीआई पर्यावरण चर को आउटपुट करता है।

#!/usr/local/bin/perl print "सामग्री-प्रकार: text/html\n\n"; प्रिंट" \n";प्रिंट करें" सीजीआई पर्यावरण\n";प्रिंट करें"\n";प्रिंट करें" \n";प्रिंट करें"

सीजीआई पर्यावरण

\n"; foreach $env_var (कुंजियाँ %ENV) ( प्रिंट " $env_var= $ENV($env_var)
\n"; ) प्रिंट करें " \एन";

एक समान प्रोग्राम C में लिखा जा सकता है; पूरा कोड लिस्टिंग 2.4 में है।

सूची 2.4. सी में env.cgi.c. /* env.cgi.c */ #शामिल बाहरी चार **वातावरण; int मुख्य() ( char **p = वातावरण; printf("सामग्री-प्रकार: text/html\r\n\r\n"); printf(" \n"); प्रिंटफ(" सीजीआई पर्यावरण\n"); प्रिंटफ("\n"); प्रिंटफ(" \n"); प्रिंटफ("

सीजीआई पर्यावरण

\n"); while(*p != NULL) printf("%s
\n",*p++); प्रिंटफ(" \एन"); )

प्राप्त करें या पोस्ट करें?

GET और POST विधियों में क्या अंतर है? GET एन्कोडेड इनपुट स्ट्रिंग को QUERY_STRING पर्यावरण चर के माध्यम से पास करता है, जबकि POST इसे stdin के माध्यम से पास करता है। POST पसंदीदा विधि है, विशेष रूप से बड़ी मात्रा में डेटा वाले फ़ॉर्म के लिए, क्योंकि भेजी गई जानकारी की मात्रा पर कोई प्रतिबंध नहीं है, और GET विधि के साथ, मीडिया स्थान की मात्रा सीमित है। हालाँकि GET में एक विशिष्ट बात है उपयोगी संपत्ति; इसे अध्याय 5 इनपुट में विस्तार से शामिल किया गया है।

यह निर्धारित करने के लिए कि किस विधि का उपयोग किया जा रहा है, सीजीआई प्रोग्राम REQUEST_METHOD पर्यावरण चर की जांच करता है, जिसे GET या POST पर सेट किया जाएगा। यदि इसे POST पर सेट किया गया है, तो एन्कोडेड जानकारी की लंबाई CONTENT_LENGTH पर्यावरण चर में संग्रहीत की जाती है।

एन्कोडेड इनपुट

जब कोई उपयोगकर्ता कोई फॉर्म सबमिट करता है, तो ब्राउज़र पहले जानकारी को सर्वर पर भेजने से पहले एन्कोड करता है और फिर सीजीआई एप्लिकेशन को भेजता है। जब आप टैग का उपयोग करते हैं , प्रत्येक फ़ील्ड को एक प्रतीकात्मक नाम दिया गया है। उपयोगकर्ता द्वारा दर्ज किया गया मान वेरिएबल के मान के रूप में दर्शाया जाता है।

इसे निर्धारित करने के लिए, ब्राउज़र एक यूआरएल एन्कोडिंग विनिर्देश का उपयोग करता है, जिसे निम्नानुसार वर्णित किया जा सकता है:

  • एम्परसेंड (&) के साथ विभिन्न फ़ील्ड को अलग करता है।
  • नाम और मान को समान चिह्नों (=) से अलग करता है, जिसमें नाम बाईं ओर और मान दाईं ओर होता है।
  • रिक्त स्थान को धन चिह्न (+) से बदल देता है।
  • सभी "असामान्य" वर्णों को प्रतिशत चिह्न (%) से प्रतिस्थापित करता है और उसके बाद दो अंकों का हेक्साडेसिमल वर्ण कोड लगाता है।

आपकी अंतिम एन्कोडेड स्ट्रिंग इस तरह दिखेगी:

नाम1=मान1&नाम2=मान2&नाम3=मान3...

नोट: URL एन्कोडिंग के विनिर्देश RFC1738 में हैं।

उदाहरण के लिए, मान लें कि आपके पास एक फॉर्म है जिसमें नाम और उम्र पूछी गई है। इस फॉर्म को प्रदर्शित करने के लिए उपयोग किया गया HTML कोड लिस्टिंग 2.5 में दिखाया गया है।

सूचीकरण 2.5. नाम और आयु प्रपत्र प्रदर्शित करने के लिए HTML कोड।

नाम और उम्र

अपना नाम दर्ज करें:

अपनी आयु दर्ज करें:

मान लीजिए कि उपयोगकर्ता नाम फ़ील्ड में जो श्मो और आयु फ़ील्ड में 20 दर्ज करता है। इनपुट को इनपुट स्ट्रिंग में एन्कोड किया जाएगा।

नाम=जो+श्मो&उम्र=20

इनपुट पार्सिंग

इस जानकारी के उपयोगी होने के लिए, आपको उस जानकारी का उपयोग किसी ऐसी चीज़ पर करना होगा जिसका उपयोग आपके सीजीआई कार्यक्रमों द्वारा किया जा सके। अध्याय 5 में इनपुट पार्सिंग रणनीतियों पर चर्चा की गई है। व्यवहार में, आपको कभी भी यह नहीं सोचना होगा कि इनपुट को कैसे पार्स किया जाए, क्योंकि कई लोगों के पास पहले से ही लिखित लाइब्रेरी उपलब्ध हैं जो पार्सिंग करते हैं। इस अध्याय में निम्नलिखित अनुभागों में ऐसी दो लाइब्रेरी प्रस्तुत की गई हैं: पर्ल के लिए cgi-lib.pl (स्टीव ब्रेनर द्वारा लिखित) और C के लिए cgihtml (मेरे द्वारा लिखित)।

अधिकांश पुस्तकालयों का सामान्य लक्ष्य लिखा जाता है विभिन्न भाषाएँ, एन्कोडेड स्ट्रिंग को पार्स करना और नाम और मान जोड़े को डेटा संरचना में डालना है। ऐसी भाषा का उपयोग करने का एक स्पष्ट लाभ है जिसमें पर्ल जैसी अंतर्निहित डेटा संरचनाएं हैं; हालाँकि, निम्न-स्तरीय भाषाओं जैसे C और C++ के लिए अधिकांश पुस्तकालयों में डेटा संरचना और एक सबरूटीन का निष्पादन शामिल होता है।

पुस्तकालयों की पूरी समझ हासिल करना आवश्यक नहीं है; सीजीआई प्रोग्रामर के काम को आसान बनाने के लिए उन्हें टूल के रूप में कैसे उपयोग किया जाए, यह सीखना अधिक महत्वपूर्ण है।

cgi-lib.pl

Cgi-lib.pl पर्ल के सहयोगी सरणियों का उपयोग करता है। &ReadParse फ़ंक्शन इनपुट स्ट्रिंग को पार्स करता है और प्रत्येक नाम/मान जोड़ी को नाम से दर्ज करता है। उदाहरण के लिए, अभी प्रस्तुत "नाम/आयु" इनपुट स्ट्रिंग को डीकोड करने के लिए संबंधित पर्ल स्ट्रिंग्स की आवश्यकता होगी

&रीडपार्स(*इनपुट);

अब, "नाम" के लिए दर्ज किए गए मान को देखने के लिए, आप सहयोगी सरणी $input("name") का संदर्भ ले सकते हैं। इसी तरह, "आयु" मान को संदर्भित करने के लिए, आपको $input("आयु") वेरिएबल को देखना होगा।

cgihtml

C में कोई अंतर्निहित डेटा संरचना नहीं है, इसलिए cgihtml अपने CGI पार्सिंग रूटीन के साथ उपयोग के लिए अपनी स्वयं की लिंक सूची लागू करता है। यह एंट्रीटाइप संरचना को इस प्रकार परिभाषित करता है:

टाइपडेफ़ संरचना (चार *नाम; चार *मान; ) प्रवेश प्रकार;

Cgihtml का उपयोग करके C में इनपुट स्ट्रिंग "नाम / आयु" को पार्स करने के लिए, निम्नलिखित का उपयोग किया जाता है:

/* एक लिंक की गई सूची घोषित करें जिसे इनपुट कहा जाता है */ सूची इनपुट; /* इनपुट को पार्स करें और लिंक की गई सूची में रखें */ read_cgi_input(&input);

आयु संबंधी जानकारी तक पहुंचने के लिए, आप या तो सूची को मैन्युअल रूप से पार्स कर सकते हैं या दिए गए cgi _val() फ़ंक्शन का उपयोग कर सकते हैं।

#शामिल करना #शामिल करना चार * आयु = मॉलोक (आकार (चार) * स्ट्रलेन (सीजीआई _वैल (इनपुट, "आयु")) + 1); स्ट्रैपी(आयु, cgi_val(इनपुट, "उम्र"));

"आयु" मान अब आयु स्ट्रिंग में संग्रहीत है।

नोट: एक साधारण सरणी (जैसे चार आयु;) का उपयोग करने के बजाय, मैं आयु स्ट्रिंग के लिए गतिशील रूप से मेमोरी स्पेस आवंटित कर रहा हूं। हालाँकि यह प्रोग्रामिंग को जटिल बनाता है, फिर भी सुरक्षा की दृष्टि से यह महत्वपूर्ण है। अध्याय 9 में इस पर अधिक जानकारी।

एक सरल सीजीआई कार्यक्रम

आप nameage.cgi नामक एक CGI प्रोग्राम लिखने वाले हैं जो "नाम/आयु" फॉर्म को संभालता है। डेटा प्रोसेसिंग (जिसे मैं आमतौर पर "मध्यवर्ती सामग्री" कहता हूं) न्यूनतम है। Nameage.cgi बस इनपुट को डीकोड करता है और उपयोगकर्ता नाम और उम्र प्रदर्शित करता है। हालांकि ऐसे उपकरण के लिए विशेष रूप से उपयोगी नहीं है, यह सीजीआई प्रोग्रामिंग के सबसे महत्वपूर्ण पहलू को प्रदर्शित करता है: इनपुट और आउटपुट।

आप "नाम और आयु" फ़ील्ड को कॉल करते हुए, ऊपर बताए अनुसार उसी फॉर्म का उपयोग करें। मजबूती और दक्षता के बारे में अभी चिंता न करें; दी गई समस्या को सरलतम तरीके से हल करें। पर्ल और सी समाधान क्रमशः लिस्टिंग 2.6 और 2.7 में दिखाए गए हैं।

सूचीकरण 2.6. पर्ल में Nameage.cgi

#!/usr/local/bin/perl # nameage.cgi को "cgi-lib.pl" &ReadParse(*input); की आवश्यकता है; प्रिंट करें "सामग्री-प्रकार: text/html\r\n\r\n"; प्रिंट" \n";प्रिंट करें" नाम और उम्र\n";प्रिंट करें"\n";प्रिंट करें" \n"; प्रिंट करें "हैलो, " . $input("name") . ". आप\n" हैं; प्रिंट $input("आयु") . "वर्ष पुराना है।

\n";प्रिंट करें" \एन";

सूचीकरण 2.7. C में nameage.cgi

/* nameage.cgi.c */ #शामिल #शामिल "cgi-lib.h" int main() (सूची इनपुट; read_cgi_input(&input); printf("सामग्री-प्रकार: text/html\r\n\r\n"); printf(" \n"); प्रिंटफ(" नाम और उम्र\n"); प्रिंटफ("\n"); प्रिंटफ(" \n"); printf("हैलो, %s. आप\n",cgi_val(input,"name")); printf("%s वर्ष पुराने हैं।

\n",cgi_val(इनपुट,"आयु")); printf(" \एन"); )

ध्यान दें कि ये दोनों प्रोग्राम लगभग बराबर हैं। उन दोनों में पार्सिंग रूटीन शामिल हैं जो केवल एक पंक्ति लेते हैं और सभी इनपुट को संसाधित करते हैं (उपयुक्त लाइब्रेरी रूटीन के लिए धन्यवाद)। आउटपुट अनिवार्य रूप से आपके मुख्य हैलो, वर्ल्ड! प्रोग्राम का एक संशोधित संस्करण है।

फ़ॉर्म भरकर और सबमिट बटन पर क्लिक करके प्रोग्राम चलाने का प्रयास करें।

सामान्य प्रोग्रामिंग रणनीति

अब आप सीजीआई प्रोग्रामिंग के लिए आवश्यक सभी बुनियादी सिद्धांतों को जानते हैं। एक बार जब आप समझ जाते हैं कि सीजीआई जानकारी कैसे प्राप्त करता है और इसे ब्राउज़र में कैसे वापस भेजता है, तो आपके अंतिम उत्पाद की वास्तविक गुणवत्ता आपकी सामान्य प्रोग्रामिंग क्षमता पर निर्भर करती है। अर्थात्, जब आप सीजीआई (या उस मामले में कुछ भी) प्रोग्रामिंग कर रहे हों, तो निम्नलिखित गुणों को ध्यान में रखें:

  • सादगी
  • क्षमता
  • बहुमुखी प्रतिभा

पहले दो गुण काफी सामान्य हैं: अपने कोड को यथासंभव पठनीय और कुशल बनाने का प्रयास करें। बहुमुखी प्रतिभा अन्य अनुप्रयोगों की तुलना में सीजीआई कार्यक्रमों पर अधिक लागू होती है। जब आप अपना स्वयं का सीजीआई कार्यक्रम विकसित करना शुरू करते हैं, तो आप पाएंगे कि कुछ बुनियादी अनुप्रयोग हैं जिन्हें हर कोई बनाना चाहता है। उदाहरण के लिए, सीजीआई प्रोग्राम के सबसे आम और स्पष्ट कार्यों में से एक फॉर्म को संसाधित करना और परिणामों को एक विशिष्ट प्राप्तकर्ता को ई-मेल करना है। आपके पास कई अलग-अलग प्रस्तुत किए गए फॉर्म हो सकते हैं, जिनमें से प्रत्येक का प्राप्तकर्ता अलग होगा। प्रत्येक व्यक्तिगत फॉर्म के लिए एक सीजीआई प्रोग्राम लिखने के बजाय, आप एक अधिक सामान्य सीजीआई प्रोग्राम लिखकर समय बचा सकते हैं जो सभी फॉर्मों के लिए उपयुक्त हो।

सीजीआई के सभी बुनियादी पहलुओं को कवर करके, मैंने आपको सीजीआई प्रोग्रामिंग शुरू करने के लिए पर्याप्त जानकारी प्रदान की है। हालाँकि, एक प्रभावी सीजीआई डेवलपर बनने के लिए, आपको इस बात की गहरी समझ होनी चाहिए कि सीजीआई सर्वर और ब्राउज़र के साथ कैसे संचार करता है। इस पुस्तक के शेष भाग में उन मुद्दों पर विस्तार से चर्चा की गई है जिनका इस अध्याय में संक्षेप में उल्लेख किया गया था, साथ ही अनुप्रयोग विकास रणनीतियों, प्रोटोकॉल के फायदे और सीमाएं भी।

सारांश

इस अध्याय में सीजीआई प्रोग्रामिंग की मूल बातें संक्षेप में शामिल की गई हैं। आप अपने डेटा को ठीक से फ़ॉर्मेट करके और स्टडआउट पर प्रिंट करके आउटपुट बनाते हैं। सीजीआई इनपुट प्राप्त करना थोड़ा अधिक जटिल है क्योंकि इसका उपयोग करने से पहले इसे पार्स किया जाना चाहिए। सौभाग्य से, पहले से ही कई पुस्तकालय हैं जो पार्सिंग करते हैं।

को वर्तमान क्षणआपको सीजीआई अनुप्रयोगों की प्रोग्रामिंग में काफी सहज होना चाहिए। इस पुस्तक का शेष भाग अधिक उन्नत और जटिल अनुप्रयोगों के लिए विनिर्देशों, संकेतों और प्रोग्रामिंग रणनीतियों की अधिक विस्तृत प्रस्तुति के लिए समर्पित है।

30 में से पृष्ठ 1

आज, अतिथि पुस्तक, सर्वर खोज, संदेश भेजने का फ़ॉर्म जैसी चीज़ें लगभग किसी भी गंभीर साइट की एक अनिवार्य विशेषता हैं। इन और अन्य घंटियों और सीटियों को पेश करने की समस्या, निश्चित रूप से, हर तरह से एक नौसिखिया वेबमास्टर की कल्पना को उत्तेजित करती है, उसे नींद, भूख और बीयर की लालसा से वंचित करती है। दुर्भाग्य से, प्रतिस्पर्धियों के पृष्ठों के HTML-स्रोतों का अध्ययन एक निश्चित "सीजीआई-बिन" के लिंक के अलावा कुछ भी नहीं देता है, और यहां तक ​​कि समाचार समूहों में भी कभी-कभी कुछ प्रकार की सीजीआई-स्क्रिप्ट का उल्लेख होता है। यह लेख आपकी साइट की महिमा और समृद्धि के लिए इन्हीं सीजीआई स्क्रिप्ट का उपयोग करने की बुनियादी बातों के लिए समर्पित है।

आरंभ करने के लिए, मुझे लगता है कि हमें अवधारणाओं को समझने की आवश्यकता है। सीजीआई स्क्रिप्ट एक प्रोग्राम है जो क्लाइंट (यानी, एक वेब साइट विज़िटर) के अनुरोध पर वेब सर्वर पर चलता है। यह प्रोग्राम मूल रूप से आपके कंप्यूटर पर इंस्टॉल होने वाले सामान्य प्रोग्राम से अलग नहीं है - चाहे वह एमएस वर्ड हो या क्वेक गेम। सीजीआई कोई प्रोग्रामिंग भाषा नहीं है जिसमें स्क्रिप्ट लिखी जाती है, बल्कि कॉमन गेटवे इंटरफ़ेस एक विशेष इंटरफ़ेस है जिसके साथ स्क्रिप्ट लॉन्च की जाती है और उसके साथ इंटरैक्ट किया जाता है।

सीजीआई के बारे में संक्षिप्त विषयांतर

तो क्या है सीजीआई- स्क्रिप्ट और आम तौर पर इसी तरह की चीजें। आइए इस तथ्य से शुरू करें कि आपका ब्राउज़र (जब आपने टाइप किया था यूआरएल) प्रोटोकॉल के अनुसार जुड़ा हुआ है एचटीटीपीनिर्दिष्ट सर्वर के साथ और उससे वांछित फ़ाइल मांगता है, कुछ इस तरह:

/~paaa/cgi-bin/guestbbok.cgi HTTP/1.0 प्राप्त करें-यह अनुरोध में सबसे महत्वपूर्ण बात है

खैर, उदाहरण के लिए, यदि एक साधारण फ़ाइल का अनुरोध किया जाता है .htmlफिर यदि ऐसी कोई फ़ाइल है, तो सर्वर ब्राउज़र को एक प्रतिक्रिया भेजेगा:

HTTP/1.0 200 ठीक है
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल

आगे खाली लाइन के बाद (इसे अलग करना जरूरी है हैडरसे शरीर) से जानकारी मिलती है यूआरएल"ए ...
मूलतः बस इतना ही www.... आप एक लिंक से दूसरे लिंक पर जाते हैं....
लेकिन क्या होगा यदि आपको इस नीरस प्रक्रिया में कुछ लाने की आवश्यकता हो वास्तव मेंइंटरैक्टिव, गतिशील, सुंदर और शानदार....? खैर, इस सवाल का जवाब है. बस क्या होगा अगर अनुरोध में यूआरएलएक विशेष कार्यक्रम निर्दिष्ट करें ( सीजीआई,कार्यक्रम कॉमन गेटवे इंटरफ़ेस - कॉमन गेटवे इंटरफ़ेस) और तथ्य यह है कि यह प्रोग्राम कुछ जारी करेगा और इसे ब्राउज़र पर भेजेगा.... सर्वर प्रारंभ होता है .cgiप्रोग्राम और, उदाहरण के लिए, फॉर्म डेटा को संसाधित करने के बाद, यह आपको अपने डेटाबेस में कहीं प्रवेश करता है, और आपको बताता है आप बड़े आदमी हैं :)
अच्छा, मुझे आशा है कि मैंने आपकी रुचि जगाई होगी......?

लिखने के लिए आपको क्या जानने की आवश्यकता है इसके बारे में संक्षिप्त जानकारी सीजीआईस्क्रिप्ट: ठीक है, सबसे पहले, आपको यह जानना होगा कि क्या इंटरनेटऔर यह कैसे काम करता है (क्या आप जानते हैं? ;))) ) ठीक है, थोड़ा प्रोग्रामिंग कौशल (यह सबसे महत्वपूर्ण बात है)
आइए मिलकर कुछ सरल स्क्रिप्ट लिखें और फिर मैं आपको बताऊंगा कि कुत्ता यहां कहां-कहां घूमता रहा...
खैर, सबसे पहले अपनी होम डायरेक्टरी में एक डायरेक्टरी बनाएं सीजीआई-बिन:

सीडी public_html
एमकेडीआईआर सीजीआई-बिन
चामोद 0777 सीजीआई-बिन

अंतिम पंक्ति बहुत महत्वपूर्ण होगी.
एक संपादक लें और टाइप करें: #!/usr/bin/perl
#प्रथम.सीजीआई
प्रिंट करें "सामग्री-प्रकार: text/html\n\n";
प्रिंट" ";
प्रिंट"

कैसे हो तुम!!!

";
प्रिंट "";

इसे निर्देशिका में सहेजें सीजीआई-बिननाम के तहत प्रथम.सीजीआई.खैर, आपने इसे कैसे बचाया?
और अब इसे निष्पादन योग्य बनाएं (आखिरकार, यह एक प्रोग्राम है):

चामोद +x प्रथम.सीजीआई

खैर, हम उस महत्वपूर्ण क्षण के करीब पहुंच रहे हैं.... ब्राउज़र लाइन में टाइप करें http://www.uic.nnov.ru/~your_login/cgi-bin/first.cgi
और देखो क्या होता है. दो चीजों में से एक होगी, या तो स्क्रिप्ट काम करेगी और आप इसके द्वारा उत्पन्न पेज देखेंगे (बधाई हो, यह हमारे शेल्फ में आ गया है!) या आंतरिक सर्वर त्रुटितो चिंता न करें, आपने कुछ गलत किया है। फिर आपको पिस्सू पकड़ने के लिए एक गाइड की आवश्यकता होगी। खैर, सबसे पहले, सिंटैक्स जांच निम्नानुसार की जा सकती है:

पर्ल-सी फर्स्ट.सीजीआई

पर्ल तुरंत आपको त्रुटि संदेश देगा (ठीक है, ऐसा होता है कि आप अर्धविराम चूक गए, आप कोष्ठक या उद्धरण बंद करना भूल गए ...) इसे तुरंत ठीक किया जा सकता है।
अधिक तार्किक रूप से अपरिष्कृत खाली लाइन के आउटपुट को छोड़ना है जो हेडर को मुख्य भाग से अलग करता है:
प्रिंट करें "सामग्री-प्रकार: text/html\n\n"; #सब कुछ सही है
प्रिंट करें "सामग्री-प्रकार: text/html\n"; #गलती!!!

आइए स्क्रिप्ट का विश्लेषण करें:
पहली पंक्ति #!/usr/bin/perlयह बस निर्दिष्ट करता है कि पर्ल सिस्टम पर कहाँ स्थित है। दूसरा सिर्फ एक टिप्पणी है - आप संकेत के बाद कुछ भी प्रहार कर सकते हैं #
फिर आता है प्रिंट करें "सामग्री-प्रकार: text/html\n\n";यह एक हेडर है जो सामग्री के प्रकार को दर्शाता है जिसे स्क्रिप्ट अपने मानक आउटपुट STDOUT पर प्रिंट करती है जो प्रसंस्करण के लिए सर्वर पर जाती है। एक खाली रेखा हेडर को मुख्य भाग से अलग करती है, जो हमारे मामले में है

कैसे हो तुम!!!



सर्वर स्क्रिप्ट की प्रतिक्रिया को संसाधित करेगा और, इसके आधार पर, ब्राउज़र को प्रतिक्रिया उत्पन्न करेगा और भेजेगा। (सर्वर आमतौर पर संदेश का मुख्य भाग नहीं बदलता है, यह केवल HTTP प्रोटोकॉल के लिए आवश्यक फ़ील्ड के साथ हेडर को पूरक करता है)

खैर, बुनियादी बातों पर पहले ही महारत हासिल हो चुकी है, सब कुछ उतना कठिन और निराशाजनक नहीं है जितना पहले लग सकता है
अब आप ऐसी सरल स्क्रिप्ट्स को अपने हाथ में लेने के लिए स्वयं लिखने का अभ्यास कर सकते हैं।

एंडोवर, मैसाचुसेट्स, 19 नवंबर, 2003

कॉमर्स ग्रुप, इंक. (एनवाईएसई: सीजीआई), मैसाचुसेट्स और सीजीआई ग्रुप इंक में निजी यात्री ऑटोमोबाइल बीमा का सबसे बड़ा लेखक। (सीजीआई) (टीएसएक्स: जीआईबी.ए; एनवाईएसई: जीआईबी;), सूचना प्रौद्योगिकी और व्यवसाय प्रसंस्करण सेवाओं के अग्रणी प्रदाता, ने आज 35 मिलियन अमेरिकी डॉलर मूल्य के छह साल के बिजनेस प्रोसेस आउटसोर्सिंग (बीपीओ) अनुबंध नवीनीकरण पर हस्ताक्षर करने की घोषणा की। सीजीआई मैसाचुसेट्स निजी यात्री और वाणिज्यिक ऑटोमोबाइल लाइनों के लिए पूर्ण नीति प्रसंस्करण सेवाएं प्रदान करेगा और साथ ही सीजीआई की कोलैबोरेटिवएज एजेंसी इंटरफ़ेस टूल, एप्लिकेशन समर्थन और रखरखाव, नियामक समर्थन, सिस्टम परामर्श और दस्तावेज़ प्रबंधन सेवाएं भी प्रदान करेगा।

कॉमर्स ग्रुप के कार्यकारी उपाध्यक्ष और सीएफओ गेराल्ड फेल्स ने कहा: "मैसाचुसेट्स में निजी यात्री ऑटोमोबाइल के अग्रणी प्रदाता के रूप में, हमारा लक्ष्य हमारे एजेंटों और कर्मचारियों को ऐसी सेवाएं प्रदान करना है जो उन्हें अपने उच्चतम स्तर पर प्रदर्शन करने में मदद करते हैं। पिछले कुछ वर्षों में हमने सीजीआई के साथ मजबूत संबंध बनाए हैं। उनका सिस्टम मजबूत और सटीक है और उनकी टीम हमारी आंतरिक प्रसंस्करण प्रणालियों से बहुत परिचित है। यह हमारे लिए महत्वपूर्ण है।"

सीजीआई के लिए बीमा व्यवसाय सेवाओं के अध्यक्ष, सर्ज लापाल्मे ने कहा: "हम वाणिज्य समूह के साथ अपने रिश्ते को जारी रखते हुए बहुत खुश हैं, जो 30 वर्षों से अधिक पुराना है। वाणिज्य समूह हमारे मूल्यवान व्यापार भागीदारों में से एक बना हुआ है और रणनीतिक है हमारी सफलता। अपने ग्राहकों को उनके मुख्य व्यवसाय पर ध्यान केंद्रित करने में मदद करने के लिए, हम नई प्रौद्योगिकियों का लाभ उठा रहे हैं जब और जहां यह समझ में आता है। हमारी टीम बीमा उद्योग और राज्य के बहुत ही अनूठे नियामक वातावरण को गहराई से जानती है और परिणामस्वरूप तेजी से अनुकूलन करती है इस लगातार विकसित हो रहे क्षेत्र के लिए मौजूदा समाधान।"

कॉमर्स ग्रुप, इंक. के बारे में

कॉमर्स ग्रुप, इंक., एक बीमा होल्डिंग कंपनी, का मुख्यालय वेबस्टर, मैसाचुसेट्स में है। कॉमर्स ग्रुप की संपत्ति और हताहत बीमा सहायक कंपनियों में मैसाचुसेट्स में द कॉमर्स इंश्योरेंस कंपनी और साइटेशन इंश्योरेंस कंपनी, कैलिफोर्निया में कॉमर्स वेस्ट इंश्योरेंस कंपनी और ओहियो में अमेरिकन कॉमर्स इंश्योरेंस कंपनी शामिल हैं। अपनी सहायक कंपनियों की संयुक्त बीमा गतिविधियों के माध्यम से, कॉमर्स ग्रुप को 22 वें सबसे बड़े व्यक्तिगत के रूप में स्थान दिया गया है। देश में ऑटोमोबाइल बीमा समूह द्वारा ए.एम. सर्वोत्तम, 2002 की प्रत्यक्ष लिखित प्रीमियम जानकारी पर आधारित।

सीजीआई के बारे में
1976 में स्थापित, सीजीआई अपने कर्मचारियों की संख्या के आधार पर उत्तरी अमेरिका में पांचवीं सबसे बड़ी स्वतंत्र सूचना प्रौद्योगिकी सेवा फर्म है। सीजीआई और इसकी संबद्ध कंपनियां 20,000 पेशेवरों को रोजगार देती हैं। सीजीआई का वार्षिक राजस्व रन-रेट वर्तमान में सीडीएन$2.8 बिलियन (यूएस$1.9 बिलियन) है और 30 सितंबर, 2003 को, सीजीआई का ऑर्डर बैकलॉग सीडीएन$12.3 बिलियन (यूएस$9.1 बिलियन) था। सीजीआई कनाडा, संयुक्त राज्य अमेरिका और यूरोप के कार्यालयों से दुनिया भर में ग्राहकों को एंड-टू-एंड आईटी और बिजनेस प्रोसेस सेवाएं प्रदान करता है। सीजीआई के शेयर टीएसएक्स (जीआईबी.ए) और एनवाईएसई (जीआईबी) पर सूचीबद्ध हैं और टीएसएक्स 100 कंपोजिट इंडेक्स के साथ-साथ एसएंडपी/टीएसएक्स कनाडाई सूचना प्रौद्योगिकी और कनाडाई मिडकैप इंडेक्स में शामिल हैं। वेबसाइट:।

समझने योग्य रूसी में ई-कॉमर्स। इंटरनेट पर व्यवसाय कैसे चलता है?

हाल ही में, ऑनलाइन कॉमर्स से संबंधित अधिक से अधिक परियोजनाएँ सामने आई हैं। इस दिशा का अध्ययन करते हुए, मुझे प्रक्रिया का सामान्य और समझने योग्य विवरण नहीं मिला। इसलिए, मैंने एक चीट शीट जैसा कुछ बनाने का फैसला किया, जिसे आप ई-कॉमर्स जैसे क्षेत्र में प्रक्रिया को समझने के लिए हमेशा देख सकते हैं।

मैं तुरंत आरक्षण कर दूँगा कि मैंने उन प्रक्रियाओं और चैनलों पर ध्यान केंद्रित किया है जो ग्राहकों को लाने में मदद करते हैं।

ई-कॉमर्स: यह किस बारे में है?

विभिन्न स्रोतों से प्राप्त परिभाषाएँ इंटरनेट पर सामान या सेवाएँ बेचने के बारे में कुछ कहती हैं। सरल शब्दों में, ई-कॉमर्स नेटवर्क पर कोई भी गतिविधि है जहां पैसा दिखाई देता है।

खरीदारी, बिक्री, बीमा, बैंकिंग, इलेक्ट्रॉनिक पैसा, सब कुछ यहाँ है। लो, इस पर हस्ताक्षर कर दो।

लक्ष्य से

मुद्दे को समझने के लिए, मैं यात्रा को बिल्कुल अंत से शुरू करने का प्रस्ताव करता हूं। किसी भी व्यवसाय का लक्ष्य क्या है? यह सही है, पैसा कमाओ। तो, किसी भी उत्पाद की कल्पना करें, उदाहरण के लिए, सिलिकॉन मोज़े। क्यों नहीं!

मेरे मन में जो पहली बात आई, वह समझ में आई, पता चला कि यह है...

हमारा काम इन मोज़ों से पैसा कमाना है। हम इंटरनेट के बारे में सोचते हैं. हम्म...क्यों न साइट को "काट" दिया जाए और इस तरह बिक्री होगी, बस मुझे मालदीव में ही रहने दो! लेकिन, सब कुछ इतना सरल नहीं है.

मुझे वास्तव में चित्र बनाना पसंद है। यह विभिन्न प्रक्रियाओं को समझने में मदद करता है। आओ बनाते हैं?!

अब तक हमारा मॉडल इस तरह दिखता है। हम मोज़े लेते हैं, उन्हें इंटरनेट पर डालते हैं और पैसे प्राप्त करते हैं। यह बहुत बढ़िया है! आंखें जल रही हैं, हथेलियों में पसीना आ रहा है और मैं पहले से ही यह व्यवसाय करना चाहता हूं। लेकिन आपको बिक्री के लिए एक वेबसाइट या प्लेटफ़ॉर्म बनाने की ज़रूरत है?

बिक्री के लिए वेबसाइट या प्लेटफ़ॉर्म

खाओ विभिन्न समाधानअपने उत्पाद को वर्ल्ड वाइड वेब पर रखने के लिए। आप अपनी खुद की वेबसाइट बना सकते हैं या तीसरे पक्ष की साइटों (समूह, सोशल नेटवर्क में पेज, बुलेटिन बोर्ड आदि) का उपयोग कर सकते हैं। आइए साइट पर रुकें।

उन्होंने एक वेबसाइट का ऑर्डर दिया, एक तैयार टेम्पलेट लिया, या कंस्ट्रक्टर का उपयोग करके इसे स्वयं बनाया (सीएमएस को गूगल पर खोजा जा सकता है), इससे कोई फर्क नहीं पड़ता। फिर उन्होंने विभिन्न प्रकार के सिलिकॉन मोज़ों का एक गुच्छा रखा और खुश हैं।

मेरे पढ़ने में बाधा डालने के लिए मुझे क्षमा करें। मेरे साथ जुड़ें टेलीग्राम चैनल. लेखों की ताज़ा घोषणाएँ, डिजिटल उत्पादों का विकास और विकास हैक, सब कुछ है। आपका इंतजार! हम जारी रखते हैं ...

भुगतान प्रणाली

लेकिन किसी व्यक्ति को यहीं और अभी आपसे खरीदारी करने में सक्षम बनाने के लिए, भुगतान प्रणालियों में बदलाव करना आवश्यक होगा। यह एक प्रकार की सेवा है जो आपको बैंक कार्ड, इंटरनेट मनी, के माध्यम से ऑनलाइन खरीदारी करने की अनुमति देती है। सेल फोनऔर बहुत सारा ढेर सारा। इसके लिए आपको लेन-देन का एक प्रतिशत हिस्सा साझा करना होगा, लेकिन इस तरह आप अपने जीवन को काफी सरल बना लेंगे।

वह सेवा चुनें जो आपके लिए उपयुक्त हो. कहीं अधिक प्रतिशत होगा, और कहीं ग्राहक या कुछ और। बस प्रश्न पर थोड़ा शोध करें। साइट पर अपने लिए आवश्यक कोड डालें, सभी लेन-देन को अपने कार्ड खाते से लिंक करें और वॉइला!

यही सब प्रतीत होगा. एक वेबसाइट है, उत्पाद कार्ड हैं, और यहां तक ​​कि "खरीदें" बटन भी काम करता है, लेकिन कुछ गायब है... ऐसे ग्राहकों का कोई प्रवाह नहीं है जो खरीदेंगे।

ग्राहक प्रवाह

कहां: सीएसी = नई ग्राहक अधिग्रहण लागत। एमसीसी (मार्केटिंगअभियान लागत) = ग्राहकों को प्राप्त करने (लेकिन बनाए रखने के लिए नहीं) के लिए मार्केटिंग खर्च की कुल लागत। डब्ल्यू (मजदूरी) = विपणक और बिक्री प्रबंधकों के लिए वेतन। एस (सॉफ़्टवेयर) = विज्ञापन और बिक्री में उपयोग किए जाने वाले सॉफ़्टवेयर की लागत (जैसे बिक्री प्लेटफ़ॉर्म, मार्केटिंग ऑटोमेशन, ए/बी परीक्षण, एनालिटिक्स सेवाएँ, आदि)। पीएस (पेशेवर सेवाएं) = विपणन और बिक्री विभागों (डिजाइन, परामर्श, आदि) को प्रदान की जाने वाली पेशेवर सेवाओं की लागत। ओ (अन्य) = विपणन और बिक्री विभागों से संबंधित अन्य ओवरहेड। सीए (प्राप्त ग्राहक) = अर्जित ग्राहकों की कुल संख्या।

लेकिन हमें ग्राहक की गुणवत्ता के बारे में नहीं भूलना चाहिए, एलटीवी यहां मदद करेगा।

महत्वपूर्ण संकेतक: एलटीवी

लाइव टाइम वैल्यू, ग्राहक जीवनचक्र, विचार करने योग्य एक और ई-कॉमर्स मीट्रिक है। इससे पता चलता है कि एक ग्राहक औसतन कितनी आय लाता है। गणना के लिए अलग-अलग दृष्टिकोण हैं, मैंने वास्तविक लाभ को सबसे सटीक में से एक के रूप में चुना।

यह प्रत्येक व्यक्तिगत ग्राहक के लिए कुल खरीद इतिहास राजस्व का योग है। सभी ग्राहक खरीद (लेन-देन) का योग लेनदेन एन में जोड़ें, जहां लेनदेन एन आपकी कंपनी में ग्राहक द्वारा की गई आखिरी खरीदारी है। यदि आपके पास सभी ग्राहक लेनदेन डेटा तक पहुंच है, तो आप एक्सेल का उपयोग करके आसानी से इसकी गणना कर सकते हैं।

एलटीवी = (लेन-देन 1 + लेन-देन 2 + लेन-देन 3… + लेन-देन एन) x राजस्व में लाभ का हिस्सा।

शुद्ध आय के आधार पर एलटीवी की गणना अंततः उस वास्तविक लाभ को दर्शाती है जो ग्राहक आपकी कंपनी को लाता है। यहां ग्राहक सेवा की लागत, प्रतिधारण की लागत, अधिग्रहण की लागत आदि को ध्यान में रखा जाता है। परिणाम व्यक्तिगत डेटा पर आधारित गणनाओं का एक संपूर्ण परिसर है। समय के साथ किसी एकल ग्राहक द्वारा उत्पन्न संचयी लाभ आपको आज तक अपने ग्राहकों की लाभप्रदता की सटीक समझ देगा।

अन्य दृष्टिकोण यहां पाए जा सकते हैं।

महत्वपूर्ण मेट्रिक्स: सीएसी से एलटीवी अनुपात

किसी व्यवसाय की व्यवहार्यता को समझने के लिए, उल्लिखित दो सीएसी:एलटीवी मेट्रिक्स के अनुपात को देखना बहुत महत्वपूर्ण है।

  • 1:1 से कम - आप दिवालियापन की ओर बढ़ रहे हैं।
  • 1:1 - आप प्रत्येक आकर्षित ग्राहक पर पैसा खो देते हैं।
  • 1:2 - सुनने में अच्छा लगता है, लेकिन ऐसा लगता है कि आप पर्याप्त निवेश नहीं कर रहे हैं और तेजी से बढ़ सकते हैं। अधिक आक्रामक ग्राहक अधिग्रहण अभियान लॉन्च करें और लगभग 1:3 अनुपात प्राप्त करें।
  • 1:3 - आदर्श अनुपात। आपके पास एक फलता-फूलता व्यवसाय और एक मजबूत व्यवसाय मॉडल है।

महत्वपूर्ण संकेतक: आरओआई को भुलाया नहीं गया है

जैसा कि हमने ऊपर चर्चा की, ई-कॉमर्स में यह स्पष्ट रूप से समझना आवश्यक है कि अधिग्रहण चैनल का उपयोग करना लाभदायक है या नहीं। एलटीवी और सीएसी के अलावा, एक और महत्वपूर्ण संकेतक है, यह आरओआई है। यह दर्शाता है कि विज्ञापन में हमारे मामले में आपका निवेश सफल हुआ या नहीं। वह है। अंत में 1 निवेशित रूबल हमें कितना लेकर आया।

गणना के लिए, एक बहुत ही सरल सूत्र का उपयोग किया जाता है:

जहां "अभियान राजस्व" चैनल राजस्व और आपके उत्पाद की लागत के बीच का अंतर है। और लाभ की गणना करने के लिए, अधिक विज्ञापन लागत घटाएँ।

इस प्रकार, अधिक विस्तृत सूत्र इस प्रकार दिखेगा:

आरओआई = (चैनल राजस्व - लागत) - विज्ञापन लागत / विज्ञापन लागत x 100%

गणना के साथ अधिक विस्तृत उदाहरण पढ़ें. वास्तव में, यह सरल सूत्र सभी को एक ही एक्सेल तालिका में रखा गया है, जहां हर चीज की गणना स्वचालित रूप से की जाती है।

हमने जिन तीन संकेतकों का विश्लेषण किया है वे ई-कॉमर्स में महत्वपूर्ण हैं। उनमें से प्रत्येक आपको अपनी धाराओं में बाधाओं को ढूंढने और उनके साथ काम करने की अनुमति देता है। यह उनमें है कि व्यवसाय के लिए विकास की संभावना निहित है। मैंने मोज़े के साथ हमारे मॉडल में थोड़ा और जोड़ा।

हर चीज को एक सामग्री में फिट करना संभव नहीं है, और इसे इतने लंबे समय तक कौन पढ़ेगा? बाद में मैं ई-कॉमर्स की उन बारीकियों पर एक अलग गाइड बनाऊंगा जो बिक्री में बाधा डाल सकती हैं।

कुल

सामान्य तौर पर, अब आपको ऑनलाइन ट्रेडिंग या ई-कॉमर्स की सामान्य समझ हो गई है। इसके अलावा, जैसा कि वे कहते हैं: "शैतान विवरण में है।" प्रत्येक चैनल का अलग से अध्ययन करें, प्रदर्शन संकेतकों की गणना करें और विवरण में नई अंतर्दृष्टि देखें। आपको इंटरनेट बिक्री, हाँ और अधिक! और एक बात मेरी ओर से.

हाँ, मैं लगभग भूल ही गया था, प्रिय पाठकों, आपको नव वर्ष की शुभकामनाएँ! मैं आने वाले वर्ष में आपकी शानदार जीत और उपलब्धियों की कामना करता हूँ!

 

यदि यह उपयोगी रहा हो तो कृपया इस लेख को सोशल मीडिया पर साझा करें!