Obegränsad handel cgi. E-handel - vad är det? E-Commerce Partners Network är ett affiliateprogram för de största onlinebutikerna. Installera CGI på Macintosh

E-handel på tydlig ryska. Hur fungerar onlineaffärer?

På senare tid har det kommit fler och fler projekt relaterade till onlinehandel. När jag studerade detta område kunde jag inte hitta en allmän och begriplig beskrivning av processen. Därför bestämde jag mig för att göra något i stil med ett fuskblad som du alltid kan hänvisa till för att förstå proceduren inom ett sådant område som e-handel.

Jag kommer omedelbart att göra en reservation att jag fokuserade på de processer och kanaler som hjälper till att få in kunder.

E-handel: vad handlar det om?

Definitioner från olika källor säger något om att sälja varor eller tjänster via Internet. Med enkla ord, e-handel är alla onlineaktiviteter där pengar dyker upp.

Shopping, försäljning, försäkring, bank, elektroniska pengar, allt finns här. Ta den och signera den.

Från målet

För att förstå problemet föreslår jag att du börjar vägen från slutet. Vad är målet för någon verksamhet? Det stämmer, tjäna pengar. Så föreställ dig vilken produkt som helst, till exempel silikonstrumpor. Varför inte!

Jag tog det första som kom att tänka på, det visade sig att det fanns något sånt här...

Vår uppgift är att tjäna pengar på dessa strumpor. Vi tänker på internet. Hmm...varför inte bygga en hemsida och det är så försäljningen kommer att gå, behåll mig bara Maldiverna! Men det är inte så enkelt.

Jag gillar verkligen att rita. Detta hjälper till att förstå de olika processerna. Låt oss rita?!

Än så länge ser vår modell ut så här. Vi tar strumpor, lägger dem på internet och får pengar. Det här är helt enkelt jättebra! Dina ögon bränner, dina handflator svettas och du vill redan börja jobba. Men behöver du göra en hemsida eller en säljplattform?

Webbplats eller plattform till salu

Det finns olika lösningar för att placera din produkt på World Wide Web. Du kan skapa din egen webbplats eller använda tredjepartsplattformar (grupper, sidor på sociala nätverk, anslagstavlor, etc.). Låt oss stanna vid platsen.

Du beställde en webbplats, tog en färdig mall eller skapade den själv med hjälp av en webbplatsbyggare (du kan googla CMS), det spelar ingen roll. Sedan placerade de ett gäng silikonstrumpor av olika slag och blev nöjda.

Ledsen att jag avbryter läsningen. Gå med i min telegramkanal. Färska tillkännagivanden av artiklar, utveckling av digitala produkter och tillväxthack, allt finns där. Väntar på dig! Låt oss fortsätta...

Betalsystem

Men för att en person ska kunna köpa av dig här och nu kommer det att vara nödvändigt att justera betalningssystemen. Det här är en slags tjänst som låter dig göra köp online genom: bankkort, internetpengar, mobiltelefoner och en massa andra saker. För detta måste du dela en procentandel av transaktionerna, men på detta sätt kommer du att göra ditt liv mycket enklare.

Välj den tjänst som passar dig. Någonstans blir andelen högre, och någonstans blir det ett abonnemang eller något annat. Gör bara lite research. Lägg den nödvändiga koden på din webbplats, länka alla transaktioner till ditt kortkonto och voila!

Det verkar vara allt. Det finns en hemsida, produktkort också, och till och med "köp"-knappen fungerar, men något saknas... Det finns inget flöde av kunder som kommer att köpa.

Kundflöden

Var: CAC = Kostnad för att skaffa en ny kund. MCC (marketingcampaign costs) = Den totala kostnaden för marknadsföringskostnader som syftar till att attrahera kunder (men inte behålla dem). W (löner) = Lön för marknadsförare och försäljningschefer. S (mjukvara) = Kostnaden för programvara som används i reklam och försäljning (till exempel säljplattformen som används, marknadsföringsautomation, A/B-testning, analystjänster etc.). PS (professionella tjänster) = Kostnad för professionella tjänster som tillhandahålls marknads- och försäljningsavdelningar (design, konsultation, etc.). O (övrigt) = Övriga omkostnader relaterade till marknads- och försäljningsavdelningarna. CA (kunder förvärvade) = Totalt antal attraherade kunder.

Men vi får inte glömma kvaliteten på kunden, LTV kommer att hjälpa till här.

Viktigt mått: LTV

Live Time Value, kundens livscykel, är en annan indikator inom e-handel som måste beaktas. Den visar hur mycket inkomst en klient i genomsnitt ger. Det finns olika metoder för beräkning, jag valde den faktiska baserad på vinst, som en av de mest exakta.

Detta är helt enkelt summan av den totala intäkten över hela köphistoriken för varje enskild kund. Lägg till summan av alla kundköp (transaktioner) till transaktion N, där transaktion N är det senaste köpet som kunden gjorde med ditt företag. Om du har tillgång till alla kundtransaktionsdata kan du enkelt beräkna detta med Excel.

LTV = (transaktion 1 + transaktion 2 + transaktion 3... + transaktion N) x vinstandel i intäkter.

Att beräkna LTV baserat på nettovinst visar i slutändan den faktiska vinsten en kund tillför ditt företag. Detta tar hänsyn till kostnaden för kundservice, kostnaden för att behålla, kostnaden för attraktion, etc. Resultatet är ett helt komplex av beräkningar baserade på individuella data. Den totala vinsten som genereras per kund över tiden kommer att ge dig en korrekt förståelse av dina kunders lönsamhet hittills.

Andra tillvägagångssätt finns på.

Viktiga indikatorer: CAC och LTV-kvot

För att förstå ett företags lönsamhet är det mycket viktigt att titta på förhållandet mellan de två nämnda CAC:LTV-förhållandena.

  • Mindre än 1:1 - Du rusar i full fart mot konkurs.
  • 1:1 – Du förlorar pengar på varje attraherad kund.
  • 1:2 – Det verkar bra, men det verkar som att du inte investerar tillräckligt med pengar, och du kan utvecklas snabbare. Lansera mer aggressiva kundförvärvskampanjer och uppnå priser nära 1:3.
  • 1:3 – Idealiskt förhållande. Du har en blomstrande verksamhet och en stark affärsmodell.

Viktiga indikatorer: ROI glöm inte

Som vi diskuterade ovan måste du inom e-handel tydligt förstå om det är lönsamt att använda en förvärvskanal eller inte. Förutom LTV och CAC finns det en annan viktig indikator: ROI. Den visar om din investering, i vårt fall i reklam, har lönat sig. Det är. hur mycket 1 investerad rubel gav oss till slut.

En mycket enkel formel används för beräkningen:

Där "Kampanjintäkter" är skillnaden mellan inkomsten från kanalen och kostnaden för din produkt. Och för att beräkna vinst, dra av reklamkostnader.

Därför skulle en mer detaljerad formel se ut så här:

ROI = (Kanalintäkter – Kostnad) – Annonskostnader / Annonskostnader x 100 %

Läs ett mer detaljerat exempel med beräkning. Faktum är att denna enkla formel placeras i samma Excel-tabell, där allt beräknas automatiskt.

Alla tre indikatorer som vi har diskuterat är viktiga inom e-handel. Var och en av dem låter dig hitta flaskhalsar i dina flöden och arbeta med dem. Det är här tillväxtpotentialen för verksamheten ligger. Jag lade till lite mer till vår modell med strumpor.

Det är omöjligt att få ihop allt i ett material, och vem kommer att läsa det så länge? Senare ska jag göra en separat guide om nyanserna av e-handel som kan störa försäljningen.

Total

Sammantaget har du nu en allmän förståelse för onlinehandel eller e-handel. Vidare, som de säger: "Djävulen finns i detaljerna." Studera varje kanal separat, beräkna prestationsindikatorer och leta efter nya insikter i de små sakerna. Internetförsäljning för dig och mer! Och jag har ett material till.

