Comerț nelimitat cgi. E-Commerce - ce este? E-Commerce Partners Network este un program de afiliere al celor mai mari magazine online. Instalarea CGI pe Macintosh

Comerț electronic în limba rusă clară. Cum funcționează afacerea online?

În ultimul timp, au apărut tot mai multe proiecte legate de tranzacționarea online. În timp ce studiam această zonă, nu am putut găsi o descriere generală și de înțeles a procesului. Prin urmare, am decis să fac ceva de genul unui cheat sheet la care să te poți referi oricând pentru a înțelege procedura într-o zonă precum comerțul electronic.

Voi face imediat o rezervare pe care m-am concentrat pe procesele și canalele care ajută la atragerea de clienți.

E-commerce: despre ce este vorba?

Definițiile din diverse surse spun ceva despre vânzarea de bunuri sau servicii prin internet. Cu cuvinte simple, comerțul electronic este orice activitate online în care apar bani.

Cumpărături, vânzări, asigurări, servicii bancare, bani electronici, totul este aici. Luați-l și semnați-l.

De la țintă

Pentru a înțelege problema, vă sugerez să începeți calea de la capăt. Care este scopul oricărei afaceri? Așa e, fă bani. Deci, imaginați-vă orice produs, de exemplu, șosete din silicon. De ce nu!

Am luat primul lucru care mi-a venit în minte, s-a dovedit că era așa ceva...

Sarcina noastră este să facem bani cu acești șosete. Ne gândim la internet. Hmm... de ce să nu construiești un site web și așa vor merge vânzările, păstrează-mă în Maldive! Dar nu este atât de simplu.

Îmi place foarte mult să desenez. Acest lucru ajută la înțelegerea diferitelor procese. Hai sa desenam?!

Până acum modelul nostru arată așa. Luăm șosete, le punem pe internet și luăm bani. Acesta este pur și simplu grozav! Îți ard ochii, îți transpiră palmele și deja vrei să te apuci de treabă. Dar trebuie să faci un site web sau o platformă de vânzări?

Site sau platformă de vânzare

Există diverse soluții pentru plasarea produsului dvs. pe World Wide Web. Puteți să vă creați propriul site web sau să utilizați platforme terțe (grupuri, pagini de pe rețelele sociale, panouri de mesaje etc.). Să ne oprim pe site.

Ați comandat un site web, ați luat un șablon gata făcut sau l-ați creat singur folosind un generator de site-uri web (puteți căuta pe google CMS), nu contează. Apoi au pus o grămadă de șosete din silicon de diferite tipuri și au fost fericiți.

Îmi pare rău că întrerup lectura. Alăturați-vă canalului meu Telegram. Anunțuri noi de articole, dezvoltare de produse digitale și hack de creștere, totul este acolo. Te aştept! Hai sa continuăm...

Sisteme de plată

Dar pentru ca o persoană să cumpere de la tine aici și acum, va fi necesar să modifici sistemele de plată. Acesta este un fel de serviciu care vă permite să faceți cumpărături online prin: carduri bancare, bani pe internet, telefoane mobile și o grămadă de alte lucruri. Pentru asta va trebui să împărțiți un procent din tranzacții, dar astfel îți vei face viața mult mai ușoară.

Alege serviciul care ti se potriveste. Undeva procentul va fi mai mare, iar undeva va fi un abonament sau altceva. Fă doar puțină cercetare. Pune codul necesar pe site-ul tău web, conectează toate tranzacțiile la contul tău de card și voila!

Asta ar părea să fie tot. Există un site web, și carduri de produse și chiar și butonul „cumpără” funcționează, dar lipsește ceva... Nu există un flux de clienți care vor cumpăra.

Fluxurile de clienți

Unde: CAC = Costul achiziției unui nou client. MCC (costurile campaniei de marketing) = Costul total al cheltuielilor de marketing care vizează atragerea clienților (dar nu păstrarea acestora). W (salarii) = Salariul pentru marketeri și managerii de vânzări. S (software) = Costul software-ului utilizat în publicitate și vânzări (de exemplu, platforma de vânzări utilizată, automatizarea marketingului, testarea A/B, serviciile de analiză etc.). PS (professionalservices) = Costul serviciilor profesionale oferite departamentelor de marketing și vânzări (design, consultanță etc.). O (altele) = Alte costuri generale legate de departamentele de marketing și vânzări. CA (clienți achiziționați) = Numărul total de clienți atrași.

Dar nu trebuie să uităm de calitatea clientului; LTV va ajuta aici.

Valori importante: LTV

Live Time Value, ciclul de viață al clientului, este un alt indicator în comerțul electronic care trebuie luat în considerare. Arată cât de mult venituri aduce un client în medie. Există diferite abordări ale calculului, eu am ales-o pe cea reală bazată pe profit, ca una dintre cele mai exacte.

Aceasta este pur și simplu suma veniturilor totale de-a lungul întregului istoric de achiziții pentru fiecare client individual. Adăugați suma tuturor achizițiilor (tranzacțiilor) clienților la tranzacția N, unde tranzacția N este ultima achiziție efectuată de client cu compania dvs. Dacă aveți acces la toate datele privind tranzacțiile clienților, atunci puteți calcula cu ușurință acest lucru folosind Excel.

LTV = (tranzacția 1 + tranzacția 2 + tranzacția 3... + tranzacția N) x cota de profit în venituri.

Calcularea LTV pe baza profitului net arată în cele din urmă profitul real pe care un client îl aduce companiei dumneavoastră. Aceasta ia în considerare costul serviciului pentru clienți, costul reținerii, costul atracției etc. Rezultatul este un întreg complex de calcule bazate pe date individuale. Profitul total generat per client de-a lungul timpului vă va oferi o înțelegere exactă a profitabilității clienților dvs. până în prezent.

Alte abordări pot fi găsite la.

Indicatori importanți: raportul CAC și LTV

Pentru a înțelege viabilitatea unei afaceri, este foarte important să ne uităm la raportul dintre cele două rapoarte CAC:LTV menționate.

  • Mai puțin de 1:1 - Te grăbești cu viteză maximă către faliment.
  • 1:1 – Pierzi bani pentru fiecare client atras.
  • 1:2 – Pare bine, dar se pare că nu investești destui bani și te-ai putea dezvolta mai repede. Lansați campanii mai agresive de achiziție de clienți și obțineți rate apropiate de 1:3.
  • 1:3 – Raport ideal. Ai o afacere înfloritoare și un model de afaceri puternic.

Indicatori importanți: ROI nu uitați

După cum am discutat mai sus, în comerțul electronic trebuie să înțelegeți clar dacă este profitabil să folosiți un canal de achiziție sau nu. Pe lângă LTV și CAC, există un alt indicator important: ROI. Arată dacă investiția dvs., în cazul nostru în publicitate, a dat roade. Acesta este. cât ne-a adus până la urmă 1 rublă investită.

Pentru calcul se folosește o formulă foarte simplă:

Unde „Venitul campaniei” este diferența dintre venitul din canal și costul produsului dvs. Iar pentru a calcula profitul, scade costurile de publicitate.

Astfel, o formulă mai detaliată ar arăta astfel:

ROI = (Venit canal – Cost) – Cheltuieli de publicitate / Cheltuieli de publicitate x 100%

Citiți un exemplu mai detaliat cu calcul. De fapt, această formulă simplă este plasată în același tabel Excel, unde totul este calculat automat.

Toți cei trei indicatori despre care am discutat sunt importanți în comerțul electronic. Fiecare dintre ele vă permite să găsiți blocaje în fluxurile dvs. și să lucrați cu ele. Aici se află potențialul de creștere pentru afaceri. Am mai adăugat puțin la modelul nostru cu șosete.

Este imposibil să încadrezi totul într-un singur material și cine îl va citi atât de mult timp? Mai târziu voi face un ghid separat despre nuanțele comerțului electronic care pot interfera cu vânzările.

Total

În general, acum aveți o înțelegere generală a comerțului online sau a comerțului electronic. Mai mult, după cum se spune: „Diavolul este în detalii”. Studiați fiecare canal separat, calculați indicatorii de performanță și căutați noi perspective în lucrurile mărunte. Vânzări pe internet pentru tine și multe altele! Și mai am un material.

Da, aproape că am uitat, La mulți ani, dragi cititori! Îți doresc mari victorii și realizări anul viitor!

Andover, Massachusetts, 19 noiembrie 2003

The Commerce Group, Inc. (NYSE: CGI), cel mai mare scriitor de asigurări private auto pentru pasageri din Massachusetts și CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), un furnizor de top de tehnologia informației și servicii de procesare a afacerilor, a anunțat astăzi semnarea unui contract de externalizare a proceselor de afaceri (BPO) pe șase ani, în valoare de 35 milioane USD. CGI va oferi servicii complete de procesare a politicilor pentru liniile private de pasageri și de automobile comerciale din Massachusetts, precum și instrumentul de interfață al agenției CollaborativeEdge al CGI, asistență și întreținere pentru aplicații, suport de reglementare, consultanță de sisteme și servicii de gestionare a documentelor.

Gerald Fels, vicepreședinte executiv și CFO al Commerce Group, a declarat: „În calitate de furnizor principal de automobile private pentru pasageri din Massachusetts, scopul nostru este să oferim agenților și angajaților noștri servicii care să îi ajute să performanțeze la cel mai înalt nivel. De-a lungul anilor, am promovat o relație puternică cu CGI. Sistemul lor este robust și precis, iar echipa lor este foarte familiarizată cu sistemele noastre interne de procesare. Este important pentru noi.”

Serge LaPalme, președinte, servicii de afaceri de asigurări pentru CGI, a adăugat: „Suntem foarte încântați să continuăm relația noastră cu Commerce Group, una care se întinde pe peste 30 de ani. Commerce Group continuă să fie unul dintre partenerii noștri de afaceri valoroși și este strategic pentru succesul nostru. Ajutându-ne clientul să se concentreze în continuare asupra activității lor de bază, profităm de noile tehnologii atunci când și unde are sens. Echipa noastră cunoaște în detaliu industria asigurărilor și mediul de reglementare unic al statului și, prin urmare, este rapid pentru a adapta soluțiile existente la acest sector în continuă evoluție.”

Despre The Commerce Group, Inc.

The Commerce Group, Inc., un holding de asigurări, are sediul în Webster, Massachusetts. Filialele de asigurări de bunuri și accidente ale Commerce Group includ The Commerce Insurance Company și Citation Insurance Company din Massachusetts, Commerce West Insurance Company din California și American Commerce Insurance Company din Ohio. Prin activitățile de asigurare combinate ale filialelor sale, Commerce Group este clasat pe locul 22. cel mai mare grup de asigurări auto personale din țară de către A.M. Cel mai bun, bazat pe informațiile premium scrise directe din 2002.

Despre CGI
Fondată în 1976, CGI este a cincea cea mai mare firmă independentă de servicii de tehnologie a informației din America de Nord, pe baza numărului de angajați. CGI și companiile sale afiliate angajează 20.000 de profesioniști. Veniturile anuale ale CGI sunt în prezent de 2,8 miliarde USD (1,9 miliarde USD), iar la 30 septembrie 2003, stocul de comenzi CGI era de 12,3 miliarde USD (9,1 miliarde USD). CGI oferă servicii IT end-to-end și procese de afaceri clienților din întreaga lume, din birouri din Canada, Statele Unite și Europa. Acțiunile CGI sunt listate la TSX (GIB.A) și NYSE (GIB) și sunt incluse în Indicele Compozit TSX 100, precum și în Indicii Canadian Information Technology S&P/TSX și Canadian MidCap. Website: .

2012: Achiziționarea British Logica

În iunie 2012, CGI Group a anunțat că a semnat un acord pentru achiziționarea celui mai mare integrator european de sisteme Logica. Valoarea tranzacției este de 2,8 miliarde de dolari canadieni (2,7 miliarde de dolari). Ca parte a acordurilor încheiate, CGI a fost de asemenea de acord să-și asume obligații de rambursare a datoriei Logica în valoare de 515 milioane USD.

Pentru a finanța tranzacția, CGI intenționează să strângă 1 miliard de dolari canadieni prin emiterea a 46,7 milioane de acțiuni suplimentare, să împrumute 2 miliarde de dolari canadieni de la Canadian Imperial Bank of Commerce, National Bank of Canada și The Toronto-Dominion Bank și aproximativ 650 de milioane de canadieni. dolari mai mult.dolari – în cadrul liniei de credit curente.

Prețul propus pe acțiune a fost cu 59,8% mai mare decât prețul de închidere al Logica la 30 mai 2012. Tranzacția reprezintă de aproximativ 6,6 ori câștigul Logica înainte de dobânzi, taxe, depreciere și amortizare (EBITDA) pentru anul. Perioada de 12 luni încheiată la 31 decembrie 2011

Achiziția Logica va crește profitul pe acțiune al CGI cu 25% până la 30%, excluzând costurile de achiziție și integrare. Ca urmare a fuziunii, forța de muncă a companiei rezultate și veniturile anuale vor fi mai mult decât duble față de cele ale CGI. Dimensiunea personalului companiei combinate va fi de aproximativ 72 de mii de angajați situate în birouri din 43 de țări, iar veniturile anuale vor fi de aproximativ 10,4 miliarde de dolari canadieni (9,6 miliarde de dolari).

Noua companie va fi a șasea ca mărime dintre consultanții IT din lume. Cele mai mari dintre acestea sunt IBM, Accenture, Cap Gemini, Tata Consultancy și Infosys, potrivit estimărilor Reuters.

„Logica este o companie lider de afaceri și servicii tehnologice, cu profesioniști dedicați și clienți de încredere, pe termen lung”, a declarat președintele și CEO-ul CGI, Michael Roach. „Suntem încrezători că facem ceea ce trebuie.” Prin achiziționarea Logica, o achiziționăm la prețul potrivit și la momentul potrivit pentru a crea unul dintre puținii cei mai mari furnizori independenți de servicii tehnologice end-to-end.”

Consiliul de administrație al CGI a aprobat în unanimitate tranzacția. Este planificat să fie finalizat până în septembrie 2012, după primirea aprobării acționarilor și după procedurile standard. Procesul de integrare a companiei este planificat să fie finalizat în termen de 3 ani

Datorită World Wide Web, aproape oricine poate oferi informații online într-o formă care este ușor pentru ochi și poate fi diseminată pe scară largă. Fără îndoială că ai navigat pe Internet și ai văzut alte site-uri, iar acum probabil știi că acronimele înfricoșătoare precum „HTTP” și „HTML” sunt pur și simplu prescurtarea pentru „Web” și „modul în care informațiile sunt exprimate pe Internet”. Este posibil să aveți deja ceva experiență în prezentarea de informații pe Internet.

Internetul s-a dovedit a fi un mediu ideal pentru distribuirea informațiilor, așa cum se poate observa din popularitatea sa enormă și dezvoltarea pe scară largă. Deși unii au pus sub semnul întrebării utilitatea Internetului și atribuie dezvoltarea și popularitatea lui pe scară largă în principal publicității intruzive, Internetul este, fără îndoială, un mediu important pentru prezentarea tuturor tipurilor de informații. Nu numai că există multe servicii disponibile pentru a furniza informații actualizate (știri, vreme, evenimente sportive în direct) și materiale de referință pe cale electronică, există și cantități semnificative de alte tipuri de date disponibile. IRS, care a distribuit toate formularele sale de declarații fiscale din 1995 și alte informații prin World Wide Web, a recunoscut recent că a primit e-mailuri de la fani pentru site-ul său web. Cine ar fi crezut că IRS-ul va primi vreodată e-mailuri ale fanilor? Acest lucru nu a fost pentru că site-ul său a fost bine conceput, ci pentru că se dovedise a fi un instrument cu adevărat util pentru mii, poate milioane, de oameni.

Ce face Web-ul unic și un serviciu de informare atât de atractiv? În primul rând, oferă o interfață hipermedia pentru date. Gândiți-vă la hard diskul computerului dvs. De obicei, datele sunt exprimate liniar, similar unui sistem de fișiere. De exemplu, aveți un număr de foldere, iar în interiorul fiecărui folder există fie documente, fie alte foldere. Web-ul folosește o paradigmă diferită pentru a exprima informații numită hipermedia. O interfață hipertext constă dintr-un document și legături. Link-urile sunt cuvinte pe care se face clic pentru a vedea alte documente sau pentru a găsi alte tipuri de informații. Web-ul extinde conceptul de hipertext pentru a include alte tipuri de media, cum ar fi grafica, sunete, video (de unde și denumirea de „hipermedia”). Selectarea textului sau a graficelor pe un document vă permite să vedeți informații legate de elementul selectat în orice număr de formulare.