Ja, jag glömde nästan bort, gott nytt år kära läsare! Jag önskar dig stora segrar och prestationer nästa år!

Andover, Massachusetts, 19 november 2003

The Commerce Group, Inc. (NYSE: CGI), den största skribenten av privata personbilsförsäkringar i Massachusetts och CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), en ledande leverantör av informationsteknologi och affärsbearbetningstjänster, tillkännagav idag undertecknandet av ett sexårigt kontrakt för outsourcing av affärsprocesser (BPO) till ett värde av 35 miljoner USD. CGI kommer att tillhandahålla fullständiga policybearbetningstjänster för Massachusetts privata passagerar- och kommersiella billinjer samt tillhandahålla CGI:s CollaborativeEdge-byrågränssnittsverktyg, applikationsstöd och underhåll, regelstöd, systemrådgivning och dokumenthanteringstjänster.

Gerald Fels, Commerce Groups vicepresident och CFO, sa: "Som den ledande leverantören av privata personbilar i Massachusetts, är vårt mål att förse våra agenter och anställda med tjänster som hjälper dem att prestera på högsta nivå. Under åren har vi skapat en stark relation med CGI. Deras system är robust och korrekt och deras team är mycket bekanta med våra interna bearbetningssystem. Det är viktigt för oss."

Serge LaPalme, president, försäkringsföretagstjänster för CGI tillade: "Vi är mycket glada över att fortsätta vår relation med Commerce Group, en som sträcker sig över 30 år. Commerce Group fortsätter att vara en av våra uppskattade affärspartners och är strategiskt för att vår framgång. Genom att hjälpa våra kunder att ytterligare fokusera på sin kärnverksamhet drar vi nytta av ny teknik när och där det är vettigt. Vårt team känner till försäkringsbranschen och statens mycket unika regleringsmiljö på nära håll och är därför snabba att anpassa befintliga lösningar till denna sektor som ständigt utvecklas."

Om The Commerce Group, Inc.

The Commerce Group, Inc., ett försäkringsholdingbolag, har sitt huvudkontor i Webster, Massachusetts. Commerce Groups egendoms- och skadeförsäkringsdotterbolag inkluderar The Commerce Insurance Company och Citation Insurance Company i Massachusetts, Commerce West Insurance Company i Kalifornien och American Commerce Insurance Company i Ohio. Genom sina dotterbolags kombinerade försäkringsverksamheter rankas Commerce Group som den 22:a största personliga bilförsäkringsgrupp i landet av A.M. Bäst, baserat på 2002 direkt skriftlig premieinformation.

Om CGI
CGI grundades 1976 och är det femte största oberoende IT-tjänsteföretaget i Nordamerika, baserat på antalet anställda. CGI och dess anslutna företag sysselsätter 20 000 yrkesverksamma. CGI:s årliga intäktstakt är för närvarande 2,8 miljarder USD (1,9 miljarder USD) och den 30 september 2003 var CGI:s orderstock 12,3 miljarder USD (9,1 miljarder USD). CGI tillhandahåller end-to-end IT- och affärsprocesstjänster till kunder över hela världen från kontor i Kanada, USA och Europa. CGI:s aktier är noterade på TSX (GIB.A) och NYSE (GIB) och ingår i TSX 100 Composite Index samt S&P/TSX Canadian Information Technology och Canadian MidCap-index. Webbplats: .

2012: Köp av brittiska Logica

I juni 2012 meddelade CGI Group att de tecknat ett avtal om att köpa den största europeiska systemintegratören Logica. Transaktionsbeloppet är 2,8 miljarder kanadensiska dollar (2,7 miljarder dollar). Som en del av överenskommelserna gick CGI också med på att ta på sig förpliktelser att betala tillbaka Logicas skuld till ett belopp av 515 miljoner CAD.

För att finansiera transaktionen planerar CGI att samla in 1 miljard kanadensiska dollar genom att ge ut ytterligare 46,7 miljoner aktier, låna 2 miljarder kanadensiska dollar från Canadian Imperial Bank of Commerce, National Bank of Canada och The Toronto-Dominion Bank, och cirka 650 miljoner kanadensiska dollar. dollar mer dollar - inom den aktuella kreditgränsen.

Det föreslagna priset per aktie var 59,8 % högre än Logicas stängningskurs den 30 maj 2012. Affären representerar cirka 6,6 gånger Logicas resultat före räntor, skatter, avskrivningar och amorteringar (EBITDA) för året.

Förvärvet av Logica förväntas öka CGI:s vinst per aktie med 25% till 30%, exklusive förvärvs- och integrationskostnader. Som ett resultat av sammanslagningen kommer det resulterande företagets personalstyrka och årliga intäkter att vara mer än dubbelt så högt som CGI. Storleken på det sammanslagna företagets personal kommer att vara cirka 72 tusen anställda på kontor i 43 länder, och årliga intäkter kommer att vara cirka 10,4 miljarder kanadensiska dollar (9,6 miljarder USD).

Det nya bolaget blir det sjätte största bland världens IT-konsulter. De största av dessa är IBM, Accenture, Cap Gemini, Tata Consultancy och Infosys, enligt Reuters uppskattningar.

"Logica är ett ledande företag inom affärs- och tekniktjänster med engagerade yrkesmän och pålitliga, långsiktiga kunder", säger CGI:s VD och koncernchef Michael Roach. "Vi är övertygade om att vi gör rätt sak." Genom att förvärva Logica förvärvar vi det. till rätt pris och vid rätt tidpunkt för att skapa en av de få största oberoende leverantörerna av end-to-end-teknologitjänster."

CGI:s styrelse godkände enhälligt transaktionen. Det är planerat att vara klart i september 2012, efter att ha erhållit aktieägarnas godkännande och efter standardprocedurer. Företagsintegrationsprocessen är planerad att slutföras inom 3 år

Tack vare World Wide Web kan nästan vem som helst tillhandahålla information online i en form som är lätt för ögonen och kan spridas brett. Du har utan tvekan surfat på Internet och sett andra sajter, och nu vet du säkert att läskiga förkortningar som "HTTP" och "HTML" helt enkelt är en förkortning för "Web" och "sättet information uttrycks på Internet." Du kanske redan har erfarenhet av att presentera information på Internet.

Internet har visat sig vara ett idealiskt medium för att distribuera information, vilket framgår av dess enorma popularitet och breda utveckling. Även om vissa har ifrågasatt användbarheten av Internet och tillskriver dess utbredda utveckling och popularitet främst påträngande reklam, är Internet onekligen ett viktigt medium för att presentera all slags information. Det finns inte bara många tjänster tillgängliga för att tillhandahålla aktuell information (nyheter, väder, direktsända sportevenemang) och referensmaterial elektroniskt, det finns också betydande mängder andra typer av data tillgängliga. IRS, som distribuerade alla sina skattedeklarationsformulär för 1995 och annan information via World Wide Web, erkände nyligen att de tagit emot fanmail för sin webbplats. Vem skulle ha trott att IRS någonsin skulle få fanmail? Detta berodde inte på att hans sida var väldesignad, utan för att den hade visat sig vara ett verkligt användbart verktyg för tusentals, kanske miljoner, människor.

Vad gör webben unik och en så attraktiv informationstjänst? Först och främst ger det ett hypermediagränssnitt till data. Tänk på din dators hårddisk. Typiskt uttrycks data på ett linjärt sätt, liknande ett filsystem. Du har till exempel ett antal mappar, och inuti varje mapp finns det antingen dokument eller andra mappar. Webben använder ett annat paradigm för att uttrycka information som kallas hypermedia. Ett hypertextgränssnitt består av ett dokument och länkar. Länkar är ord som man klickar på för att se andra dokument eller hitta andra typer av information. Webben utökar begreppet hypertext till att omfatta andra typer av media, såsom grafik, ljud, video (därav namnet "hypermedia"). Genom att markera text eller grafik på ett dokument kan du se relaterad information om det valda objektet i valfritt antal former.