Aproape oricine poate beneficia de acest mod simplu și unic de prezentare și distribuire a informațiilor, de la cadrele universitare care doresc să folosească imediat datele cu colegii lor până la oamenii de afaceri care împărtășesc informații despre compania lor cu toată lumea. Cu toate acestea, deși oferirea de informații este extrem de importantă, în ultimii câțiva ani mulți au considerat că primirea informațiilor este un proces la fel de important.

Deși Web-ul oferă o interfață hipermedia unică pentru informații, există multe alte modalități eficiente de distribuire a datelor. De exemplu, servicii de rețea precum File Transfer Protocol (FTP) și grupul de știri Gopher existau cu mult înainte de World Wide Web. Poșta electronică a fost mijlocul principal de comunicare și schimb de informații pe Internet și pe majoritatea celorlalte rețele aproape încă de la începutul acestor rețele. De ce a devenit Internetul o modalitate atât de populară de distribuire a informațiilor? Aspectul multimedia al Internetului a contribuit în mod semnificativ la succesul său fără precedent, dar pentru ca Internetul să fie cel mai eficient, trebuie să fie interactiv.

Fără capacitatea de a primi intrarea utilizatorului și de a furniza informații, Web-ul ar fi un mediu complet static. Informațiile ar fi disponibile numai în formatul specificat de autor. Acest lucru ar submina una dintre capacitățile computerului în general: informațiile interactive. De exemplu, în loc să forțezi utilizatorul să vadă mai multe documente ca și cum ar fi căutat printr-o carte sau un dicționar, ar fi mai bine să îi permiti utilizatorului să identifice cuvinte cheie pe un subiect de interes. Utilizatorii pot personaliza prezentarea datelor mai degrabă decât să se bazeze pe o structură rigidă definită de furnizorul de conținut.

Termenul „server web” poate induce în eroare deoarece se poate referi atât la mașina fizică, cât și la software-ul pe care îl folosește pentru a comunica cu browserele de internet. Când un browser solicită o anumită adresă Web, se conectează mai întâi la aparat prin Internet, trimițând software-ului serverului Web o solicitare pentru document. Acest software rulează continuu, așteptând astfel de solicitări să sosească și răspunzând în consecință.

Deși serverele pot trimite și primi date, serverul în sine are funcționalități limitate. De exemplu, cel mai primitiv server poate trimite doar fișierul necesar către browser. De obicei, serverul nu știe ce să facă cu aceasta sau acea intrare suplimentară. Dacă ISP-ul nu spune serverului cum să gestioneze aceste informații suplimentare, cel mai probabil serverul va ignora intrarea.

Pentru ca serverul să poată efectua și alte operațiuni în afară de căutarea și trimiterea de fișiere către browserul de internet, trebuie să știți cum să extindeți funcționalitatea serverului. De exemplu, un server Web nu poate căuta într-o bază de date pe baza unui cuvânt cheie introdus de un utilizator și nu poate returna mai multe documente potrivite decât dacă o astfel de capacitate a fost programată în server într-un fel.

Ce este CGI?

Common Gateway Interface (CGI) este o interfață către server care vă permite să extindeți funcționalitatea serverului. Folosind CGI, puteți interacționa interactiv cu utilizatorii care vă accesează site-ul. La nivel teoretic, CGI permite serverului să fie capabil să analizeze (interprete) intrarea din browser și să returneze informații în funcție de intrarea utilizatorului. La nivel practic, CGI este o interfață care permite unui programator să scrie programe care comunică ușor cu un server.

De obicei, pentru a extinde capacitățile serverului, va trebui să modificați singur serverul. Această soluție este nedorită deoarece necesită înțelegerea stratului inferior al programării rețelei Internet Protocol. Acest lucru ar necesita, de asemenea, editarea și recompilarea codului sursă al serverului sau scrierea unui server personalizat pentru fiecare sarcină. Să presupunem că doriți să extindeți capacitățile serverului, astfel încât să acționeze ca un gateway Web-to-e-mail, luând informațiile introduse de utilizator din browser și trimițându-le prin e-mail unui alt utilizator. Serverul ar trebui să insereze cod pentru a analiza intrarea din browser, să-l redirecționeze prin e-mail către celălalt utilizator și să redirecționeze răspunsul înapoi către browser prin conexiunea de rețea.

În primul rând, o astfel de sarcină necesită acces la codul serverului, ceea ce nu este întotdeauna posibil.

În al doilea rând, este dificil și necesită cunoștințe tehnice extinse.

În al treilea rând, acest lucru se aplică doar unui anumit server. Dacă trebuie să vă mutați serverul pe o altă platformă, va trebui să rulați sau cel puțin să petreceți mult timp cu portarea codului pe platforma respectivă.

De ce CGI?

CGI oferă o soluție portabilă și simplă la aceste probleme. Protocolul CGI definește o modalitate standard prin care programele pot comunica cu un server Web. Fără cunoștințe speciale, puteți scrie un program în orice limbaj de mașină care interfață și comunică cu serverul Web. Acest program va funcționa cu toate serverele Web care înțeleg protocolul CGI.

Comunicarea CGI se realizează folosind intrarea și ieșirea standard, ceea ce înseamnă că dacă știi să tipăriți și să citiți datele folosind limbajul de programare, puteți scrie o aplicație de server Web. În afară de analizarea intrărilor și ieșirii, programarea aplicațiilor CGI este aproape echivalentă cu programarea oricărei alte aplicații. De exemplu, pentru a programa programul „Hello, World!”, utilizați funcțiile de imprimare ale limbajului dvs. și formatul definit pentru programele CGI pentru a imprima mesajul corespunzător.

Selectarea unui limbaj de programare

Deoarece CGI este o interfață universală, nu sunteți limitat la niciun limbaj de mașină specific. O întrebare importantă care se pune adesea este: ce limbaje de programare pot fi folosite pentru programarea CGI? Puteți utiliza orice limbă care vă permite să faceți următoarele:

  • Imprimați la ieșire standard
  • Citiți din intrarea standard
  • Citiți din moduri variabile

Aproape toate limbajele de programare și multe limbaje de scripting fac aceste trei lucruri și puteți folosi oricare dintre ele.

Limbile se încadrează în una dintre următoarele două clase: traduse și interpretate. O limbă tradusă, cum ar fi C sau C++, este de obicei mai mică și mai rapidă, în timp ce limbile interpretate precum Perl sau Rexx necesită uneori încărcarea unui interpret mare la pornire. În plus, puteți distribui coduri binare (cod care se traduce în limbajul mașinii) fără cod sursă dacă limba dvs. este traducabilă. Distribuirea de scripturi interpretabile înseamnă de obicei distribuirea codului sursă.

Înainte de a alege o limbă, trebuie mai întâi să vă luați în considerare prioritățile. Trebuie să cântăriți beneficiile vitezei și eficienței unui limbaj de programare față de ușurința de programare a altuia. Dacă doriți să învățați o altă limbă, în loc să o folosiți pe cea pe care o cunoașteți deja, cântăriți cu atenție avantajele și dezavantajele ambelor limbi.

Cele două limbaje cele mai frecvent utilizate pentru programarea CGI sunt C și Perl (ambele sunt tratate în această carte). Ambele au avantaje și dezavantaje clare. Perl este un limbaj de nivel foarte înalt și, în același timp, un limbaj puternic, potrivit în special pentru analizarea textului. Deși ușurința sa de utilizare, flexibilitatea și puterea îl fac un limbaj atractiv pentru programarea CGI, dimensiunea relativ mare și funcționarea mai lentă îl fac uneori nepotrivit pentru unele aplicații. Programele C sunt mai mici, mai eficiente și oferă un control de sistem de nivel inferior, dar sunt mai complexe de programat, nu au rutine de procesare a textului încorporate și sunt mai dificil de depanat.

Care limbaj este cel mai potrivit pentru programarea CGI? Cel pe care îl consideri mai convenabil din punct de vedere al programării. Ambele sunt la fel de eficiente pentru programarea aplicațiilor CGI și, cu bibliotecile adecvate, ambele au capacități similare. Cu toate acestea, dacă aveți un server greu accesibil, puteți utiliza programe mai mici, traduse în C. Dacă aveți nevoie să scrieți rapid o aplicație care necesită multă muncă de procesare a textului, puteți utiliza în schimb Perl.

Atenționări