Nästan alla kan dra nytta av detta enkla och unika sätt att presentera och distribuera information, från akademiker som direkt vill använda data med sina kollegor till affärsmän som delar information om sitt företag med alla. Men även om det är oerhört viktigt att ge information har många under de senaste åren känt att det är en lika viktig process att ta emot information.

Även om webben tillhandahåller ett unikt hypermedia-gränssnitt för information, finns det många andra effektiva sätt att distribuera data. Nätverkstjänster som File Transfer Protocol (FTP) och Gopher-nyhetsgruppen fanns till exempel långt före World Wide Web. Elektronisk post har varit det primära mediet för kommunikation och informationsutbyte på Internet och de flesta andra nätverk nästan från början av dessa nätverk. Varför har Internet blivit ett så populärt sätt att distribuera information? Multimediaaspekten av Internet har bidragit avsevärt till dess oöverträffade framgång, men för att Internet ska vara mest effektivt måste det vara interaktivt.

Utan möjligheten att ta emot användarinput och tillhandahålla information skulle webben vara en helt statisk miljö. Informationen skulle endast vara tillgänglig i det format som anges av författaren. Detta skulle undergräva en av datorernas möjligheter i allmänhet: interaktiv information. Till exempel, snarare än att tvinga användaren att titta på flera dokument som om han eller hon tittade i en bok eller ordbok, skulle det vara bättre att låta användaren identifiera nyckelord om ett ämne av intresse. Användare kan anpassa presentationen av data istället för att förlita sig på en stel struktur som definieras av innehållsleverantören.

Termen "webbserver" kan vara missvisande eftersom den kan syfta på både den fysiska maskinen och programvaran den använder för att kommunicera med webbläsare. När en webbläsare begär en given webbadress ansluter den först till maskinen via Internet och skickar webbserverns programvara en begäran om dokumentet. Denna programvara körs kontinuerligt, väntar på att sådana förfrågningar ska komma och svarar därefter.

Även om servrar kan skicka och ta emot data, har själva servern begränsad funktionalitet. Till exempel kan den mest primitiva servern bara skicka den önskade filen till webbläsaren. Servern vet vanligtvis inte vad den ska göra med den eller den extra inmatningen. Om ISP inte talar om för servern hur den ska hantera denna ytterligare information, kommer servern med största sannolikhet att ignorera inmatningen.

För att servern ska kunna utföra andra operationer förutom att söka och skicka filer till webbläsaren behöver du veta hur du utökar serverns funktionalitet. Till exempel kan en webbserver inte söka i en databas baserat på ett nyckelord som angetts av en användare och returnera flera matchande dokument om inte en sådan funktion har programmerats in i servern på något sätt.

Vad är CGI?

Common Gateway Interface (CGI) är ett gränssnitt till servern som låter dig utöka serverns funktionalitet. Med CGI kan du interagera interaktivt med användare som kommer åt din webbplats. På en teoretisk nivå tillåter CGI att servern kan analysera (tolka) input från webbläsaren och returnera information baserat på användarens input. På en praktisk nivå är CGI ett gränssnitt som gör att en programmerare kan skriva program som enkelt kommunicerar med en server.

Vanligtvis, för att utöka serverns kapacitet, måste du modifiera servern själv. Denna lösning är oönskad eftersom den kräver förståelse för det nedre lagret av Internet Protocol-nätverksprogrammering. Detta skulle också kräva redigering och omkompilering av serverns källkod eller skrivning av en anpassad server för varje uppgift. Låt oss säga att du vill utöka serverns möjligheter så att den fungerar som en webb-till-e-post-gateway som tar användarinmatad information från webbläsaren och e-postar den till en annan användare. Servern skulle behöva infoga kod för att analysera indata från webbläsaren, vidarebefordra den via e-post till den andra användaren och vidarebefordra svaret tillbaka till webbläsaren via nätverksanslutningen.

För det första kräver en sådan uppgift åtkomst till serverkoden, vilket inte alltid är möjligt.

För det andra är det svårt och kräver omfattande teknisk kunskap.

För det tredje gäller detta bara en specifik server. Om du behöver flytta din server till en annan plattform måste du köra eller åtminstone spendera mycket tid på att porta kod till den plattformen.

Varför CGI?

CGI erbjuder en bärbar och enkel lösning på dessa problem. CGI-protokollet definierar ett standardsätt för program att kommunicera med en webbserver. Utan några speciella kunskaper kan du skriva ett program på vilket maskinspråk som helst som gränssnitt och kommunicerar med webbservern. Detta program kommer att fungera med alla webbservrar som förstår CGI-protokollet.

CGI-kommunikation sker med standardinmatning och -utgång, vilket innebär att om du vet hur du skriver ut och läser data med ditt programmeringsspråk kan du skriva en webbserverapplikation. Förutom att analysera indata och utdata, är programmering av CGI-applikationer nästan likvärdig med programmering av vilken annan applikation som helst. För att till exempel programmera programmet "Hello, World!" använder du ditt språks utskriftsfunktioner och formatet som definierats för CGI-program för att skriva ut rätt meddelande.

Välja ett programmeringsspråk

Eftersom CGI är ett universellt gränssnitt är du inte begränsad till något specifikt maskinspråk. En viktig fråga som ofta ställs är: vilka programmeringsspråk kan användas för CGI-programmering? Du kan använda vilket språk som helst som låter dig göra följande:

  • Skriv ut till standardutdata
  • Läs från standardinmatning
  • Läs från variabla lägen

Nästan alla programmeringsspråk och många skriptspråk gör dessa tre saker, och du kan använda vilken som helst av dem.

Språk delas in i en av följande två klasser: översatta och tolkade. Ett översatt språk som C eller C++ är vanligtvis mindre och snabbare, medan tolkade språk som Perl eller Rexx ibland kräver att en stor tolk laddas vid uppstart. Dessutom kan du distribuera binära koder (kod som översätts till maskinspråk) utan källkod om ditt språk är översättbart. Att distribuera tolkbara skript innebär vanligtvis att distribuera källkod.

Innan du väljer språk måste du först överväga dina prioriteringar. Du måste väga fördelarna med hastigheten och effektiviteten hos ett programmeringsspråk mot det enkla att programmera i ett annat. Om du har en önskan om att lära dig ett annat språk, istället för att använda det du redan kan, väg noggrant fördelarna och nackdelarna med båda språken.

De två vanligaste språken för CGI-programmering är C och Perl (som båda behandlas i den här boken). Båda har tydliga fördelar och nackdelar. Perl är ett språk på mycket hög nivå, och samtidigt ett kraftfullt språk, speciellt lämpligt för att tolka text. Även om dess användarvänlighet, flexibilitet och kraft gör det till ett attraktivt språk för CGI-programmering, gör dess relativt stora storlek och långsammare drift det ibland olämpligt för vissa applikationer. C-program är mindre, effektivare och ger systemkontroll på lägre nivå, men är mer komplexa att programmera, har inte lätta inbyggda textbehandlingsrutiner och är svårare att felsöka.

Vilket språk är mest lämpligt för CGI-programmering? Den som du anser är bekvämare ur programmeringssynpunkt. Båda är lika effektiva för programmering av CGI-applikationer, och med de rätta biblioteken har båda liknande möjligheter. Men om du har en svåråtkomlig server kan du använda mindre, översatta C-program. Om du snabbt behöver skriva en applikation som kräver mycket textbearbetningsarbete kan du använda Perl istället.

Varningar