Există câteva alternative importante la aplicațiile CGI. Multe servere includ acum programare API, ceea ce facilitează programarea extensiilor directe de server, spre deosebire de aplicațiile CGI independente. Serverele API sunt în general mai eficiente decât programele CGI. Alte servere includ funcționalități încorporate care pot gestiona elemente speciale non-CGI, cum ar fi legarea bazelor de date. În cele din urmă, unele aplicații pot fi gestionate de unele tehnologii noi la nivelul clientului (mai degrabă decât partea serverului), precum Java. Cu schimbări atât de rapide în tehnologie, CGI va deveni rapid învechit?

Cu greu. CGI are mai multe avantaje față de tehnologiile mai noi.

  • Este versatil și portabil. Puteți scrie o aplicație CGI folosind aproape orice limbaj de programare pe orice platformă. Unele dintre alternative, cum ar fi API-ul serverului, vă limitează la anumite limbi și sunt mult mai dificil de învățat.
  • Este puțin probabil ca tehnologiile client-side, cum ar fi Java, să înlocuiască CGI, deoarece există unele aplicații pe care aplicațiile server-side sunt mult mai potrivite pentru a le rula.
  • Multe dintre limitările CGI sunt limitări ale HTML sau HTTP. Pe măsură ce standardele Internet în ansamblu evoluează, la fel evoluează și capabilitățile CGI.

rezumat

Common Gateway Interface este protocolul prin care programele interacționează cu serverele Web. Versatilitatea CGI oferă programatorilor posibilitatea de a scrie programe gateway în aproape orice limbă, deși există multe compromisuri asociate cu diferite limbi. Fără această abilitate, crearea de pagini Web interactive ar fi dificilă, în cel mai bun caz necesită modificări de server, iar interactivitatea ar fi indisponibilă pentru majoritatea utilizatorilor care nu sunt administratori de site.

Capitolul 2: Bazele

Acum câțiva ani, am creat o pagină pentru o facultate de la Harvard, unde oamenii puteau trimite comentarii despre ei. La acea vreme, internetul era tânăr și documentația era puțină. Eu, ca mulți alții, m-am bazat pe scurte documentații și sisteme de programare create de alții pentru a mă învăța programarea CGI. Deși această metodă de studiu a necesitat câteva căutări, multe experimente și a creat multe întrebări, a fost foarte eficientă. Acest capitol este rezultatul muncii mele timpurii cu CGI (cu câteva modificări, desigur).

Deși este nevoie de ceva timp pentru a înțelege și stăpâni pe deplin interfața gateway comună, protocolul în sine este destul de simplu. Oricine are niște abilități de programare de bază și este familiarizat cu Web-ul poate învăța rapid să programeze aplicații CGI destul de complexe, așa cum am învățat eu și alții să facă acum câțiva ani.

Scopul acestui capitol este de a prezenta elementele de bază ale CGI într-un mod cuprinzător, deși condensat. Fiecare concept discutat aici este prezentat în detaliu în capitolele următoare. Cu toate acestea, după finalizarea acestui capitol, puteți începe imediat programarea aplicațiilor CGI. Odată ce ați atins acest nivel, puteți învăța complexitățile CGI, fie citind restul acestei cărți, fie pur și simplu experimentând pe cont propriu.

Puteți reduce programarea CGI la două sarcini: primirea informațiilor din browser-ul Web și trimiterea informațiilor înapoi către browser. Acest lucru se face destul de intuitiv odată ce vă familiarizați cu utilizarea normală a aplicațiilor CGI. Adesea, utilizatorului i se cere să completeze un formular, de exemplu, să-și introducă numele. Odată ce utilizatorul completează formularul și apasă Enter, aceste informații sunt trimise programului CGI. Programul CGI trebuie apoi să transforme aceste informații în ceva pe care îl înțelege, să le prelucreze în consecință și apoi să le trimită înapoi în browser, fie că este o simplă confirmare sau rezultatul unei căutări într-o bază de date multifuncțională.

Cu alte cuvinte, programarea CGI necesită înțelegerea modului de primire a intrărilor din browserul de Internet și a modului de trimitere înapoi. Ce se întâmplă între etapele de intrare și de ieșire ale unui program CGI depinde de scopul dezvoltatorului. Veți descoperi că principala dificultate în programarea CGI constă în această etapă intermediară; Odată ce înveți cum să lucrezi cu intrare și ieșire, asta este în esență suficient pentru a deveni un dezvoltator CGI.

În acest capitol, veți învăța principiile din spatele intrării și ieșirii CGI, precum și alte abilități de bază de care veți avea nevoie pentru a scrie și utiliza CGI, inclusiv lucruri precum crearea de formulare HTML și denumirea programelor dvs. CGI. Acest capitol acoperă următoarele subiecte:

  • Program tradițional „Hello, World!”;
  • Ieșire CGI: Trimiterea informațiilor înapoi pentru afișare într-un browser de Internet;
  • Configurarea, instalarea și rularea aplicației. Veți afla despre diferite platforme și servere Web;
  • Intrare CGI: Interpretarea informațiilor trimise de browserul Web. Introducere în câteva biblioteci de programare utile pentru analizarea unei astfel de intrări;
  • Un exemplu simplu: acoperă toate lecțiile dintr-un anumit capitol;
  • Strategia de programare.

Datorită naturii acestui capitol, abordez puțin doar unele subiecte. Nu vă faceți griji; Toate aceste subiecte sunt tratate mult mai în profunzime în alte capitole.

Salut Lume!

Începeți cu o problemă de programare introductivă tradițională. Veți scrie un program care afișează „Hello, World!” pe browserul dvs. Web. Înainte de a scrie acest program, trebuie să înțelegeți ce informații se așteaptă să primească browserul Web de la programele CGI. De asemenea, trebuie să știți cum să rulați acest program pentru a-l putea vedea în acțiune.

CGI este independent de limbă, așa că puteți implementa acest program în orice limbă. Mai multe limbi diferite sunt folosite aici pentru a demonstra independența fiecărei limbi. În Perl, programul „Hello, World!” prezentate în Lista 2.1.

Lista 2.1. Salut Lume! în Perl. #!/usr/local/bin/perl # Hello.cgi - Primul meu program CGI imprimă „Content-Type: text/html\n\n”; imprimare " \n"; imprima " Salut Lume!"; imprimare "\n"; imprima " \n"; imprima "

Salut Lume!

\n"; imprima "

\n";

Salvați acest program ca hello.cgi și instalați-l în locația potrivită. (Dacă nu sunteți sigur unde se află, nu vă faceți griji; veți afla în secțiunea „Instalarea și rularea unui program CGI” mai târziu în acest capitol.) Pentru majoritatea serverelor, directorul de care aveți nevoie este cgi-bin . Acum, apelați programul din browserul dvs. web. Pentru majoritatea, aceasta înseamnă deschiderea următorului local de resurse uniform (URL):

http://hostname/directoryname/hello.cgi

Hostname este numele serverului dvs. Web, iar directoryname este directorul în care ați pus hello.cgi (probabil cgi-bin).

Împărțirea hello.cgi

Există câteva lucruri de reținut despre hello.cgi.

În primul rând, utilizați comenzi simple de imprimare. Programele CGI nu necesită descriptori de fișiere speciali sau descriptori de ieșire. Pentru a trimite rezultate către browser, pur și simplu imprimați în stdout.

În al doilea rând, rețineți că conținutul primei declarații de tipărire (Content-Type: text/html) nu apare în browserul dvs. Web. Puteți trimite orice informații doriți înapoi către browser (pagină HTML, grafică sau sunet), dar mai întâi trebuie să spuneți browserului ce fel de date îi trimiteți. Această linie îi spune browserului la ce fel de informații să se aștepte - în acest caz, o pagină HTML.

În al treilea rând, programul se numește hello.cgi. Nu trebuie să utilizați întotdeauna extensia .cgi cu numele programului dvs. CGI. Deși codul sursă pentru multe limbi folosește și extensia .cgi, nu este folosit pentru a indica tipul de limbă, ci este o modalitate prin care serverul poate identifica fișierul ca fișier executabil, mai degrabă decât ca fișier grafic, fișier HTML sau fisier text. Serverele sunt adesea configurate pentru a încerca doar să execute acele fișiere care au această extensie, afișând conținutul tuturor celorlalte. Deși utilizarea extensiei .cgi nu este necesară, este totuși considerată o bună practică.

În general, hello.cgi constă din două părți principale:

  • spune browserului la ce informații să se aștepte (Tip de conținut: text/html)
  • spune browserului ce să afișeze (Bună ziua, lume!)

Salut Lume! în C

Pentru a arăta independența de limbă a programelor CGI, Lista 2.2 arată echivalentul programului hello.cgi scris în C.

Lista 2.2. Salut Lume! în C. /* hello.cgi.c - Hello, World CGI */ #include int main() ( printf("Tip de conținut: text/html\r\n\r\n"); printf(" \n"); printf(" Salut Lume!\n"); printf("\n"); printf(" \n"); printf("

Salut Lume!

\n"); printf("

\n"); )

Notă

Rețineți că versiunea Perl a hello.cgi folosește tipărirea conținutului „: text/html\n\n”; În timp ce versiunea C folosește Printf("Content-Type: text/html\r\n\r\n");

De ce Perl imprimă operatorul care se termină cu două linii noi (\n) în timp ce C printf se termină cu două întoarceri de cărucior și linii noi (\r\n)?

Din punct de vedere tehnic, anteturile (toate ieșirile înainte de linia goală) sunt de așteptat să fie separate prin întoarceri de cărucior și linii noi. Din păcate, pe mașinile DOS și Windows, Perl se traduce \r ca o altă linie nouă, mai degrabă decât ca o întoarcere de cărucior.

Deși excepția Perl este incorectă din punct de vedere tehnic, va funcționa pe aproape toate protocoalele și este la fel de portabilă pe toate platformele. Prin urmare, în toate exemplele Perl din această carte, folosesc mai degrabă anteturile de separare a liniei noi decât retururile și liniile noi.

O soluție adecvată la această problemă este prezentată în Capitolul 4, Concluzie.

Nici serverului web și nici browserului nu îi pasă ce limbă este folosită pentru a scrie programul. Deși fiecare limbă are avantaje și dezavantaje ca limbaj de programare CGI, cel mai bine este să utilizați limbajul cu care vă simțiți cel mai confortabil să lucrați. (Alegerea limbajului de programare este discutată mai detaliat în Capitolul 1, „Interfața comună Gateway (CGI)”).

Redare CGI

Acum puteți arunca o privire mai atentă asupra problemei trimiterii de informații către browserul web. Din exemplul „Bună ziua, lume!”, puteți vedea că browserele web se așteaptă la două seturi de date: un antet, care conține informații precum informațiile de afișat (de exemplu, Tipul conținutului: linie) și informații reale (ce este browserul web). afișează). Aceste două informații sunt separate printr-o linie goală.

Antetul se numește antet HTTP. Oferă informații importante despre informațiile pe care browserul le va primi. Există mai multe tipuri diferite de anteturi HTTP, iar cel mai comun este cel pe care l-ați folosit anterior: Tipul conținut: antet. Puteți utiliza diferite combinații de anteturi HTTP, separate prin returnări de transport și linii noi (\r\n). Linia goală care separă antetul de date constă, de asemenea, dintr-o întoarcere de transport și o linie nouă (de ce sunt necesare ambele este discutat pe scurt în nota precedentă și detaliat în Capitolul 4). Veți afla despre alte anteturi HTTP în Capitolul 4; În prezent, aveți de-a face cu Content-Type: header.

Content-Type: antetul descrie tipul de date pe care le returnează CGI. Formatul potrivit pentru acest antet este:

Content-Type: subtip/tip

Unde subtipul/tipul este tipul corect de extensii de poștă Internet multifuncțională (MIME). Cel mai comun tip MIME este tipul HTML: text/html. Tabelul 2.1 listează câteva tipuri MIME mai comune care vor fi discutate; O listă și o analiză mai completă a tipurilor MIME sunt furnizate în Capitolul 4.

Notă

MIME a fost inventat inițial pentru a descrie conținutul corpurilor de mesaje de e-mail. A devenit o modalitate destul de comună de a reprezenta informațiile tip conținut. Puteți citi mai multe despre MIME în RFC1521. RFC-urile de pe Internet reprezintă Cereri de comentarii, care sunt rezumate ale deciziilor luate de grupuri de pe Internet care încearcă să stabilească standarde. Puteți vizualiza rezultatele RFC1521 la următoarea adresă: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabelul 2.1. Unele tipuri MIME comune. Tip MIME Descriere Text/html Hypertext Markup Language (HTML) Text/plain Fișiere text simplu Imagine/gif Fișiere grafice GIF Imagine/jpeg Fișiere grafice comprimate JPEG Fișiere audio/de bază audio Sun *.au Audio/x-wav Fișiere Windows *.wav

După antet și o linie goală, pur și simplu imprimați datele în formularul de care aveți nevoie. Dacă trimiteți HTML, imprimați etichetele și datele HTML în stdout după antet. De asemenea, puteți trimite fișiere grafice, sunet și alte fișiere binare prin simpla tipărire a conținutului fișierului în stdout. Câteva exemple în acest sens sunt date în capitolul 4.

Instalarea și rularea unui program CGI

Această secțiune se abate oarecum de la programarea CGI și vorbește despre configurarea serverului dvs. Web pentru a utiliza CGI, instalarea și rularea programelor. Veți fi prezentat mai mult sau mai puțin în detaliu la diferite servere pentru diferite platforme, dar va trebui să cercetați mai adânc documentația serverului dvs. pentru a găsi cea mai bună opțiune.

Toate serverele necesită spațiu pentru fișierele server și spațiu pentru documente HTML. În această carte, zona serverului se numește ServerRoot, iar zona documentului se numește DocumentRoot. Pe mașinile UNIX, ServerRoot este de obicei în /usr/local/etc/httpd/, iar DocumentRoot este de obicei în /usr/local/etc/httpd/htdocs/. Cu toate acestea, acest lucru nu va face nicio diferență pentru sistemul dvs., așa că înlocuiți toate referințele la ServerRoot și DocumentRoot cu propriile dvs. ServerRoot și DocumentRoot.

Când accesați fișiere utilizând browserul Web, specificați fișierul în adresa URL relativă la DocumentRoot. De exemplu, dacă adresa serverului dvs. este mymachine.org, atunci accesați acest fișier cu următoarea adresă URL: http://mymachine.org/index.html

Configurarea serverului pentru CGI

Majoritatea serverelor Web sunt preconfigurate pentru a permite utilizarea programelor CGI. De obicei, doi parametri indică serverului dacă fișierul este sau nu o aplicație CGI:

  • Director desemnat. Unele servere vă permit să determinați că toate fișierele dintr-un director desemnat (numit de obicei cgi-bin în mod implicit) sunt CGI.
  • Extensii de nume de fișiere. Multe servere au această pre-configurare care permite ca toate fișierele care se termină în .cgi să fie definite ca CGI.

Metoda directorului desemnat este o relicvă a trecutului (primile servere au folosit-o ca singura metodă pentru a determina ce fișiere erau programe CGI), dar are câteva avantaje.

  • Menține programele CGI centralizate, împiedicând alte directoare să devină aglomerate.
  • Nu sunteți limitat la o anumită extensie de nume de fișier, așa că puteți denumi fișierele cum doriți. Unele servere vă permit să desemnați mai multe directoare diferite ca directoare CGI.
  • De asemenea, vă oferă mai mult control asupra cine poate înregistra CGI. De exemplu, dacă aveți un server și susțineți un sistem cu mai mulți utilizatori și nu doriți ca aceștia să-și folosească propriile scripturi CGI fără a examina mai întâi programul din motive de securitate, puteți desemna doar acele fișiere dintr-un director limitat și centralizat ca CGI. . Utilizatorii vor trebui apoi să vă ofere programe CGI de instalat și mai întâi puteți verifica codul pentru a vă asigura că programul nu are probleme majore de securitate.

Notația CGI prin extensia numelui de fișier poate fi utilă datorită flexibilității sale. Nu sunteți limitat la un singur director pentru programele CGI. Majoritatea serverelor pot fi configurate să recunoască CGI prin extensia numelui de fișier, deși nu toate sunt configurate în acest fel în mod implicit.

Avertizare

Amintiți-vă importanța problemelor de securitate atunci când vă configurați serverul pentru CGI. Câteva sfaturi vor fi acoperite aici, iar Capitolul 9, Protejarea CGI, acoperă aceste aspecte mai detaliat.

Instalarea CGI pe serverele UNIX