Det finns några viktiga alternativ till CGI-applikationer. Många servrar inkluderar nu API-programmering, vilket gör det lättare att programmera direkta servertillägg i motsats till fristående CGI-applikationer. API-servrar är i allmänhet mer effektiva än CGI-program. Andra servrar inkluderar inbyggd funktionalitet som kan hantera speciella icke-CGI-element, såsom databaslänkning. Slutligen kan vissa applikationer hanteras av några nya klient-sida (snarare än server-side) teknologier som Java. Med så snabba förändringar i teknik, kommer CGI snabbt att bli föråldrad?

Knappast. CGI har flera fördelar jämfört med nyare teknologier.

  • Den är mångsidig och bärbar. Du kan skriva en CGI-applikation med nästan vilket programmeringsspråk som helst på vilken plattform som helst. Vissa av alternativen, som serverns API, begränsar dig till vissa språk och är mycket svårare att lära sig.
  • Det är osannolikt att teknologier på klientsidan som Java kommer att ersätta CGI, eftersom det finns vissa applikationer som applikationer på serversidan är mycket bättre lämpade att köra.
  • Många av begränsningarna för CGI är begränsningar för HTML eller HTTP. I takt med att Internetstandarder som helhet utvecklas, utvecklas även CGI-kapaciteten.

Sammanfattning

Common Gateway Interface är det protokoll genom vilket program interagerar med webbservrar. Mångsidigheten hos CGI ger programmerare möjligheten att skriva gateway-program på nästan alla språk, även om det finns många avvägningar förknippade med olika språk. Utan denna förmåga skulle det vara svårt att skapa interaktiva webbsidor, i bästa fall kräva servermodifieringar, och interaktivitet skulle vara otillgänglig för de flesta användare som inte är webbplatsadministratörer.

Kapitel 2: Grunderna

För flera år sedan skapade jag en sida för ett college vid Harvard där folk kunde lämna kommentarer om dem. På den tiden var Internet ungt och dokumentationen var knapp. Jag, som många andra, förlitade mig på kort dokumentation och programmeringssystem skapade av andra för att lära mig CGI-programmering. Även om denna studiemetod krävde en del sökning, många experiment och skapade många frågor, var den mycket effektiv. Det här kapitlet är resultatet av mitt tidiga arbete med CGI (med några justeringar förstås).

Även om det tar lite tid att helt förstå och bemästra det gemensamma gateway-gränssnittet, är själva protokollet ganska enkelt. Den som har grundläggande programmeringskunskaper och är bekant med webben kan snabbt lära sig att programmera ganska komplexa CGI-applikationer precis som jag och andra lärde mig att göra för flera år sedan.

Syftet med detta kapitel är att presentera grunderna i CGI på ett omfattande, om än förtätat, sätt. Varje koncept som diskuteras här presenteras i detalj i efterföljande kapitel. Men efter att ha slutfört detta kapitel kan du omedelbart börja programmera CGI-applikationer. När du når den här nivån kan du lära dig krångligheterna med CGI, antingen genom att läsa resten av den här boken eller helt enkelt experimentera på egen hand.

Du kan koka ner CGI-programmering till två uppgifter: ta emot information från webbläsaren och skicka tillbaka information till webbläsaren. Detta görs ganska intuitivt när du väl blivit bekant med den normala användningen av CGI-applikationer. Ofta uppmanas användaren att fylla i något formulär, till exempel ange sitt namn. När användaren fyller i formuläret och trycker på Enter skickas denna information till CGI-programmet. CGI-programmet måste sedan konvertera denna information till något det förstår, bearbeta det därefter och sedan skicka tillbaka det till webbläsaren, vare sig det är en enkel bekräftelse eller resultatet av en sökning i en multifunktionsdatabas.

Med andra ord kräver programmering av CGI att du förstår hur man tar emot input från webbläsaren och hur man skickar tillbaka utdata. Vad som händer mellan ingångs- och utgångsfasen av ett CGI-program beror på utvecklarens mål. Du kommer att upptäcka att den största svårigheten i CGI-programmering ligger i detta mellanstadium; När du väl har lärt dig hur man arbetar med input och output räcker det i princip för att bli en CGI-utvecklare.

I det här kapitlet kommer du att lära dig principerna bakom CGI-inmatning och -utdata, samt andra grundläggande färdigheter du behöver för att skriva och använda CGI, inklusive saker som att skapa HTML-formulär och namnge dina CGI-program. Det här kapitlet täcker följande ämnen:

  • Traditionellt program "Hej världen!";
  • CGI-utgång: Skickar tillbaka information för visning i en webbläsare;
  • Konfigurera, installera och köra programmet. Du kommer att lära dig om olika webbplattformar och servrar;
  • CGI Input: Tolkning av information som skickas av webbläsaren. Introduktion till några användbara programmeringsbibliotek för att analysera sådan input;
  • Ett enkelt exempel: det täcker alla lektioner i ett givet kapitel;
  • Programmeringsstrategi.

På grund av det här kapitlets karaktär berör jag bara några ämnen lätt. Oroa dig inte; Alla dessa ämnen behandlas mycket mer ingående i andra kapitel.

Hej världen!

Du börjar med ett traditionellt inledande programmeringsproblem. Du kommer att skriva ett program som visar "Hello, World!" på din webbläsare. Innan du skriver det här programmet måste du förstå vilken information webbläsaren förväntar sig att ta emot från CGI-program. Du måste också veta hur du kör det här programmet så att du kan se det i aktion.

CGI är språkoberoende, så du kan implementera detta program på vilket språk som helst. Flera olika språk används här för att visa varje språks oberoende. I Perl, programmet "Hello, World!" visas i notering 2.1.

Lista 2.1. Hej världen! i Perl. #!/usr/local/bin/perl # Hello.cgi - Min första utskrift av CGI-program "Content-Type: text/html\n\n"; skriv ut " \n"; skriv ut " Hej världen!"; skriv ut"\n"; skriv ut " \n"; skriv ut "

Hej världen!

\n"; skriv ut "

\n";

Spara det här programmet som hello.cgi och installera det på lämplig plats. (Om du inte är säker på var den är, oroa dig inte; du får reda på det i avsnittet "Installera och köra ett CGI-program" längre fram i det här kapitlet.) För de flesta servrar är katalogen du behöver cgi-bin . Ring nu programmet från din webbläsare. För de flesta innebär detta att man öppnar följande enhetliga resurslokalisator (URL):

http://värdnamn/katalognamn/hello.cgi

Värdnamn är namnet på din webbserver och katalognamn är katalogen där du lägger hello.cgi (förmodligen cgi-bin).

Dela hello.cgi

Det finns några saker att notera om hello.cgi.

Först använder du enkla utskriftskommandon. CGI-program kräver inga speciella filbeskrivningar eller utdatadeskriptorer. För att skicka utdata till webbläsaren, skriv helt enkelt ut till stdout.

För det andra, notera att innehållet i den första utskriftssatsen (Content-Type: text/html) inte visas i din webbläsare. Du kan skicka vilken information du vill tillbaka till webbläsaren (HTML-sida, grafik eller ljud), men först måste du berätta för webbläsaren vilken typ av data du skickar den. Den här raden talar om för webbläsaren vilken typ av information som kan förväntas - i det här fallet en HTML-sida.

För det tredje heter programmet hello.cgi. Du behöver inte alltid använda tillägget .cgi med namnet på ditt CGI-program. Även om källkoden för många språk också använder tillägget .cgi, används den inte för att ange språktypen, utan är ett sätt för servern att identifiera filen som en körbar fil snarare än en grafikfil, HTML-fil eller textfil. Servrar är ofta konfigurerade för att endast försöka köra de filer som har detta tillägg, och visa innehållet i alla andra. Även om det inte är nödvändigt att använda tillägget .cgi, anses det fortfarande som god praxis.