Indiferent de modul în care este configurat serverul dvs. UNIX, există câțiva pași pe care trebuie să îi urmați pentru a vă asigura că aplicațiile dvs. CGI rulează conform așteptărilor. Serverul dvs. web va rula de obicei ca un utilizator inexistent (adică utilizatorul UNIX nobody - un cont care nu are permisiuni de fișier și nu poate fi autentificat). Scripturile CGI (scrise în Perl, shell-ul Bourne sau alt limbaj de scripting) trebuie să fie executabile și lizibile în întreaga lume.

Cheie

Pentru a face fișierele dvs. lizibile și executabile în întreaga lume, utilizați următoarea comandă de permisiuni UNIX: chmod 755 filename.

Dacă utilizați un limbaj de scripting, cum ar fi Perl sau Tcl, furnizați calea completă a interpretului pe prima linie a scriptului. De exemplu, un script Perl care utilizează perl în directorul /usr/local/bin ar începe cu următoarea linie:

#!/usr/local/bin/perl

Avertizare

Nu plasați niciodată interpretul (perl sau binarul Tcl Wish) în directorul /cgi-bin. Acest lucru creează un risc de securitate pentru sistemul dvs. Acest lucru este discutat mai detaliat în Capitolul 9.

Unele servere UNIX generice

Serverele NCSA și Apache au fișiere de configurare similare, deoarece serverul Apache sa bazat inițial pe codul NCSA. În mod implicit, acestea sunt configurate astfel încât orice fișier din directorul cgi-bin (localizat implicit în ServerRoot) să fie un program CGI. Pentru a schimba locația directorului cgi-bin, puteți edita fișierul de configurare conf/srm.conf. Formatul pentru configurarea acestui director este

ScriptAlias ​​​​fakedirectoryname realdirectoryname

unde fakedirectoryname este numele pseudo-directorului (/cgi-bin) și realdirectoryname este calea completă în care sunt stocate de fapt programele CGI. Puteți configura mai mult de un ScriptAlias ​​adăugând mai multe linii ScriptAlias.

Configurația implicită este suficientă pentru nevoile majorității utilizatorilor. Trebuie să editați linia din fișierul srm.conf în ambele cazuri pentru a determina numele realdirectoryname corect. Dacă, de exemplu, programele dvs. CGI sunt localizate în /usr/local/etc/httpd/cgi-bin, linia ScriptAlias ​​​​din fișierul dvs. srm.conf ar trebui să fie cam așa:

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

Pentru a accesa sau conecta la programele CGI situate în acest director, utilizați următoarea adresă URL:

Http://hostname/cgi-bin/programname

Unde hostname este numele gazdei serverului dvs. Web, iar programname este numele CGI.

De exemplu, să presupunem că copiați programul hello.cgi în directorul dvs. cgi-bin (de ex. /usr/local/etc/httpd/cgi-bin) de pe serverul dvs. Web numit www.company.com. Pentru a accesa CGI, utilizați următoarea adresă URL: http://www.company.com/cgi-bin/hello.cgi

Dacă doriți să configurați serverul NCSA sau Apache pentru a recunoaște orice fișier cu extensie .cgi ca CGI, trebuie să editați două fișiere de configurare. Mai întâi, în fișierul srm.conf, decomentați următoarea linie:

Aplicație AddType/x-httpd-cgi .cgi

Aceasta va asocia tipul MIME CGI cu extensia .cgi. Acum, trebuie să schimbăm fișierul access.conf, astfel încât să putem rula CGI în orice director. Pentru a face acest lucru, adăugați opțiunea ExecCGI la linia Opțiune. Va arăta ceva ca următoarea linie:

Opțiuni Indexuri FollowSymLinks ExecCGI

Acum, orice fișier cu extensia .cgi este considerat CGI; accesați-l ca orice fișier de pe serverul dvs.

Serverul CERN este configurat în același mod ca și serverele Apache și NCSA. În loc de ScriptAlias, serverul CERN folosește comanda Exec. De exemplu, în fișierul httpd.conf, veți vedea următoarea linie:

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

Alte servere UNIX pot fi configurate în același mod; Acest lucru este descris mai detaliat în documentația serverului.

Instalarea CGI pe Windows

Majoritatea serverelor disponibile pentru Windows 3.1, Windows 95 și Windows NT sunt configurate folosind metoda „extensie nume fișier” pentru recunoașterea CGI. În general, schimbarea configurației unui server bazat pe Windows necesită pur și simplu rularea programului de configurare a serverului și efectuarea modificărilor corespunzătoare.

Uneori, configurarea unui server pentru a rula corect un script (cum ar fi Perl) poate fi dificilă. În DOS sau Windows, nu veți putea specifica interpretul pe prima linie a scriptului, așa cum este cazul UNIX. Unele servere au o configurație predefinită pentru a asocia anumite extensii de nume de fișier cu interpretul. De exemplu, multe servere web Windows presupun că fișierele care se termină în .pl sunt scripturi Perl.

Dacă serverul nu realizează acest tip de asociere de fișiere, puteți defini un fișier batch de pachet care apelează atât interpretul, cât și scriptul. Ca și în cazul serverului UNIX, nu instalați interpretul nici în directorul cgi-bin, nici în orice director accesibil pe Web.

Instalarea CGI pe Macintosh

Cele mai cunoscute două opțiuni de server pentru Macintosh sunt WebStar StarNine și predecesorul său MacHTTP. Ambele recunosc CGI după extensia numelui de fișier.

MacHTTP înțelege două extensii diferite: .cgi și .acgi, care înseamnă CGI asincron. Programele CGI obișnuite instalate pe un Macintosh (cu o extensie .cgi) vor menține serverul Web într-o stare ocupată până când CGI se termină de rulare, determinând serverul să suspende toate celelalte solicitări. CGI asincron, pe de altă parte, permite serverului să accepte cereri chiar și în timp ce rulează.

Un dezvoltator CGI Macintosh care utilizează oricare dintre aceste servere Web ar trebui, dacă este posibil, să folosească doar extensia .acgi, mai degrabă decât extensia .cgi. Ar trebui să funcționeze cu majoritatea programelor CGI; dacă nu funcționează, redenumiți programul în .cgi.

Executarea CGI

Odată ce ați instalat CGI, există mai multe moduri de a-l executa. Dacă programul dvs. CGI este un program numai de ieșire, cum ar fi programul Hello,World!, atunci îl puteți executa pur și simplu accesând adresa URL a acestuia.

Majoritatea programelor rulează ca o aplicație server pe un formular HTML. Înainte de a învăța cum să obțineți informații din aceste formulare, citiți mai întâi o scurtă introducere despre crearea unor astfel de formulare.

Un tutorial rapid despre formularele HTML

Cele mai importante două etichete dintr-un formular HTML sunt

Și . Puteți crea majoritatea formularelor HTML folosind doar aceste două etichete. În acest capitol, veți explora aceste etichete și un mic subset de tipuri sau atribute posibile. . Un ghid complet și o legătură către formularele HTML se află în Capitolul 3, HTML și formulare.

Etichetă

Etichetă folosit pentru a determina ce parte a fișierului HTML ar trebui utilizată pentru informațiile introduse de utilizator. Aceasta se referă la modul în care majoritatea paginilor HTML numesc un program CGI. Atributele etichetei specifică numele și locația programului - fie local, fie ca adresă URL completă, tipul de codificare utilizat și metoda de mutare a datelor utilizată de program.

Următoarea linie arată specificațiile pentru etichetă :

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

Atributul ENCTYPE nu joacă un rol special și de obicei nu este inclus cu eticheta . Informații detaliate despre eticheta ENCTYPE sunt oferite în Capitolul 3. O modalitate de a utiliza ENCTYPE este prezentată în Capitolul 14, „Extensii de marcă”.

Atributul ACTION se referă la adresa URL a programului CGI. Odată ce utilizatorul completează formularul și furnizează informații, toate informațiile sunt codificate și transferate în programul CGI. Programul CGI în sine rezolvă problema decodării și procesării informațiilor; Acest aspect este discutat în „Acceptarea intrărilor din browser”, mai târziu în acest capitol.

În cele din urmă, atributul METHOD descrie modul în care programul CGI ar trebui să primească intrare. Cele două metode, GET și POST, diferă în modul în care transmit informații către programul CGI. Ambele sunt discutate în „Acceptarea intrărilor din browser”.

Pentru ca browserul să permită introducerea utilizatorului, toate etichetele și informațiile de formular trebuie să fie înconjurate de etichetă . Nu uitați de eticheta de închidere

pentru a indica sfârșitul formularului. Nu puteți avea un formular în cadrul unui formular, deși puteți configura un formular care vă permite să prezentați informații în diferite locuri; acest aspect este discutat pe larg în capitolul 3.

Etichetă

Puteți crea bare de introducere a textului, butoane radio, casete de selectare și alte mijloace de acceptare a introducerii folosind eticheta . Această secțiune acoperă numai câmpurile de introducere a textului. Pentru a implementa acest câmp, utilizați eticheta cu urmatoarele atribute:

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

NUME este numele simbolic al variabilei care conține valoarea introdusă de utilizator. Dacă includeți text în atributul VALUE, acel text va fi plasat implicit în câmpul de introducere a textului. Atributul SIZE vă permite să specificați lungimea orizontală a câmpului de introducere așa cum va apărea în fereastra browserului. În cele din urmă, MAXLENGTH specifică numărul maxim de caractere pe care utilizatorul le poate introduce în câmp. Vă rugăm să rețineți că atributele VALUE, SIZE, MAXLENGTH sunt opționale.

Depunerea formularului

Dacă aveți un singur câmp de text într-un formular, utilizatorul poate trimite formularul prin simpla introducere a informațiilor pe tastatură și apăsând Enter. În caz contrar, trebuie să existe o altă modalitate prin care utilizatorul să prezinte informațiile. Utilizatorul trimite informații folosind un buton de trimitere cu următoarea etichetă:

< Input type=submit >

Această etichetă creează un buton Trimiteți în formularul dvs. Când utilizatorul termină de completat formularul, el sau ea poate trimite conținutul acestuia la adresa URL specificată de atributul ACȚIUNE al formularului făcând clic pe butonul Trimitere.

Se acceptă introducerea din browser

Mai sus au fost exemple de înregistrare a unui program CGI care trimite informații de la server la browser. În realitate, un program CGI care scoate numai date nu are multe aplicații (unele exemple sunt date în Capitolul 4). Abilitatea mai importantă a CGI este de a primi informații de la browser - caracteristica care conferă web-ului caracterul său interactiv.

Programul CGI primește două tipuri de informații de la browser.

  • În primul rând, obține diverse informații despre browser (tipul său, ceea ce poate vizualiza, gazda și așa mai departe), server (numele și versiunea acestuia, portul său de execuție și așa mai departe) și programul CGI însuși (numele programului și locul în care se află). Serverul oferă toate aceste informații programului CGI prin variabile de mediu.
  • În al doilea rând, programul CGI poate primi intrarea utilizatorului. Aceste informații, după ce au fost codificate de browser, sunt trimise fie printr-o variabilă de mediu (metoda GET), fie prin intrare standard (metoda stdin - POST).

variabile de mediu

Este util să știți ce variabile de mediu sunt disponibile pentru un program CGI, atât în ​​timpul antrenamentului, cât și pentru depanare. Tabelul 2.2 listează unele dintre variabilele de mediu CGI disponibile. De asemenea, puteți scrie un program CGI care scoate variabilele de mediu și valorile acestora într-un browser web.