I allmänhet består hello.cgi av två huvuddelar:

  • talar om för webbläsaren vilken information som kan förväntas (Content-Type: text/html)
  • talar om för webbläsaren vad den ska visa (Hej världen!)

Hej världen! i C

För att visa språkoberoendet för CGI-program visar Lista 2.2 motsvarigheten till hello.cgi-programmet skrivet i C.

Lista 2.2. Hej världen! i C. /* hello.cgi.c - Hej, World CGI */ #include int main() ( printf("Innehållstyp: text/html\r\n\r\n"); printf(" \n"); printf(" Hej världen!\n"); printf("\n"); printf(" \n"); printf("

Hej världen!

\n"); printf("

\n"); )

Notera

Observera att Perl-versionen av hello.cgi använder Content-Type print ": text/html\n\n "; Medan version C använder Printf("Content-Type: text/html\r\n\r\n");

Varför skriver Perl ut operatören med två nyrader (\n) medan C printf slutar med två vagnreturer och nyrader (\r\n)?

Tekniskt sett förväntas rubriker (alla utdata före den tomma raden) separeras av vagnreturer och nyrader. Tyvärr, på DOS- och Windows-datorer, översätter Perl \r som en annan nylinje snarare än som en vagnretur.

Även om Perls undantag är tekniskt felaktigt, kommer det att fungera på nästan alla protokoll och är lika portabelt över alla plattformar. Därför använder jag i alla Perl-exempel i den här boken newline-separerande rubriker snarare än vagnreturer och newlines.

En lämplig lösning på detta problem presenteras i kapitel 4, slutsats.

Varken webbservern eller webbläsaren bryr sig om vilket språk som används för att skriva programmet. Även om varje språk har fördelar och nackdelar som ett CGI-programmeringsspråk, är det bäst att använda det språk som du är mest bekväm med att arbeta med. (Valet av programmeringsspråk diskuteras mer i detalj i kapitel 1, "Common Gateway Interface (CGI)").

CGI-rendering

Nu kan du titta närmare på frågan om att skicka information till webbläsaren. Från exemplet "Hello, World!" kan du se att webbläsare förväntar sig två uppsättningar data: en rubrik, som innehåller information som till exempel vilken information som ska visas (t.ex. Content-Type: line) och faktisk information (vilken webbläsare) skärmar). Dessa två delar av information är åtskilda av en tom rad.

Rubriken kallas HTTP-huvudet. Den ger viktig information om den information som webbläsaren kommer att ta emot. Det finns flera olika typer av HTTP-huvuden, och den vanligaste är den du har använt tidigare: Content-Type: header. Du kan använda olika kombinationer av HTTP-rubriker, åtskilda av vagnretur och nyrader (\r\n). Den tomma raden som skiljer rubriken från data består också av en vagnretur och en ny rad (varför båda behövs diskuteras kort i föregående not och beskrivs i kapitel 4). Du kommer att lära dig om andra HTTP-rubriker i kapitel 4; För närvarande har du att göra med Content-Type: header.

Content-Type: Rubriken beskriver den typ av data som CGI:n returnerar. Lämpligt format för denna rubrik är:

Innehållstyp: undertyp/typ

Där undertyp/typ är den korrekta typen Multipurpose Internet Mail Extensions (MIME). Den vanligaste MIME-typen är HTML-typen: text/html. Tabell 2.1 listar några fler vanliga MIME-typer som kommer att diskuteras; En mer fullständig lista och analys av MIME-typer finns i kapitel 4.

Notera

MIME uppfanns ursprungligen för att beskriva innehållet i e-postmeddelanden. Det har blivit ett ganska vanligt sätt att representera information av innehållstyp. Du kan läsa mer om MIME i RFC1521. RFC:er på Internet står för Requests for Comments, som är sammanfattningar av beslut som fattats av grupper på Internet som försöker sätta standarder. Du kan se resultaten av RFC1521 på följande adress: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabell 2.1. Några vanliga MIME-typer. MIME-typ Beskrivning Text/html Hypertext Markup Language (HTML) Text/oformaterad textfiler Bild/gif Grafikfiler GIF Bild/jpeg Komprimerade grafikfiler JPEG-ljud/grundläggande ljudfiler Sun *.au Audio/x-wav Windows-filer *. wav

Efter rubriken och en tom rad skriver du helt enkelt ut data i det formulär du behöver. Om du skickar HTML, skriv ut HTML-taggarna och data till stdout efter rubriken. Du kan också skicka grafik, ljud och andra binära filer genom att helt enkelt skriva ut innehållet i filen till stdout. Flera exempel på detta ges i 4 kap.

Installera och köra ett CGI-program

Det här avsnittet avviker något från CGI-programmering och talar om att konfigurera din webbserver för att använda CGI, installera och köra program. Du kommer att introduceras till olika servrar för olika plattformar mer eller mindre i detalj, men du måste gräva djupare i din servers dokumentation för att hitta det bästa alternativet.

Alla servrar kräver utrymme för serverfiler och utrymme för HTML-dokument. I den här boken heter serverområdet ServerRoot och dokumentområdet DocumentRoot. På UNIX-maskiner är ServerRoot vanligtvis i /usr/local/etc/httpd/, och DocumentRoot är vanligtvis i /usr/local/etc/httpd/htdocs/. Detta kommer dock inte att göra någon skillnad för ditt system, så ersätt alla referenser till ServerRoot och DocumentRoot med din egen ServerRoot och DocumentRoot.

När du kommer åt filer med din webbläsare anger du filen i URL:en i förhållande till DocumentRoot. Om din serveradress till exempel är mymachine.org, kommer du åt den här filen med följande URL: http://mymachine.org/index.html

Konfigurera servern för CGI

De flesta webbservrar är förkonfigurerade för att tillåta användning av CGI-program. Vanligtvis anger två parametrar för servern om filen är en CGI-applikation eller inte:

  • Utsedda katalog. Vissa servrar låter dig bestämma att alla filer i en angiven katalog (vanligtvis kallad cgi-bin som standard) är CGI.
  • Filnamnstillägg. Många servrar har denna förkonfiguration som gör att alla filer som slutar på .cgi kan definieras som CGI.

Den designerade katalogmetoden är något av en relik från det förflutna (de allra första servrarna använde den som den enda metoden för att avgöra vilka filer som var CGI-program), men den har flera fördelar.

  • Det håller CGI-program centraliserade, vilket förhindrar att andra kataloger blir röriga.
  • Du är inte begränsad till ett visst filnamnstillägg, så du kan namnge dina filer vad du vill. Vissa servrar låter dig ange flera olika kataloger som CGI-kataloger.
  • Det ger dig också mer kontroll över vem som kan spela in CGI. Till exempel, om du har en server och stödjer ett system med flera användare och inte vill att de ska använda sina egna CGI-skript utan att först granska programmet av säkerhetsskäl, kan du endast ange dessa filer i en begränsad, centraliserad katalog som CGI . Användare måste sedan förse dig med CGI-program att installera, och du kan först granska koden för att säkerställa att programmet inte har några större säkerhetsproblem.

CGI-notationen via filnamnstillägg kan vara användbar på grund av dess flexibilitet. Du är inte begränsad till en enda katalog för CGI-program. De flesta servrar kan konfigureras att känna igen CGI via filnamnstillägget, även om inte alla är konfigurerade på detta sätt som standard.

Varning

Kom ihåg vikten av säkerhetsproblem när du konfigurerar din server för CGI. Några tips kommer att behandlas här, och kapitel 9, Att skydda CGI, täcker dessa aspekter mer i detalj.

Installera CGI på UNIX-servrar

Oavsett hur din UNIX-server är konfigurerad finns det flera steg du måste vidta för att säkerställa att dina CGI-applikationer körs som förväntat. Din webbserver kommer vanligtvis att köras som en icke-existerande användare (det vill säga UNIX-användaren ingen - ett konto som inte har några filbehörigheter och inte kan loggas in). CGI-skript (skrivna i Perl, Bourne-skalet eller annat skriptspråk) måste vara körbara och läsbara över hela världen.

Ledtråd

För att göra dina filer världsläsbara och körbara, använd följande UNIX-behörighetskommando: chmod 755 filnamn.

Om du använder ett skriptspråk som Perl eller Tcl, ange hela sökvägen för din tolk på den första raden i ditt skript. Till exempel skulle ett Perl-skript som använder perl i katalogen /usr/local/bin börja med följande rad:

#!/usr/local/bin/perl

Varning

Placera aldrig tolken (perl, eller Tcl Wish binary) i /cgi-bin-katalogen. Detta skapar en säkerhetsrisk på ditt system. Detta diskuteras mer i detalj i kapitel 9.

Vissa generiska UNIX-servrar

NCSA- och Apache-servrarna har liknande konfigurationsfiler eftersom Apache-servern ursprungligen baserades på NCSA-koden. Som standard är de konfigurerade så att alla filer i cgi-bin-katalogen (som finns som standard i ServerRoot) är ett CGI-program. För att ändra platsen för cgi-bin-katalogen kan du redigera konfigurationsfilen conf/srm.conf. Formatet för att konfigurera denna katalog är

ScriptAlias ​​​​fakedirectoryname realdirectoryname

där fakedirectoryname är pseudokatalognamnet (/cgi-bin) och realdirectoryname är den fullständiga sökvägen där CGI-programmen faktiskt lagras. Du kan konfigurera mer än ett ScriptAlias ​​genom att lägga till fler ScriptAlias-rader.

Standardkonfigurationen är tillräcklig för de flesta användares behov. Du måste redigera raden i filen srm.conf i båda fallen för att bestämma det korrekta realkatalognamnet. Om till exempel dina CGI-program finns i /usr/local/etc/httpd/cgi-bin, bör ScriptAlias-raden i din srm.conf-fil vara ungefär så här:

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

För att komma åt eller länka till CGI-program som finns i den här katalogen, använd följande URL:

Http://hostname/cgi-bin/programname

Där värdnamn är namnet på värden för din webbserver och programnamn är namnet på din CGI.

Låt oss till exempel säga att du kopierar programmet hello.cgi till din cgi-bin-katalog (t.ex. /usr/local/etc/httpd/cgi-bin) på din webbserver som heter www.company.com. För att komma åt din CGI, använd följande URL: http://www.company.com/cgi-bin/hello.cgi

Om du vill konfigurera din NCSA- eller Apache-server för att känna igen en fil med filtillägget .cgi som en CGI, måste du redigera två konfigurationsfiler. Först, i filen srm.conf, avkommenterar du följande rad:

AddType application/x-httpd-cgi .cgi

Detta kommer att associera MIME-typen CGI med tillägget .cgi. Nu måste vi ändra filen access.conf så att vi kan köra CGI i vilken katalog som helst. För att göra detta, lägg till alternativet ExecCGI på raden Alternativ. Det kommer att se ut ungefär som följande rad:

Alternativindex FöljSymLinks ExecCGI

Nu betraktas alla filer med filtillägget .cgi som CGI; få åtkomst till den som vilken fil som helst på din server.

CERN-servern är konfigurerad på samma sätt som Apache- och NCSA-servrarna. Istället för ScriptAlias ​​använder CERN-servern Exec-kommandot. Till exempel, i filen httpd.conf ser du följande rad:

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

Andra UNIX-servrar kan konfigureras på samma sätt; Detta beskrivs mer i detalj i serverdokumentationen.

Installera CGI på Windows

De flesta tillgängliga servrar för Windows 3.1, Windows 95 och Windows NT är konfigurerade med metoden "filnamnstillägg" för CGI-igenkänning. För att ändra konfigurationen av en Windows-baserad server krävs i allmänhet att du kör serverkonfigurationsprogrammet och gör lämpliga ändringar.

Ibland kan det vara svårt att konfigurera en server för att köra ett skript (som Perl) korrekt. I DOS eller Windows kommer du inte att kunna ange tolken på den första raden i skriptet, vilket är fallet med UNIX. Vissa servrar har en fördefinierad konfiguration för att associera vissa filnamnstillägg med tolken. Till exempel antar många Windows-webbservrar att filer som slutar på .pl är Perl-skript.

Om servern inte utför den här typen av filassociering kan du definiera en paketeringsbatchfil som anropar både tolken och skriptet. Som med UNIX-servern, installera inte tolken i varken cgi-bin-katalogen eller någon webb-tillgänglig katalog.

Installera CGI på Macintosh

De två mest kända serveralternativen för Macintosh är WebStar StarNine och dess föregångare MacHTTP. Båda känner igen CGI genom dess filnamnstillägg.

MacHTTP förstår två olika tillägg: .cgi och .acgi, som står för asynkron CGI. Vanliga CGI-program installerade på en Macintosh (med tillägget .cgi) kommer att hålla webbservern i ett upptaget läge tills CGI:n slutar köras, vilket gör att servern stoppar alla andra förfrågningar. Asynkron CGI, å andra sidan, tillåter servern att acceptera förfrågningar även när den körs.

En CGI Macintosh-utvecklare som använder någon av dessa webbservrar bör, om möjligt, bara använda .acgi-tillägget istället för .cgi-tillägget. Det borde fungera med de flesta CGI-program; om det inte fungerar, byt namn på programmet till .cgi.

Kör CGI

När du har installerat CGI finns det flera sätt att köra det. Om ditt CGI-program är ett endast output-program, till exempel Hello,World!-programmet, kan du köra det helt enkelt genom att komma åt dess URL.

De flesta program körs som en serverapplikation på ett HTML-formulär. Innan du lär dig hur du får information från dessa formulär, läs först en kort introduktion om hur du skapar sådana formulär.

En snabb handledning om HTML-formulär

De två viktigaste taggarna i en HTML-form är

Och . Du kan skapa de flesta HTML-formulär med bara dessa två taggar. I det här kapitlet kommer du att utforska dessa taggar och en liten delmängd av möjliga typer eller attribut. . En komplett guide och länk till HTML-formulär finns i kapitel 3, HTML och formulär.

Märka

Märka används för att bestämma vilken del av HTML-filen som ska användas för användarinmatad information. Detta hänvisar till hur de flesta HTML-sidor kallar ett CGI-program. Taggattribut anger programmets namn och plats - antingen lokalt eller som en fullständig URL, vilken typ av kodning som används och vilken dataöverföringsmetod som används av programmet.

Nästa rad visar specifikationerna för taggen :

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

Attributet ENCTYPE spelar ingen speciell roll och ingår vanligtvis inte i taggen . Detaljerad information om ENCTYPE-taggen ges i kapitel 3. Ett sätt att använda ENCTYPE visas i kapitel 14, "Branded Extensions".

Attributet ACTION hänvisar till CGI-programmets URL. När användaren fyller i formuläret och tillhandahåller information kodas all information och överförs till CGI-programmet. CGI-programmet i sig löser problemet med avkodning och bearbetning av information; Denna aspekt diskuteras i "Acceptera indata från webbläsaren," senare i det här kapitlet.

Slutligen beskriver METHOD-attributet hur CGI-programmet ska ta emot input. De två metoderna, GET och POST, skiljer sig åt i hur de skickar information till CGI-programmet. Båda diskuteras i "Acceptera indata från webbläsaren."

För att webbläsaren ska tillåta användarinmatning måste alla formulärtaggar och information omges av taggen . Glöm inte den avslutande taggen

för att ange slutet av formuläret. Du kan inte ha ett formulär i ett formulär, även om du kan skapa ett formulär som låter dig presentera information på olika platser; denna aspekt diskuteras utförligt i kapitel 3.

Märka