Tabelul 2.2. Câteva variabile importante de mediu CGI Variabile de mediu Scop REMOTE_ADDR Adresa IP a computerului client. REMOTE_HOST Gazda mașinii client. HTTP _ACCEPT Listează tipurile de date MIME pe care browserul le poate interpreta. HTTP _USER_AGENT Informații despre browser (tipul browserului, numărul versiunii, sistemul de operare etc.). REQUEST_METHOD GET sau POST. CONTENT_LENGTH Mărimea intrării dacă este trimisă prin POST. Dacă nu există nicio intrare sau dacă se utilizează metoda GET, acest parametru este nedefinit. QUERY_STRING Conține informațiile de intrare când sunt transmise folosind metoda GET. PATH_INFO Permite utilizatorului să specifice o cale din linia de comandă CGI (de exemplu, http://hostname/cgi-bin/programname/path). PATH_TRANSLATED Traduce calea relativă din PATH_INFO într-o cale reală pe sistem.

Pentru a scrie o aplicație CGI care afișează variabile de mediu, trebuie să știți cum să faceți două lucruri:

  • Definiți toate variabilele de mediu și valorile lor corespunzătoare.
  • Imprimați rezultatele în browser.

Știți deja cum să efectuați ultima operație. În Perl, variabilele de mediu sunt stocate în tabloul asociativ %ENV, care este introdus prin numele variabilei de mediu. Lista 2.3 conține env.cgi, un program Perl care ne atinge scopul.

Lista 2.3. Un program Perl, env.cgi, care tipărește toate variabilele de mediu CGI.

#!/usr/local/bin/perl print „Tip de conținut: text/html\n\n”; imprimare " \n"; imprima " Mediu CGI\n"; imprima "\n"; imprima " \n"; imprima "

Mediu CGI

\n"; foreach $env_var (chei %ENV) (printează " $env_var= $ENV($env_var)
\n"; ) printează "

\n";

Un program similar ar putea fi scris în C; codul complet este în Lista 2.4.

Lista 2.4. Env.cgi.c în C. /* env.cgi.c */ #include extern char **environ; int main() ( char **p = mediu; printf("Tip de conținut: text/html\r\n\r\n"); printf(" \n"); printf(" Mediu CGI\n"); printf("\n"); printf(" \n"); printf("

Mediu CGI

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

\n"); )

GET sau POST?

Care este diferența dintre metodele GET și POST? GET trece șirul de intrare codificat prin variabila de mediu QUERY_STRING, în timp ce POST îl trece prin stdin. POST este metoda preferată, mai ales pentru formularele cu multe date, deoarece nu există restricții privind cantitatea de informații trimise, în timp ce cu metoda GET spațiul media este limitat. GET are totuși o anumită proprietate utilă; acest lucru este tratat în detaliu în Capitolul 5, Intrare.

Pentru a determina ce metodă este utilizată, programul CGI verifică variabila de mediu REQUEST_METHOD, care va fi setată fie la GET, fie la POST. Dacă este setată la POST, lungimea informațiilor codificate este stocată în variabila de mediu CONTENT_LENGTH.

Intrare codificată

Când un utilizator trimite un formular, browserul mai întâi codifică informațiile înainte de a le trimite către server și apoi către aplicația CGI. Când utilizați eticheta , fiecărui câmp i se dă un nume simbolic. Valoarea introdusă de utilizator este reprezentată ca valoare a variabilei.

Pentru a determina acest lucru, browserul utilizează o specificație de codificare URL, care poate fi descrisă după cum urmează:

  • Separă câmpuri diferite cu un ampersand (&).
  • Separă numele și valorile cu semne egale (=), cu numele în stânga și valoarea în dreapta.
  • Înlocuiește spațiile cu semnele plus (+).
  • Înlocuiește toate caracterele „anormale” cu un semn de procent (%) urmat de un cod hexadecimal din două cifre pentru caracter.

Șirul dvs. final codificat va fi similar cu următorul:

Nume1=valoare1&nume2=valoare2&nume3=valoare3...

Notă: Specificațiile pentru codificarea URL-urilor se găsesc în RFC1738.

De exemplu, să presupunem că ați avut un formular care cere numele și vârsta. Codul HTML care a fost folosit pentru a afișa acest formular este afișat în Lista 2.5.

Lista 2.5. Cod HTML pentru a afișa numele și forma de vârstă.

Nume și vârstă

Introdu numele tau:

Introduceți vârsta dvs:



Să presupunem că utilizatorul introduce Joe Schmoe în câmpul de nume și 20 în câmpul de vârstă. Intrarea va fi codificată în șirul de intrare.

Nume=Joe+Schmoe&varsta=20

Se analizează intrarea

Pentru ca aceste informații să fie utile, trebuie să utilizați informațiile despre ceva ce poate fi folosit de programele dvs. CGI. Strategiile de parsare a intrărilor sunt tratate în Capitolul 5. În practică, nu va trebui niciodată să vă gândiți la cum să analizați intrarea, deoarece mai mulți experți au scris deja biblioteci care fac parsarea, accesibile tuturor. Două astfel de biblioteci sunt prezentate în acest capitol în următoarele secțiuni: cgi -lib.pl pentru Perl (scris de Steve Brenner) și cgihtml pentru C (scris de mine).

Scopul general al majorității bibliotecilor scrise în diferite limbi este de a analiza un șir codificat și de a pune perechi nume și valoare într-o structură de date. Există un avantaj evident în utilizarea unui limbaj care are structuri de date încorporate precum Perl; cu toate acestea, majoritatea bibliotecilor pentru limbaje de nivel scăzut, cum ar fi C și C++, includ structura de date și execuția subrutinei.

Nu este necesar să se realizeze o înțelegere completă a bibliotecilor; este mai important să înveți cum să le folosești ca instrumente pentru a ușura munca programatorului CGI.

Cgi-lib.pl

Cgi-lib.pl folosește tablouri asociative Perl. Funcția &ReadParse analizează șirul de intrare și introduce fiecare pereche nume/valoare după nume. De exemplu, șirurile Perl corespunzătoare necesare pentru a decoda șirul de intrare „nume/vârstă” tocmai prezentat ar fi

&ReadParse(*input);

Acum, pentru a vedea valoarea introdusă pentru „nume”, puteți accesa matricea asociativă $input(„nume”). În mod similar, pentru a accesa valoarea „vârstă”, trebuie să vă uitați la variabila $input („vârstă”).

Cgihtml

C nu are nicio structură de date încorporată, așa că cgihtml implementează propria listă de linkuri pentru a fi utilizată cu rutinele sale de analiză CGI. Aceasta definește structura tipului de intrare după cum urmează:

Typedef struct ( Char *nume; Char *valoare; ) Tip de intrare;

Pentru a analiza șirul de intrare „nume/vârstă” în C folosind cgihtml, se utilizează următoarele:

/* declară o listă legată numită input */ Llist input; /* analizează intrarea și locația în lista legată */ read_cgi_input(&input);

Pentru a accesa informații despre vârstă, puteți fie să analizați lista manual, fie să utilizați funcția disponibilă cgi _val().

#include #include Char *age = malloc(sizeof(char)*strlen(cgi_val(input, "age")) + 1); Strcpy(vârstă, cgi_val(input, „vârsta”));

Valoarea „vârstă” este acum stocată în șirul de vârstă.

Notă: În loc să folosesc o matrice simplă (cum ar fi char age ;), aloc dinamic spațiu de memorie pentru vârsta șirurilor. Deși acest lucru face programarea mai dificilă, este totuși importantă din punct de vedere al securității. Acest lucru este discutat mai detaliat în capitolul 9.

Un simplu program CGI

Veți scrie un program CGI numit nameage.cgi care se ocupă de forma nume/vârstă. Procesarea datelor (ceea ce eu de obicei numesc „lucruri între ele”) este minimă. Nameage.cgi pur și simplu decodifică intrarea și afișează numele și vârsta utilizatorului. Deși nu este foarte util pentru un astfel de instrument, acesta demonstrează cel mai critic aspect al programării CGI: intrare și ieșire.

Folosiți același formular ca mai sus, apelând câmpurile „nume și vârstă”. Nu vă faceți griji pentru robustețe și eficiență încă; rezolva problema existenta in cel mai simplu mod. Soluțiile Perl și C sunt prezentate în listele 2.6 și, respectiv, 2.7.

Lista 2.6. Nameage.cgi în Perl

#!/usr/local/bin/perl # nameage.cgi necesită „cgi-lib.pl” &ReadParse(*input); printează „Tip de conținut: text/html\r\n\r\n”; imprimare " \n"; imprima " Nume și vârstă\n"; imprima "\n"; imprima " \n"; printează "Bună ziua," . $input("nume") . ". Ai\n"; print $input("varsta") . " ani.

\n"; imprima "

\n";

Lista 2.7. nume.cgi în C

/* 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(" Nume și vârstă\n"); printf("\n"); printf(" \n"); printf("Bună ziua, %s. Ai\n",cgi_val(input,"name")); printf("%s ani.

\n",cgi_val(input,"varsta")); printf("

\n"); )

Vă rugăm să rețineți că aceste două programe sunt aproape echivalente. Ambele conțin rutine de analiză care ocupă o singură linie și procesează întreaga intrare (mulțumită rutinelor bibliotecii corespunzătoare). Rezultatul este în esență o versiune modificată a programului principal Hello, World!.

Încercați să rulați programul completând formularul și făcând clic pe butonul Trimiteți.

Strategia generală de programare

Acum cunoașteți toate principiile de bază necesare pentru programarea CGI. Odată ce înțelegeți cum CGI primește informații și cum le trimite înapoi către browser, calitatea reală a produsului final depinde de abilitățile generale de programare. Și anume, atunci când programați CGI (sau orice altceva, de altfel), țineți cont de următoarele calități:

  • Simplitate
  • Eficienţă
  • Versatilitate

Primele două calități sunt destul de comune: încercați să vă faceți codul cât mai ușor de citit și de eficient. Versatilitatea se aplică mai mult programelor CGI decât altor aplicații. Când începeți să vă dezvoltați propriile programe CGI, veți afla că există câteva aplicații de bază pe care toată lumea vrea să le facă. De exemplu, una dintre cele mai comune și evidente sarcini ale unui program CGI este de a procesa un formular și de a trimite rezultatele prin e-mail unui anumit destinatar. Puteți avea mai multe formulare separate, fiecare cu un destinatar diferit. În loc să scrieți un program CGI pentru fiecare formular individual, puteți economisi timp scriind un program CGI mai general care se aplică tuturor formularelor.

Acoperind toate aspectele de bază ale CGI, v-am oferit suficiente informații pentru a începe cu programarea CGI. Cu toate acestea, pentru a deveni un dezvoltator CGI eficient, trebuie să înțelegeți mai profund modul în care CGI comunică cu serverul și browserul. Restul acestei cărți acoperă în detaliu problemele care au fost menționate pe scurt în acest capitol, precum și strategia de dezvoltare a aplicațiilor și avantajele și limitările protocolului.

rezumat

Acest capitol a prezentat pe scurt elementele de bază ale programării CGI. Creați rezultate prin formatarea corectă a datelor și prin imprimare în stdout. Recepția intrării CGI este puțin mai complexă, deoarece trebuie analizată înainte de a putea fi utilizată. Din fericire, există deja câteva biblioteci care efectuează analiza.

Până acum ar trebui să vă simțiți destul de confortabil cu programarea aplicațiilor CGI. Restul acestei cărți intră în mai multe detalii despre specificații, sfaturi și strategii de programare pentru aplicații mai avansate și mai complexe.

Proprietarii de magazine online sunt familiarizați cu conceptul de „comerț electronic” de la sine; cunosc deja răspunsul la întrebarea „comerțul electronic - ce este?” Dar dacă ajungi la fund, apar multe nuanțe și acest termen capătă un sens mai larg.

Comerțul electronic: ce este?

Conceptul general este următorul: comerțul electronic este înțeles ca o anumită abordare a activității de afaceri, care presupune includerea unui număr de operațiuni care utilizează transferul de date digitale în furnizarea de bunuri sau prestarea de servicii/lucrări, inclusiv utilizarea Internet.

Astfel, este orice tranzacție comercială care se realizează folosind un mijloc electronic de comunicare.

Schema de lucru este organizată după cum urmează:

  • oricine poate fi blogger sau orice alt proprietar al propriei pagini de internet) se înregistrează în acest sistem;
  • primește propriul link;
  • plasează un cod special pe pagina sa web - apare o reclamă pentru partenerul oficial selectat al rețelei de parteneri de comerț electronic;
  • monitorizează conversia site-ului web;
  • câștigă un anumit procent pentru fiecare achiziție de către un vizitator al site-ului dvs. care urmează un link de afiliat.

WP e-Commerce

Un număr mare de oameni sunt acum pasionați de e-commerce, în primul rând din dorința de a-și crea propriul site web, un magazin online unic pentru a-și vinde propriile produse. Pentru a satisface această cerere în creștere, dezvoltatorii s-au concentrat pe crearea de șabloane de comerț electronic. Să ne uităm la ce urmează.

Un astfel de exemplu de șablon este comerțul electronic WordPress. Este un plugin pentru coș de cumpărături pentru WordPress (unul dintre cele mai cunoscute sisteme de gestionare a resurselor web), destinat în primul rând creării și organizării blogurilor). Este oferit complet gratuit și permite vizitatorilor site-ului să facă achiziții pe site.

Cu alte cuvinte, acest plugin vă permite să creați un magazin online (bazat pe WordPress). Acest plugin de comerț electronic are toate instrumentele, setările și opțiunile necesare pentru a se potrivi nevoilor moderne.




Top