Du kan skapa textinmatningsfält, alternativknappar, kryssrutor och andra sätt att acceptera inmatning med hjälp av taggen . Det här avsnittet omfattar endast textinmatningsfält. Använd taggen för att implementera det här fältet med följande attribut:

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

NAME är det symboliska namnet på variabeln som innehåller det värde som användaren har angett. Om du inkluderar text i VALUE-attributet kommer den texten att placeras som standard i textinmatningsfältet. Attributet SIZE låter dig ange den horisontella längden på inmatningsfältet som det kommer att visas i webbläsarfönstret. Slutligen anger MAXLENGTH det maximala antalet tecken som användaren kan ange i fältet. Observera att attributen VALUE, SIZE, MAXLENGTH är valfria.

Inlämning av formulär

Om du bara har ett textfält i ett formulär kan användaren skicka formuläret genom att helt enkelt skriva in information på tangentbordet och trycka på Enter. Annars måste det finnas något annat sätt för användaren att presentera informationen. Användaren skickar information med hjälp av en skicka-knapp med följande tagg:

< Input type=submit >

Den här taggen skapar en Skicka-knapp i ditt formulär. När användaren har fyllt i formuläret kan han eller hon skicka in dess innehåll till den URL som anges av formulärets ACTION-attribut genom att klicka på knappen Skicka.

Accepterar input från webbläsaren

Ovan var exempel på inspelning av ett CGI-program som skickar information från servern till webbläsaren. I verkligheten har ett CGI-program som bara matar ut data inte många applikationer (några exempel ges i kapitel 4). Den viktigaste förmågan hos CGI är att ta emot information från webbläsaren - funktionen som ger webben dess interaktiva karaktär.

CGI-programmet tar emot två typer av information från webbläsaren.

  • Först får den olika delar av information om webbläsaren (dess typ, vad den kan se, värdvärden och så vidare), servern (dess namn och version, dess exekveringsport och så vidare) och CGI-programmet sig själv (programnamn och var det finns). Servern ger all denna information till CGI-programmet genom miljövariabler.
  • För det andra kan CGI-programmet ta emot användarinmatning. Denna information, efter att ha kodats av webbläsaren, skickas antingen genom en miljövariabel (GET-metoden) eller genom standardinmatning (stdin - POST-metoden).

Miljövariabler

Det är användbart att veta vilka miljövariabler som är tillgängliga för ett CGI-program, både under träning och för felsökning. Tabell 2.2 listar några av de tillgängliga CGI-miljövariablerna. Du kan också skriva ett CGI-program som matar ut miljövariabler och deras värden till en webbläsare.

Tabell 2.2. Några viktiga CGI-miljövariabler Miljövariabel Syfte REMOTE_ADDR IP-adress för klientdatorn. REMOTE_HOST Värden för klientdatorn. HTTP _ACCEPT Listar de MIME-datatyper som webbläsaren kan tolka. HTTP _USER_AGENT Webbläsarinformation (webbläsartyp, versionsnummer, operativsystem, etc.). REQUEST_METHOD GET eller POST. CONTENT_LENGTH Storleken på inmatningen om den skickas via POST. Om det inte finns någon inmatning eller om GET-metoden används är denna parameter odefinierad. QUERY_STRING Innehåller inmatningsinformationen när den skickas med GET-metoden. PATH_INFO Tillåter användaren att ange en sökväg från CGI-kommandoraden (till exempel http://värdnamn/cgi-bin/programnamn/sökväg). PATH_TRANSLATED Översätter den relativa sökvägen i PATH_INFO till en faktisk sökväg på systemet.

För att skriva en CGI-applikation som visar miljövariabler måste du veta hur du gör två saker:

  • Definiera alla miljövariabler och deras motsvarande värden.
  • Skriv ut resultat till webbläsaren.

Du vet redan hur du utför den sista operationen. I Perl lagras miljövariabler i den associativa arrayen %ENV, som introduceras av namnet på miljövariabeln. Lista 2.3 innehåller env.cgi, ett Perl-program som uppnår vårt mål.

Lista 2.3. Ett Perl-program, env.cgi, som skriver ut alla CGI-miljövariabler.

#!/usr/local/bin/perl print "Innehållstyp: text/html\n\n"; skriv ut " \n"; skriv ut " CGI-miljö\n"; skriv ut "\n"; skriv ut " \n"; skriv ut "

CGI-miljö

\n"; foreach $env_var (nycklar %ENV) ( skriv ut " $env_var= $ENV($env_var)
\n"; ) skriv ut "

\n";

Ett liknande program skulle kunna skrivas i C; hela koden finns i Listing 2.4.

Lista 2.4. Env.cgi.c i C. /* env.cgi.c */ #include extern röding **miljö; int main() ( char **p = environ; printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" CGI-miljö\n"); printf("\n"); printf(" \n"); printf("

CGI-miljö

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

\n"); )

HÄMTA eller POSTA?

Vad är skillnaden mellan GET- och POST-metoderna? GET skickar den kodade indatasträngen genom miljövariabeln QUERY_STRING, medan POST skickar den genom stdin. POST är den föredragna metoden, särskilt för formulär med mycket data, eftersom det inte finns några begränsningar för mängden information som skickas, medan med GET-metoden är mängden medieutrymme begränsad. GET har dock en viss användbar egenskap; detta behandlas i detalj i kapitel 5, Input.

För att avgöra vilken metod som används kontrollerar CGI-programmet miljövariabeln REQUEST_METHOD, som kommer att ställas in på antingen GET eller POST. Om den är inställd på POST, lagras längden på den kodade informationen i miljövariabeln CONTENT_LENGTH.

Kodad ingång

När en användare skickar ett formulär kodar webbläsaren först informationen innan den skickas till servern och sedan till CGI-applikationen. När du använder taggen , varje fält ges ett symboliskt namn. Värdet som angetts av användaren representeras som variabelns värde.

För att fastställa detta använder webbläsaren en URL-kodningsspecifikation, som kan beskrivas enligt följande:

  • Separerar olika fält med et-tecken (&).
  • Separerar namnet och värdena med likhetstecken (=), med namnet till vänster och värdet till höger.
  • Ersätter mellanslag med plustecken (+).
  • Ersätter alla "onormala" tecken med ett procenttecken (%) följt av en tvåsiffrig hexadecimal kod för tecknet.

Din slutliga kodade sträng kommer att likna följande:

Namn1=värde1&namn2=värde2&namn3=värde3 ...

Obs: Specifikationer för URL-kodning finns i RFC1738.

Låt oss till exempel säga att du hade ett formulär som frågade efter namn och ålder. HTML-koden som användes för att visa detta formulär visas i Listing 2.5.

Lista 2.5. HTML-kod för att visa namn- och åldersformuläret.

Namn och ålder

Ange ditt namn:

Ange din ålder:



Låt oss säga att användaren anger Joe Schmoe i namnfältet och 20 i åldersfältet. Ingången kommer att kodas i inmatningssträngen.

Namn=Joe+Schmoe&age=20

Parsar indata

För att denna information ska vara användbar måste du använda informationen om något som kan användas av dina CGI-program. Strategier för att analysera indata behandlas i kapitel 5. I praktiken kommer du aldrig att behöva tänka på hur man analyserar input, eftersom flera experter redan har skrivit bibliotek som gör analysen, tillgängliga för alla. Två sådana bibliotek presenteras i detta kapitel i följande avsnitt: cgi -lib.pl för Perl (skriven av Steve Brenner) och cgihtml för C (skriven av mig).

Det allmänna målet för de flesta bibliotek skrivna på olika språk är att analysera en kodad sträng och sätta namn- och värdepar i en datastruktur. Det finns en uppenbar fördel med att använda ett språk som har inbyggda datastrukturer som Perl; dock inkluderar de flesta bibliotek för lågnivåspråk som C och C++ datastruktur och exekvering av subrutiner.

Det är inte nödvändigt att uppnå en fullständig förståelse av bibliotek; det är viktigare att lära sig hur man använder dem som verktyg för att göra CGI-programmerarens jobb enklare.

Cgi-lib.pl

Cgi-lib.pl använder Perl associativa arrayer. Funktionen &ReadParse analyserar inmatningssträngen och anger varje namn/värdepar efter namn. Till exempel skulle motsvarande Perl-strängar som behövs för att avkoda "namn/ålder"-inmatningssträngen som just presenterades vara

&ReadParse(*input);

Nu, för att se värdet som angetts för "namn", kan du komma åt den associativa arrayen $input("namn"). På samma sätt, för att komma åt värdet på "ålder", måste du titta på variabeln $input ("ålder").

Cgihtml

C har inga inbyggda datastrukturer, så cgihtml implementerar sin egen länklista för användning med sina CGI-parsningsrutiner. Detta definierar entrytype-strukturen enligt följande:

Typedef struct ( Char *namn; Char *värde; ) Entrytype;

För att analysera inmatningssträngen "namn/ålder" i C med cgihtml, används följande:

/* deklarera en länkad lista som heter input */ Llist input; /* analysera indata och plats i länkad lista */ read_cgi_input(&input);

För att komma åt åldersinformation kan du antingen analysera listan manuellt eller använda den tillgängliga cgi _val()-funktionen.

#omfatta #omfatta Char *ålder = malloc(sizeof(char)*strlen(cgi_val(input, "ålder")) + 1); Strcpy(ålder, cgi_val(ingång, "ålder"));

Värdet "ålder" är nu lagrat i ålderssträngen.

Obs: Istället för att använda en enkel array (som char age ;), allokerar jag dynamiskt minnesutrymme för strängåldern. Även om detta försvårar programmering är det ändå viktigt ur säkerhetssynpunkt. Detta diskuteras närmare i kapitel 9.

Ett enkelt CGI-program

Du ska skriva ett CGI-program som heter nameage.cgi som hanterar namn/åldersformuläret. Databehandling (det jag brukar kalla "grejer") är minimal. Nameage.cgi avkodar helt enkelt indata och visar användarens namn och ålder. Även om det inte finns mycket användning för ett sådant verktyg, visar det den mest kritiska aspekten av CGI-programmering: input och output.

Du använder samma formulär som ovan och kallar fram "namn och ålder"-fälten. Oroa dig inte för robusthet och effektivitet ännu; lösa det befintliga problemet på enklaste sätt. Perl- och C-lösningarna visas i listorna 2.6 respektive 2.7.

Lista 2.6. Nameage.cgi i Perl

#!/usr/local/bin/perl # nameage.cgi kräver "cgi-lib.pl" &ReadParse(*input); print "Content-Type: text/html\r\n\r\n"; skriv ut " \n"; skriv ut " Namn och ålder\n"; skriv ut "\n"; skriv ut " \n"; skriv ut "Hej, " . $input("namn") . ". Du är\n"; print $input("ålder") . " år gammal.

\n"; skriv ut "

\n";

Notering 2.7. nameage.cgi i 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(" Namn och ålder\n"); printf("\n"); printf(" \n"); printf("Hej, %s. Du är\n",cgi_val(input,"namn")); printf("%s år gammal.

\n",cgi_val(indata,"ålder")); printf("

\n"); )

Observera att dessa två program är nästan likvärdiga. De innehåller båda parsningsrutiner som endast upptar en rad och bearbetar hela inmatningen (tack vare motsvarande biblioteksrutiner). Utgången är i huvudsak en modifierad version av ditt huvudsakliga Hello, World!-program.

Försök att köra programmet genom att fylla i formuläret och klicka på knappen Skicka.

Allmän programmeringsstrategi

Du känner nu till alla grundläggande principer som krävs för CGI-programmering. När du väl förstår hur CGI tar emot information och hur den skickar tillbaka den till webbläsaren, beror den faktiska kvaliteten på din slutprodukt på dina allmänna programmeringsförmåga. Nämligen, när du programmerar CGI (eller något alls, för den delen), tänk på följande egenskaper:

  • Enkelhet
  • Effektivitet
  • Mångsidighet

De två första egenskaperna är ganska vanliga: försök att göra din kod så läsbar och effektiv som möjligt. Mångsidighet gäller mer för CGI-program än för andra applikationer. När du börjar utveckla dina egna CGI-program kommer du att lära dig att det finns flera grundläggande applikationer som alla vill göra. Till exempel är en av de vanligaste och mest uppenbara uppgifterna för ett CGI-program att bearbeta ett formulär och maila resultaten till en specifik mottagare. Du kan ha flera separata formulär behandlade, var och en med olika mottagare. Istället för att skriva ett CGI-program för varje enskild blankett kan du spara tid genom att skriva ett mer generellt CGI-program som gäller alla blanketter.

Genom att täcka alla grundläggande aspekter av CGI har jag försett dig med tillräckligt med information för att komma igång med CGI-programmering. Men för att bli en effektiv CGI-utvecklare behöver du ha en djupare förståelse för hur CGI kommunicerar med servern och webbläsaren. Resten av den här boken täcker i detalj de frågor som kortfattat nämndes i det här kapitlet, såväl som applikationsutvecklingsstrategi och fördelarna och begränsningarna med protokollet.

Sammanfattning

Detta kapitel introducerade kort grunderna för CGI-programmering. Du skapar utdata genom att formatera dina data korrekt och skriva ut till stdout. Att ta emot CGI-indata är lite mer komplicerat eftersom det måste analyseras innan det kan användas. Lyckligtvis finns det redan flera bibliotek som utför analys.

Vid det här laget borde du vara ganska bekväm med att programmera CGI-applikationer. Resten av den här boken går in mer i detalj om specifikationer, tips och programmeringsstrategier för mer avancerade och komplexa applikationer.

Ägare av onlinebutiker är bekanta med begreppet "elektronisk handel" från första hand; de vet redan svaret på frågan "e-handel - vad är det?" Men går man till botten med det kommer många nyanser fram och det här begreppet får en bredare innebörd.

E-handel: vad är det?

Det allmänna konceptet är följande: e-handel förstås som ett visst tillvägagångssätt för att göra affärer, vilket innebär inkludering av ett antal verksamheter som använder digital dataöverföring vid tillhandahållande av varor eller tillhandahållande av tjänster/arbete, inklusive användning av Internet.

Det är alltså varje kommersiell transaktion som genomförs med hjälp av ett elektroniskt kommunikationsmedel.

Arbetsflödet är som följer:

  • vem som helst kan vara bloggare eller någon annan ägare av sin egen internetsida) registrerar sig i detta system;
  • får en egen länk;
  • placerar en speciell kod på sin webbsida - en annons för den valda officiella partnern till e-Commerce Partners Network visas;
  • övervakar webbplatskonvertering;
  • tjänar en viss procent för varje köp av en besökare på din webbplats som följer en affiliate-länk.

WP e-handel

Ett stort antal människor brinner nu för e-handel, främst på grund av viljan att skapa en egen hemsida, en unik webbutik för att sälja sina egna produkter. För att möta denna växande efterfrågan har utvecklare fokuserat på att skapa e-handelsmallar. Låt oss titta på vad det här är härnäst.

Ett sådant exempel på mall är WordPress e-handel. Det är en kundvagnsplugin för WordPress (ett av de mest kända webbresurshanteringssystemen), främst avsett för att skapa och organisera bloggar). Den tillhandahålls helt gratis och gör det möjligt för webbplatsbesökare att göra köp på webbplatsen.

Med andra ord låter detta plugin dig skapa en onlinebutik (baserad på WordPress). Detta e-handelsplugin har alla nödvändiga verktyg, inställningar och alternativ för att passa moderna behov.




Topp