Неограничена трговија cgi. Е-трговија - што е тоа? E-Commerce Partners Network е придружна програма на најголемите онлајн продавници. Инсталирање CGI на Macintosh

Е-трговија на јасен руски јазик. Како функционира онлајн бизнисот?

Во последно време има се повеќе проекти поврзани со онлајн тргување. Додека ја проучував оваа област, не можев да најдам општ и разбирлив опис на процесот. Затоа, решив да направам нешто како мамење на кое секогаш можете да се повикате за да ја разберете процедурата во таква област како што е е-трговија.

Веднаш ќе направам резервација дека се фокусирав на процесите и каналите кои помагаат да се донесат клиенти.

Е-трговија: за што се работи?

Дефинициите од различни извори кажуваат нешто за продажба на стоки или услуги преку Интернет. Со едноставни зборови, е-трговија е секоја онлајн активност каде што се појавуваат пари.

Купување, продажба, осигурување, банкарство, електронски пари, се е тука. Земете го и потпишете го.

Од целта

За да се разбере прашањето, предлагам да се започне патеката од самиот крај. Која е целта на секој бизнис? Така е, заработете пари. Значи, замислете каков било производ, на пример, силиконски чорапи. Зошто да не!

Го зедов првото нешто што ми падна на памет, испадна дека има нешто вакво...

Нашата задача е да заработиме пари на овие чорапи. Размислуваме за Интернет. Хм...зошто да не изградиш веб-страница и така ќе оди продажбата, само чувај ме Малдиви! Но, тоа не е толку едноставно.

Навистина сакам да цртам. Ова помага да се разберат различните процеси. Ајде да цртаме?!

Досега нашиот модел изгледа вака. Земаме чорапи, ги ставаме на Интернет и добиваме пари. Ова е едноставно одлично! Очите ви горат, дланките ви се потат и веќе сакате да се занимавате. Но, дали треба да направите веб-страница или платформа за продажба?

Веб-страница или платформа за продажба

Постојат различни решенија за поставување на вашиот производ на World Wide Web. Можете да креирате сопствена веб-локација или да користите платформи од трети страни (групи, страници на социјалните мрежи, табли за пораки итн.). Ајде да застанеме на локацијата.

Нарачавте веб-локација, зедовте готов шаблон или сами го создадовте користејќи градител на веб-страница (можете да пребарувате на Google CMS), не е важно. Потоа ставија еден куп силиконски чорапи од различни видови и се радуваа.

Извинете што го прекинав читањето. Придружете се на мојот телеграмски канал. Свежи објави на написи, развој на дигитални производи и пробивање на раст, сè е таму. Те чекам! Да продолжиме...

Платежни системи

Но, за да може некое лице да купи од вас овде и сега, ќе биде неопходно да ги прилагодите платните системи. Ова е еден вид услуга која ви овозможува да купувате онлајн преку: банкарски картички, пари од Интернет, мобилни телефони и еден куп други работи. За ова ќе треба да споделите процент од трансакциите, но на овој начин многу ќе си го олесните животот.

Изберете ја услугата што ви одговара. Некаде процентот ќе биде поголем, а некаде ќе има претплата или нешто друго. Само направете малку истражување. Ставете го бараниот код на вашата веб-страница, поврзете ги сите трансакции со вашата сметка на картичката и Voila!

Се чини дека тоа е сè. Има веб-страница, картички за производи, па дури и копчето „купи“ работи, но нешто недостасува... Нема проток на клиенти кои ќе купуваат.

Текови на клиенти

Каде: CAC = Трошоци за стекнување на нов клиент. MCC (маркетиншка кампања) = Вкупните трошоци за маркетинг трошоци насочени кон привлекување клиенти (но не и нивно задржување). W (плати) = Плата за маркетери и менаџери за продажба. S (софтвер) = Цената на софтверот што се користи во рекламирањето и продажбата (на пример, користената продажна платформа, маркетинг автоматизација, A/B тестирање, аналитички услуги итн.). PS (професионални услуги) = Трошоци за професионални услуги што се даваат на одделите за маркетинг и продажба (дизајн, консалтинг, итн.). O (друго) = Други режиски трошоци поврзани со одделенијата за маркетинг и продажба. CA (customersacquired) = Вкупен број на привлечени клиенти.

Но, не смееме да заборавиме на квалитетот на клиентот; LTV ќе помогне тука.

Важна метрика: LTV

Live Time Value, животниот циклус на клиентите, е уште еден индикатор во е-трговијата што треба да се земе предвид. Тоа покажува колкав приход носи еден клиент во просек. Постојат различни пристапи за пресметка, јас го избрав вистинскиот врз основа на профитот, како еден од најточните.

Ова е едноставно збир од вкупниот приход во текот на целата историја на купување за секој поединечен клиент. Додадете го збирот на сите купувања (трансакции) од клиенти на трансакцијата N, каде трансакцијата N е последното купување што клиентот го направил со вашата компанија. Ако имате пристап до сите податоци за трансакциите на клиентите, тогаш можете лесно да го пресметате ова користејќи Excel.

LTV = (трансакција 1 + трансакција 2 + трансакција 3... + трансакција N) x учество во добивката во приходите.

Пресметувањето на LTV врз основа на нето добивката на крајот го покажува вистинскиот профит што клиентот го носи на вашата компанија. Ова ги зема предвид трошоците за услуги на клиентите, трошоците за задржување, трошоците за привлекување итн. Резултатот е цел комплекс на пресметки врз основа на поединечни податоци. Вкупниот профит генериран по клиент со текот на времето ќе ви даде точно разбирање на профитабилноста на вашите клиенти до денес.

Други пристапи може да се најдат на.

Важни индикатори: сооднос CAC и LTV

За да се разбере одржливоста на бизнисот, многу е важно да се погледне односот на двата споменати соодноси CAC:LTV.

  • Помалку од 1:1 - Брзате со полна брзина кон банкрот.
  • 1:1 - губите пари на секој привлечен клиент.
  • 1:2 – Се чини добро, но се чини дека не вложувате доволно пари и би можеле побрзо да се развивате. Стартувајте поагресивни кампањи за стекнување клиенти и постигнувајте стапки блиску до 1:3.
  • 1:3 – Идеален сооднос. Имате просперитетен бизнис и силен деловен модел.

Важни индикатори: ROI не заборавајте

Како што дискутиравме погоре, во е-трговијата треба јасно да разберете дали е профитабилно да се користи канал за стекнување или не. Во прилог на LTV и CAC, постои уште еден важен индикатор: ROI. Тоа покажува дали вашата инвестиција, во нашиот случај во рекламирањето, се исплатела. Тоа е. колку ни донесе на крајот 1 вложена рубља.

За пресметка се користи многу едноставна формула:

Каде што „Приход од кампања“ е разликата помеѓу приходот од каналот и цената на вашиот производ. И за да се пресмета профитот, одземете ги трошоците за рекламирање.

Така, подетална формула би изгледала вака:

ROI = (Приход од каналот – Трошоци) – Трошоци за рекламирање / Трошоци за рекламирање x 100%

Прочитајте подетален пример со пресметка. Всушност, оваа едноставна формула е сместена во истата табела на Excel, каде сè се пресметува автоматски.

Сите три индикатори за кои разговаравме се важни во е-трговијата. Секој од нив ви овозможува да најдете тесни грла во вашите текови и да работите со нив. Тука лежи потенцијалот за раст на бизнисот. Додадов уште малку на нашиот модел со чорапи.

Невозможно е се да се вклопи во еден материјал, а кој ќе го чита толку долго? Подоцна ќе направам посебен водич за нијансите на е-трговија кои можат да се мешаат во продажбата.

Вкупно

Генерално, сега имате општо разбирање за онлајн тргување или е-трговија. Понатаму, како што велат: „Ѓаволот е во деталите“. Проучете го секој канал посебно, пресметајте ги индикаторите за изведба и барајте нови сознанија за ситниците. Интернет продажба за вас, и повеќе! И имам уште еден материјал.

Да, скоро заборавив, Среќна Нова Година, драги читатели! Ви посакувам големи победи и достигнувања следната година!

Андовер, Масачусетс, 19 ноември 2003 година

The Commerce Group, Inc. (NYSE: CGI), најголемиот писател на приватно осигурување на патнички автомобили во Масачусетс и CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), водечки снабдувач на услуги за информатичка технологија и деловна обработка, денеска го објави потпишувањето на шестгодишното обновување на договорот за аутсорсинг на деловни процеси (BPO) во вредност од 35 милиони американски долари. CGI ќе обезбеди целосни услуги за обработка на политики за приватните патнички и комерцијални автомобилски линии во Масачусетс, како и обезбедување на алатката за интерфејс на агенцијата CollaborativeEdge на CGI, поддршка и одржување на апликации, регулаторна поддршка, системско советување и услуги за управување со документи.

Џералд Фелс, извршен потпретседател и финансиски директор на Commerce Group, изјави: „Како водечки снабдувач на приватни патнички автомобили во Масачусетс, наша цел е да им обезбедиме на нашите агенти и вработени услуги кои ќе им помогнат да работат на нивното највисоко ниво. Со текот на годините негувавме силна врска со CGI. Нивниот систем е робустен и прецизен, а нивниот тим е многу запознаен со нашите системи за внатрешна обработка. Тоа е важно за нас“.

Серж ЛаПалм, претседател, осигурителни деловни услуги за CGI додаде: „Многу сме задоволни што ја продолжуваме нашата врска со трговската група, врска која се протега повеќе од 30 години. Трговската група продолжува да биде еден од нашите ценети деловни партнери и е стратешка за нашиот успех. Помагајќи им на нашите клиенти да се фокусираат на нивната основна дејност, ние ги користиме новите технологии кога и каде има смисла. Нашиот тим интимно ја познава осигурителната индустрија и многу уникатната регулаторна средина на државата и како резултат на тоа се брзи да ги прилагодиме постоечките решенија на овој сектор кој постојано се развива“.

За The Commerce Group, Inc.

The Commerce Group, Inc., осигурителна холдинг компанија, е со седиште во Вебстер, Масачусетс. Подружниците на Commerce Group за осигурување на имот и жртви вклучуваат The Commerce Insurance Company и Citation Insurance Company во Масачусетс, Commerce West Insurance Company во Калифорнија и American Commerce Insurance Company во Охајо. Преку нејзините подружници" комбинирани осигурителни активности, Commerce Group е рангирана како 22 најголемата групација за осигурување на лични автомобили во земјава од А.М. Најдобро, врз основа на директни пишани премиум информации од 2002 година.

За CGI
Основана во 1976 година, CGI е петтата по големина независна компанија за услуги за информатичка технологија во Северна Америка, врз основа на нејзиниот број на вработени. CGI и нејзините поврзани компании вработуваат 20.000 професионалци. Годишната стапка на приход на CGI моментално е 2,8 милијарди ЦДН (1,9 милијарди американски долари) и на 30 септември 2003 година, заостанатите нарачки на CGI беа 12,3 милијарди ЦДН (9,1 милијарди американски долари). CGI обезбедува услуги за ИТ и деловни процеси од крај до крај за клиентите ширум светот од канцелариите во Канада, САД и Европа. Акциите на CGI се котирани на TSX (GIB.A) и NYSE (GIB) и се вклучени во TSX 100 Composite Index како и во S&P/TSX Canadian Information Technology и Canadian MidCap Indeces.

2012: Набавка на British Logica

Во јуни 2012 година, CGI Group објави дека потпишала договор за купување на најголемиот европски системски интегратор Logica. Износот на трансакцијата е 2,8 милијарди канадски долари (2,7 милијарди долари). Како дел од постигнатите договори, CGI исто така се согласи да преземе обврски за отплата на долгот на Logica во износ од 515 милиони канадски долари.

За финансирање на трансакцијата, CGI планира да собере 1 милијарда канадски долари со издавање дополнителни 46,7 милиони акции, да позајми 2 милијарди канадски долари од канадската Империјална банка за трговија, Националната банка на Канада и банката Торонто-Доминион и околу 650 милиони канадски долари повеќе долари - во рамките на тековната кредитна линија.

Предложената цена по акција беше 59,8% повисока од цената на затворање на Logica на 30 мај 2012 година. Зделката претставува приближно 6,6 пати поголема од заработката на Logica пред камати, даноци, амортизација (EBITDA) за годината. 12 месечен период заврши на 31 декември 2011 година

Стекнувањето на Logica се очекува да ја зголеми заработката по акција на CGI за 25% до 30%, без трошоците за стекнување и интеграција. Како резултат на спојувањето, работната сила и годишните приходи на компанијата ќе бидат двојно повеќе од оние на CGI. Големината на персоналот на комбинираната компанија ќе биде околу 72 илјади вработени лоцирани во канцеларии во 43 земји, а годишниот приход ќе биде околу 10,4 милијарди канадски долари (9,6 милијарди долари).

Новата компанија ќе биде шеста по големина меѓу светските ИТ консултанти. Најголеми од нив се IBM, Accenture, Cap Gemini, Tata Consultancy и Infosys, според проценките на Ројтерс.

„Logica е водечка компанија за деловни и технолошки услуги со посветени професионалци и доверливи, долгорочни клиенти“, рече претседателот и извршен директор на CGI Мајкл Роуч. „Ние сме уверени дека ја правиме вистинската работа.“ Со преземање на Logica, ја стекнуваме по вистинска цена и во вистинско време да се создаде еден од ретките најголеми независни даватели на технолошки услуги од крај до крај“.

Одборот на директори на CGI едногласно ја одобри трансакцијата. Планирано е да биде завршен до септември 2012 година, по добивањето одобрение од акционерите и следење на стандардните процедури. Процесот на интеграција на компанијата се планира да заврши во рок од 3 години

Благодарение на World Wide Web, речиси секој може да обезбеди информации на интернет во форма што е лесна за очи и може да биде широко распространета. Несомнено сте сурфале на Интернет и сте виделе други сајтови, а сега веројатно знаете дека застрашувачките акроними како „HTTP“ и „HTML“ се едноставно стенографија за „Веб“ и „начинот на кој информациите се изразуваат на Интернет“. Можеби веќе имате одредено искуство со презентирање информации на Интернет.

Интернетот се покажа како идеален медиум за дистрибуција на информации, што може да се види од неговата огромна популарност и широкиот развој. Иако некои ја доведуваат во прашање корисноста на Интернетот и го припишуваат неговиот широк развој и популарност главно на наметливото рекламирање, Интернетот е неспорно важен медиум за презентирање на сите видови информации. Не само што се достапни многу услуги за да се обезбедат ажурирани информации (вести, временски услови, спортски настани во живо) и референтен материјал по електронски пат, има и значителни количини на достапни други видови податоци. УЈП, која ги дистрибуираше сите свои формулари за даночни пријави од 1995 година и други информации преку World Wide Web, неодамна призна дека добивала пошта од обожавателите за нејзината веб-страница. Кој би помислил дека УЈП некогаш ќе добие пошта од обожаватели? Ова не беше затоа што неговата страница беше добро дизајнирана, туку затоа што се покажа како навистина корисна алатка за илјадници, можеби милиони луѓе.

Што го прави Интернетот уникатен и толку атрактивен информативен сервис? Пред сè, тој обезбедува хипермедијален интерфејс за податоците. Размислете за хард дискот на вашиот компјутер. Вообичаено, податоците се изразуваат на линеарен начин, сличен на датотечен систем. На пример, имате голем број папки, а внатре во секоја папка има или документи или други папки. Мрежата користи различна парадигма за изразување на информации наречени хипермедија. Хипертекст интерфејсот се состои од документ и врски. Врските се зборови на кои се кликнува за да се видат други документи или да се најдат други видови информации. Интернетот го проширува концептот на хипертекст за да вклучи и други видови медиуми, како што се графики, звуци, видео (оттука и името „хипермедија“). Изборот на текст или графика на документ ви овозможува да видите поврзани информации за избраната ставка во кој било број на форми.

Речиси секој може да има корист од овој едноставен и уникатен начин на презентирање и дистрибуција на информации, од академици кои сакаат веднаш да ги користат податоците со своите колеги до деловни луѓе кои споделуваат информации за нивната компанија со секого. Сепак, иако давањето информации е исклучително важно, во последните неколку години многумина сметаат дека примањето информации е подеднакво важен процес.

Иако Интернетот обезбедува единствен хипермедијален интерфејс за информации, постојат многу други ефективни начини за дистрибуција на податоци. На пример, мрежните услуги како Протоколот за пренос на датотеки (FTP) и групата Gopher постоеле долго пред World Wide Web. Електронската пошта е примарен медиум за комуникација и размена на информации на Интернет и на повеќето други мрежи речиси од самиот почеток на овие мрежи. Зошто Интернетот стана толку популарен начин на дистрибуција на информации? Мултимедијалниот аспект на Интернетот значително придонесе за неговиот невиден успех, но за Интернетот да биде најефективен, тој мора да биде интерактивен.

Без можност за примање кориснички податоци и обезбедување информации, Интернетот би бил целосно статична средина. Информациите ќе бидат достапни само во форматот наведен од авторот. Ова би ја поткопало една од способностите на компјутерите воопшто: интерактивни информации. На пример, наместо да го принудувате корисникот да прегледува повеќе документи како да гледа книга или речник, подобро би било да му се дозволи на корисникот да идентификува клучни зборови за тема од интерес. Корисниците можат да ја прилагодат презентацијата на податоците наместо да се потпираат на цврста структура дефинирана од давателот на содржината.

Терминот „веб-сервер“ може да биде погрешен бидејќи може да се однесува и на физичката машина и на софтверот што го користи за комуникација со интернет прелистувачите. Кога прелистувачот бара дадена веб-адреса, тој прво се поврзува со машината преку Интернет, испраќајќи му на софтверот на веб-серверот барање за документот. Овој софтвер работи континуирано, чекајќи такви барања да пристигнат и соодветно да одговори.

Иако серверите можат да испраќаат и примаат податоци, самиот сервер има ограничена функционалност. На пример, најпримитивниот сервер може да ја испрати само потребната датотека до прелистувачот. Серверот обично не знае што да прави со овој или оној дополнителен влез. Ако интернет провајдерот не му каже на серверот како да ракува со овие дополнителни информации, серверот најверојатно ќе го игнорира внесувањето.

За да може серверот да врши други операции освен пребарување и испраќање датотеки на интернет прелистувачот, треба да знаете како да ја проширите функционалноста на серверот. На пример, веб-серверот не може да бара база на податоци врз основа на клучен збор внесен од корисник и да врати повеќе документи што се совпаѓаат, освен ако таквата способност е програмирана во серверот на некој начин.

Што е CGI?

Common Gateway Interface (CGI) е интерфејс до серверот кој ви овозможува да ја проширите функционалноста на серверот. Користејќи CGI, можете да комуницирате интерактивно со корисниците кои пристапуваат на вашата страница. На теоретско ниво, CGI му овозможува на серверот да може да го анализира (интерпретира) влезот од прелистувачот и да враќа информации врз основа на внесувањето на корисникот. На практично ниво, CGI е интерфејс кој му овозможува на програмерот да пишува програми кои лесно комуницираат со сервер.

Вообичаено, за да ги проширите можностите на серверот, ќе треба сами да го модифицирате серверот. Ова решение е непожелно бидејќи бара разбирање на долниот слој на мрежното програмирање на Интернет протоколот. Ова исто така ќе бара уредување и прекомпајлирање на изворниот код на серверот или пишување прилагоден сервер за секоја задача. Да речеме дека сакате да ги проширите можностите на серверот така што тој ќе делува како портал од веб-пошта, земајќи ги информациите внесени од корисникот од прелистувачот и испраќајќи ги до друг корисник. Серверот ќе треба да вметне код за да го анализира влезот од прелистувачот, да го проследи преку е-пошта до другиот корисник и да го препрати одговорот назад до прелистувачот преку мрежната врска.

Прво, таквата задача бара пристап до кодот на серверот, што не е секогаш можно.

Второ, тоа е тешко и бара големо техничко знаење.

Трето, ова се однесува само на одреден сервер. Ако треба да го преместите вашиот сервер на друга платформа, ќе мора да извршите или барем да потрошите многу време за пренесување на кодот на таа платформа.

Зошто CGI?

CGI нуди преносливо и едноставно решение за овие проблеми. Протоколот CGI дефинира стандарден начин за програмите да комуницираат со веб-сервер. Без никакво посебно знаење, можете да напишете програма на кој било машински јазик што се поврзува и комуницира со веб-серверот. Оваа програма ќе работи со сите веб-сервери кои го разбираат протоколот CGI.

CGI комуникацијата се врши со користење на стандарден влез и излез, што значи дека ако знаете како да печатите и читате податоци користејќи го вашиот програмски јазик, можете да напишете апликација за веб-сервер. Освен парсирање на влезот и излезот, програмирањето на CGI апликациите е речиси еквивалентно на програмирањето на која било друга апликација. На пример, за да ја програмирате програмата „Hello, World!“, ги користите функциите за печатење на вашиот јазик и форматот дефиниран за програмите CGI за да ја испечатите соодветната порака.

Избор на програмски јазик

Бидејќи CGI е универзален интерфејс, не сте ограничени на некој специфичен машински јазик. Важно прашање што често се поставува е: кои програмски јазици може да се користат за програмирање CGI? Можете да користите кој било јазик што ви овозможува да го направите следново:

  • Печатете на стандарден излез
  • Читајте од стандардниот влез
  • Читајте од променливи режими

Скоро сите програмски јазици и многу јазици за скрипт ги прават овие три работи и можете да користите било кој од нив.

Јазиците спаѓаат во една од следните две класи: преведени и толкувани. Преведениот јазик како C или C++ е обично помал и побрз, додека интерпретираните јазици како Perl или Rexx понекогаш бараат да се вчита голем преведувач при стартување. Дополнително, можете да дистрибуирате бинарни кодови (код што се преведува на машински јазик) без изворен код ако вашиот јазик може да се преведе. Дистрибуцијата на скрипти за толкување обично значи дистрибуција на изворниот код.

Пред да изберете јазик, прво треба да ги земете предвид вашите приоритети. Треба да ги измерите придобивките од брзината и ефикасноста на еден програмски јазик наспроти леснотијата на програмирање на друг. Ако имате желба да научите друг јазик, наместо да го користите оној што веќе го знаете, внимателно измерете ги предностите и недостатоците на двата јазика.

Двата најчесто користени јазици за програмирање CGI се C и Perl (и двата се опфатени во оваа книга). И двете имаат јасни предности и недостатоци. Perl е јазик на многу високо ниво, а во исто време и моќен јазик, особено погоден за парсирање на текст. Иако неговата леснотија на користење, флексибилност и моќ го прават атрактивен јазик за програмирање CGI, неговата релативно голема големина и побавното работење понекогаш го прават несоодветен за некои апликации. Програмите C се помали, поефикасни и обезбедуваат системска контрола на пониско ниво, но се посложени за програмирање, немаат вградени лесни рутини за обработка на текст и потешко се дебагираат.

Кој јазик е најсоодветен за CGI програмирање? Онаа што ја сметате за попогодна од програмска гледна точка. И двете се подеднакво ефикасни за програмирање на CGI апликации, а со соодветни библиотеки и двете имаат слични способности. Меѓутоа, ако имате тешко достапен сервер, можете да користите помали, преведени програми C. Ако треба брзо да напишете апликација која бара многу работа за обработка на текст, наместо тоа можете да го користите Perl.

Внимание

Постојат некои важни алтернативи за CGI апликациите. Многу сервери сега вклучуваат програмирање API, што го олеснува програмирањето на директните екстензии на серверот за разлика од самостојните CGI апликации. API серверите се генерално поефикасни од CGI програмите. Другите сервери вклучуваат вградена функционалност што може да се справи со специјални елементи што не се CGI, како што е поврзување на базата на податоци. Конечно, со некои апликации може да се ракува со некои нови технологии на клиентска (наместо од страна на серверот) како Java. Со такви брзи промени во технологијата, дали CGI брзо ќе застари?

Тешко. CGI има неколку предности во однос на поновите технологии.

  • Тој е разновиден и пренослив. Можете да напишете CGI апликација користејќи речиси секој програмски јазик на која било платформа. Некои од алтернативите, како што е API на серверот, ве ограничуваат на одредени јазици и се многу потешки за учење.
  • Малку е веројатно дека технологиите од страната на клиентот, како што е Java, ќе го заменат CGI, бидејќи има некои апликации кои апликациите од серверот се многу посоодветни за извршување.
  • Многу од ограничувањата на CGI се ограничувања на HTML или HTTP. Како што се развиваат интернет стандардите како целина, така се развиваат и CGI способностите.

Резиме

Common Gateway Interface е протокол преку кој програмите комуницираат со веб-серверите. Разновидноста на CGI им дава на програмерите можност да пишуваат портални програми на речиси секој јазик, иако има многу компромиси поврзани со различни јазици. Без оваа способност, создавањето интерактивни веб-страници би било тешко, во најдобар случај ќе бара модификации на серверот, а интерактивноста би била недостапна за повеќето корисници кои не се администратори на страницата.

Поглавје 2: Основи

Пред неколку години, создадов страница за колеџ на Харвард каде што луѓето можеа да испраќаат коментари за нив. Во тоа време, Интернетот беше млад, а документацијата беше ретка. Јас, како и многу други, се потпирав на кратки системи за документација и програмирање создадени од други за да се научам себеси за програмирање CGI. Иако овој метод на проучување бараше одредено пребарување, многу експерименти и создаде многу прашања, тој беше многу ефикасен. Ова поглавје е резултат на мојата рана работа со CGI (со неколку измени, се разбира).

Иако е потребно извесно време за целосно разбирање и совладување на заедничкиот интерфејс на портата, самиот протокол е прилично едноставен. Секој кој има некои основни програмски вештини и е запознаен со Интернет може брзо да научи да програмира прилично сложени CGI апликации исто како што јас и другите научивме да правиме пред неколку години.

Целта на ова поглавје е да ги претстави основите на CGI на сеопфатен, иако кондензиран начин. Секој концепт што се дискутира овде е детално претставен во следните поглавја. Сепак, по завршувањето на ова поглавје, можете веднаш да започнете со програмирање на CGI апликации. Откако ќе го достигнете ова ниво, можете да ги научите сложеноста на CGI, или со читање на остатокот од оваа книга или едноставно експериментирање самостојно.

Можете да го сведете CGI програмирањето на две задачи: примање информации од веб-прелистувачот и испраќање информации назад до прелистувачот. Ова се прави доста интуитивно откако ќе се запознаете со нормалната употреба на CGI апликациите. Честопати од корисникот се бара да пополни некаков формулар, на пример, да го вметне неговото име. Откако корисникот ќе го пополни формуларот и ќе притисне Enter, оваа информација се испраќа до програмата CGI. Потоа, програмата CGI мора да ги претвори овие информации во нешто што го разбира, соодветно да ги обработи и потоа да ги испрати назад до прелистувачот, било да е тоа едноставна потврда или резултат од пребарување во повеќенаменска база на податоци.

Со други зборови, програмирањето на CGI бара разбирање како да се прима влез од интернет прелистувачот и како да се испрати излез назад. Што се случува помеѓу влезните и излезните фази на програмата CGI зависи од целта на развивачот. Ќе откриете дека главната тешкотија во програмирањето CGI лежи во оваа средна фаза; Откако ќе научите како да работите со влез и излез, тоа во суштина е доволно за да станете развивач на CGI.

Во ова поглавје, ќе ги научите принципите зад влезот и излезот на CGI, како и другите основни вештини што ќе ви требаат за пишување и користење на CGI, вклучително и работи како создавање HTML форми и именување на вашите CGI програми. Ова поглавје ги опфаќа следните теми:

  • Традиционална програма "Здраво, свет!";
  • Излез CGI: Испраќање информации назад за прикажување во интернет прелистувач;
  • Конфигурирање, инсталирање и извршување на апликацијата. Ќе научите за различни веб платформи и сервери;
  • Влез CGI: Толкување на информации испратени од веб-прелистувачот. Вовед во некои корисни програмски библиотеки за парсирање на таков влез;
  • Едноставен пример: ги опфаќа сите лекции во дадено поглавје;
  • Стратегија за програмирање.

Поради природата на ова поглавје, малку допирам само некои теми. Не грижете се; Сите овие теми се опфатени многу подлабоко во други поглавја.

Здраво свету!

Почнувате со традиционален воведен програмски проблем. Ќе напишете програма што прикажува „Здраво, Свет!“ на вашиот веб-прелистувач. Пред да ја напишете оваа програма, мора да разберете какви информации очекува да добие веб-прелистувачот од програмите CGI. Исто така, треба да знаете како да ја стартувате оваа програма за да можете да ја видите во акција.

CGI е јазично независен, така што можете да ја имплементирате оваа програма на кој било јазик. Овде се користат неколку различни јазици за да се демонстрира независноста на секој јазик. Во Перл, програмата „Здраво, свето!“. прикажано во листата 2.1.

Листа 2.1. Здраво свету! во Перл. #!/usr/local/bin/perl # Hello.cgi - Мојата прва CGI програма за печатење "Content-Type: text/html\n\n"; печати" \n"; печати" Здраво свету!"; печати"\n"; печати" \n"; печати"

Здраво свету!

\n"; печати"

\n";

Зачувајте ја оваа програма како hello.cgi и инсталирајте ја на соодветната локација. (Ако не сте сигурни каде е, не грижете се; ќе дознаете во делот „Инсталирање и водење програма CGI“ подоцна во ова поглавје.) За повеќето сервери, директориумот што ви треба е cgi-bin . Сега, повикајте ја програмата од вашиот веб-прелистувач. За повеќето, ова значи отворање на следниов униформен локатор на ресурси (URL):

http://hostname/directoryname/hello.cgi

Името на домаќинот е името на вашиот веб-сервер, а директориумот е директориумот каде што сте ставиле hello.cgi (веројатно cgi-bin).

Разделување здраво.cgi

Има неколку работи што треба да се забележат за hello.cgi.

Прво, користите едноставни команди за печатење. CGI програмите не бараат посебни дескриптори на датотеки или излезни дескриптори. За да испратите излез до прелистувачот, едноставно печатете на stdout.

Второ, имајте предвид дека содржината на првата изјава за печатење (Тип на содржина: текст/html) не се појавува на вашиот веб-прелистувач. Можете да ги испратите сите информации што сакате назад до прелистувачот (HTML страница, графика или звук), но прво треба да му кажете на прелистувачот какви податоци ги испраќате. Оваа линија му кажува на прелистувачот какви информации да очекува - во овој случај, страница HTML.

Трето, програмата се вика hello.cgi. Не секогаш треба да ја користите наставката .cgi со името на вашата CGI програма. Иако изворниот код за многу јазици ја користи и екстензијата .cgi, тој не се користи за означување на типот на јазикот, туку е начин серверот да ја идентификува датотеката како извршна датотека наместо графичка датотека, HTML-датотека или текстуална датотека. Серверите често се конфигурирани да се обидуваат само да ги извршуваат оние датотеки што ја имаат оваа екстензија, прикажувајќи ја содржината на сите други. Иако користењето на екстензијата .cgi не е потребно, сепак се смета за добра практика.

Генерално, hello.cgi се состои од два главни дела:

  • му кажува на прелистувачот какви информации да очекува (Тип на содржина: текст/html)
  • му кажува на прелистувачот што да прикаже (Здраво, свет!)

Здраво свету! во Ц

За да се прикаже јазичната независност на програмите CGI, листата 2.2 го прикажува еквивалентот на програмата hello.cgi напишана во C.

Листа 2.2. Здраво свету! во C. /* hello.cgi.c - Здраво, World CGI */ #include int main() (printf("Тип на содржина: текст/html\r\n\r\n"); printf(" \n"); printf(" Здраво свету!\n"); printf("\n"); printf(" \n"); printf("

Здраво свету!

\n"); printf("

\n");)

Забелешка

Забележете дека Perl верзијата на hello.cgi користи печатење од типот на содржина ": text/html\n\n "; Додека верзијата C користи Printf("Content-Type: text/html\r\n\r\n");

Зошто Perl го печати операторот завршува со две нови линии (\n) додека C printf завршува со две врати и нови линии (\r\n)?

Технички, заглавијата (сите излези пред празната линија) се очекува да бидат одделени со повратни информации и нови линии. За жал, на DOS и Windows машините, Perl го преведува \r како уште една нова линија наместо како враќање.

Иако исклучокот на Perl \rs е технички неточен, тој ќе работи на скоро сите протоколи и е подеднакво пренослив на сите платформи. Затоа, во сите примери на Perl во оваа книга, јас користам заглавија за раздвојување на нова линија наместо враќање и нови линии.

Соодветно решение за овој проблем е претставено во Поглавје 4, Заклучок.

Ниту на веб-серверот ниту на прелистувачот не им е важно кој јазик се користи за пишување на програмата. Иако секој јазик има предности и недостатоци како програмски јазик CGI, најдобро е да го користите јазикот со кој најмногу ви одговара да работите. (Изборот на програмски јазик е подетално разгледан во Поглавје 1, „Заеднички интерфејс за портал (CGI)“).

CGI рендерирање

Сега можете подетално да го разгледате прашањето за испраќање информации до веб-прелистувачот. Од примерот „Здраво, свети!“, можете да видите дека веб-прелистувачите очекуваат две групи на податоци: заглавие, кое содржи информации како што се информациите да се прикажат (на пр. Тип на содржина: линија) и вистински информации (што е веб-прелистувачот прикажува). Овие две информации се одделени со празна линија.

Заглавието се нарекува HTTP заглавие. Дава важни информации за информациите што прелистувачот ќе ги прими. Постојат неколку различни типови на HTTP заглавија, а најчест е оној што сте го користеле претходно: Content-Type: header. Може да користите различни комбинации на заглавија на HTTP, одделени со повратни информации и нови линии (\r\n). Празната линија што го одвојува заглавјето од податоците, исто така, се состои од враќање и нова линија (зошто и двете се потребни е накратко дискутирано во претходната белешка и детално во Поглавје 4). Ќе дознаете за другите HTTP заглавија во Поглавје 4; Во моментов се занимавате со заглавие од типот на содржина:.

Тип на содржина: Заглавието го опишува типот на податоци што ги враќа CGI. Соодветниот формат за ова заглавие е:

Содржина-Тип: подтип/тип

Каде што подтипот/типот е точниот тип на повеќенаменски наставки за интернет пошта (MIME). Најчестиот тип MIME е типот HTML: text/html. Табелата 2.1 наведува неколку почести типови MIME за кои ќе се дискутира; Поцелосно наведување и анализа на типовите MIME е дадено во Поглавје 4.

Забелешка

MIME првично беше измислен за да ја опише содржината на телата на пораките по пошта. Стана прилично вообичаен начин за претставување информации за типот на содржина. Можете да прочитате повеќе за MIME во RFC1521. RFC на Интернет се означени за Барања за коментари, кои се резиме на одлуки донесени од групи на Интернет кои се обидуваат да постават стандарди. Можете да ги видите резултатите од RFC1521 на следната адреса: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Табела 2.1. Некои вообичаени типови MIME. MIME Тип Опис Текст/html Јазик за означување на хипертекст (HTML) Текст/обичен Обичен текстуален фајл Слика/гиф Графички датотеки GIF слика/jpeg Компресирани графички датотеки JPEG аудио/основни аудио датотеки Sun *.au Аудио/x-wav Windows датотеки *. wav

По заглавјето и празната линија, едноставно ги печатите податоците во форма што ви треба. Ако испраќате HTML, тогаш отпечатете ги HTML ознаките и податоците на stdout по заглавието. Можете исто така да испраќате графички, звук и други бинарни датотеки со едноставно печатење на содржината на датотеката на stdout. Неколку примери за ова се дадени во Поглавје 4.

Инсталирање и водење на CGI програма

Овој дел донекаде отстапува од програмирањето CGI и зборува за конфигурирање на вашиот веб-сервер да користи CGI, инсталирање и извршување на програми. Ќе се запознаете со различни сервери за различни платформи со повеќе или помалку детали, но ќе мора да копате подлабоко во документацијата на вашиот сервер за да ја пронајдете најдобрата опција.

Сите сервери бараат простор за серверските датотеки и простор за HTML документи. Во оваа книга, областа на серверот се нарекува ServerRoot, а областа за документи се нарекува DocumentRoot. На UNIX машините, ServerRoot обично е во /usr/local/etc/httpd/, а DocumentRoot обично е во /usr/local/etc/httpd/htdocs/. Сепак, ова нема да направи никаква разлика за вашиот систем, затоа заменете ги сите референци за ServerRoot и DocumentRoot со вашите сопствени ServerRoot и DocumentRoot.

Кога пристапувате до датотеките користејќи го вашиот веб-прелистувач, ја одредувате датотеката во URL-то во однос на DocumentRoot. На пример, ако адресата на вашиот сервер е mymachine.org, тогаш пристапувате до оваа датотека со следната URL: http://mymachine.org/index.html

Конфигурирање на серверот за CGI

Повеќето веб-сервери се претходно конфигурирани да дозволат користење на CGI програми. Обично два параметри му покажуваат на серверот дали датотеката е апликација CGI или не:

  • Назначен директориум. Некои сервери ви дозволуваат да одредите дека сите датотеки во одреден директориум (обично наречен cgi-bin стандардно) се CGI.
  • Екстензии на името на датотеката. Многу сервери ја имаат оваа претконфигурација која овозможува сите датотеки што завршуваат на .cgi да се дефинираат како CGI.

Методот назначен директориум е нешто како остаток од минатото (првите сервери го користеа како единствен метод за одредување кои датотеки се CGI програми), но има неколку предности.

  • Ги одржува CGI програмите централизирани, спречувајќи други директориуми да станат преполни.
  • Не сте ограничени на некоја конкретна екстензија на името на датотеката, па можете да ги именувате вашите датотеки како што сакате. Некои сервери ви дозволуваат да назначите неколку различни директориуми како директориуми CGI.
  • Исто така, ви дава поголема контрола врз тоа кој може да снима CGI. На пример, ако имате сервер и поддржувате систем со повеќе корисници и не сакате тие да користат свои CGI скрипти без претходно да ја прегледаат програмата од безбедносни причини, можете да ги назначите само тие датотеки во ограничен, централизиран директориум како CGI . Корисниците потоа ќе треба да ви дадат CGI програми за инсталирање, а вие прво можете да го прегледате кодот за да бидете сигурни дека програмата нема некои големи безбедносни проблеми.

Нотацијата CGI преку наставката за името на датотеката може да биде корисна поради неговата флексибилност. Не сте ограничени на еден единствен директориум за CGI програми. Повеќето сервери може да се конфигурираат да препознаваат CGI преку наставката за името на датотеката, иако не сите се стандардно конфигурирани на овој начин.

Предупредување

Запомнете ја важноста на безбедносните проблеми кога го конфигурирате вашиот сервер за CGI. Некои совети ќе бидат опфатени овде, а Поглавје 9, Заштита на CGI, ги опфаќа овие аспекти подетално.

Инсталирање CGI на UNIX сервери

Без оглед на тоа како е конфигуриран вашиот UNIX сервер, има неколку чекори што треба да ги преземете за да се осигурате дека вашите CGI апликации работат како што се очекуваше. Вашиот веб-сервер обично ќе работи како непостоечки корисник (односно, корисникот на UNIX никој - сметка која нема дозволи за датотеки и не може да се најави). CGI скриптите (напишани во Perl, Bourne школка или друг јазик за скриптирање) мора да бидат извршни и читливи низ целиот свет.

Поим

За да ги направите вашите датотеки светски читливи и извршни, користете ја следнава команда за дозволи на UNIX: име на датотека chmod 755.

Ако користите јазик за скриптирање како што се Perl или Tcl, наведете ја целосната патека на вашиот преведувач на првата линија од вашата скрипта. На пример, скрипта Perl што користи perl во директориумот /usr/local/bin ќе започне со следнава линија:

#!/usr/local/bin/perl

Предупредување

Никогаш не ставајте го толкувачот (perl или Tcl Wish бинарен) во директориумот /cgi-bin. Ова создава безбедносен ризик за вашиот систем. Ова е подетално дискутирано во Поглавје 9.

Некои генерички UNIX сервери

Серверите NCSA и Apache имаат слични конфигурациски датотеки бидејќи серверот Apache првично се базираше на кодот NCSA. Стандардно, тие се конфигурирани така што секоја датотека во директориумот cgi-bin (се наоѓа стандардно во ServerRoot) е CGI програма. За да ја промените локацијата на директориумот cgi-bin, можете да ја уредите конфигурациската датотека conf/srm.conf. Форматот за конфигурирање на овој директориум е

ScriptAlias ​​- лажно име на име на директориумот

каде што fakedirectoryname е името на псевдо директориумот (/cgi-bin) и realdirectoryname е целосната патека каде што всушност се складирани програмите CGI. Можете да конфигурирате повеќе од еден ScriptAlias ​​со додавање на повеќе ScriptAlias ​​линии.

Стандардната конфигурација е доволна за потребите на повеќето корисници. Треба да ја уредите линијата во датотеката srm.conf во секој случај за да го одредите точното име на realdirectory. Ако, на пример, вашите CGI програми се наоѓаат во /usr/local/etc/httpd/cgi-bin, линијата ScriptAlias ​​во вашата датотека srm.conf треба да биде вака:

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

За да пристапите или да се поврзете до програмите CGI лоцирани во овој директориум, користете го следниов URL:

Http://име на домаќин/cgi-bin/име на програма

Каде што името на домаќинот е името на домаќинот на вашиот веб-сервер, а името на програмата е името на вашиот CGI.

На пример, да речеме дека ја копирате програмата hello.cgi во вашиот директориум cgi-bin (на пр. /usr/local/etc/httpd/cgi-bin) на вашиот веб-сервер наречен www.company.com. За да пристапите до вашиот CGI, користете го следниов URL: http://www.company.com/cgi-bin/hello.cgi

Ако сакате да го конфигурирате вашиот NCSA или Apache-сервер да препознава која било датотека со екстензија .cgi како CGI, треба да уредите две конфигурациски датотеки. Прво, во датотеката srm.conf, декоментирајте ја следната линија:

AddType апликација/x-httpd-cgi .cgi

Ова ќе го поврзе типот MIME CGI со наставката .cgi. Сега, треба да ја смениме датотеката access.conf за да можеме да работиме CGI во кој било директориум. За да го направите ова, додадете ја опцијата ExecCGI во линијата Опција. Ќе изгледа нешто како следнава линија:

Индекси на опции FollowSymLinks ExecCGI

Сега, секоја датотека со наставка .cgi се смета за CGI; пристапете до него како што би било која датотека на вашиот сервер.

Серверот CERN е конфигуриран на ист начин како серверите Apache и NCSA. Наместо ScriptAlias, серверот CERN ја користи командата Exec. На пример, во датотеката httpd.conf, ќе ја видите следната линија:

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

Други UNIX сервери може да се конфигурираат на ист начин; Ова е подетално опишано во документацијата на серверот.

Инсталирање CGI на Windows

Повеќето сервери достапни за Windows 3.1, Windows 95 и Windows NT се конфигурирани со користење на методот „наставка на име на датотека“ за CGI препознавање. Општо земено, менувањето на конфигурацијата на серверот базиран на Windows едноставно бара извршување на програмата за конфигурација на серверот и правење соодветни промени.

Понекогаш конфигурирањето на серверот за правилно извршување на скрипта (како што е Perl) може да биде тешко. Во DOS или Windows, нема да можете да го наведете толкувачот на првата линија од скриптата, како што е случајот со UNIX. Некои сервери имаат претходно дефинирана конфигурација за поврзување на одредени екстензии на имиња на датотеки со преведувачот. На пример, многу веб-сервери на Windows претпоставуваат дека датотеките што завршуваат на .pl се Perl скрипти.

Ако серверот не го извршува овој тип на асоцијација на датотеки, можете да дефинирате серија датотека на пакувачот што ги повикува и преведувачот и скриптата. Како и кај серверот UNIX, не инсталирајте го толкувачот ниту во директориумот cgi-bin, ниту во кој било директориум што е достапен за веб.

Инсталирање CGI на Macintosh

Двете најпознати серверски опции за Macintosh се WebStar StarNine и неговиот претходник MacHTTP. И двајцата го препознаваат CGI по неговата екстензија на името на датотеката.

MacHTTP разбира две различни екстензии: .cgi и .acgi, што значи асинхрон CGI. Редовните CGI програми инсталирани на Macintosh (со екстензија .cgi) ќе го држат веб-серверот во зафатена состојба додека CGI не заврши со работа, предизвикувајќи серверот да ги суспендира сите други барања. Асинхрониот CGI, од друга страна, му овозможува на серверот да прифаќа барања дури и додека работи.

Развивачот на CGI Macintosh кој користи кој било од овие веб-сервери треба, ако е можно, да користи само наставката .acgi наместо наставката .cgi. Треба да работи со повеќето CGI програми; ако не работи, преименувајте ја програмата во .cgi.

Извршување на CGI

Откако ќе го инсталирате CGI, постојат неколку начини да го извршите. Ако вашата CGI програма е програма само за излез, како што е програмата Hello,World!, тогаш можете да ја извршите едноставно со пристап до нејзината URL адреса.

Повеќето програми работат како серверска апликација на HTML форма. Пред да научите како да добивате информации од овие форми, прво прочитајте краток вовед за креирање на такви форми.

Брзо упатство за HTML форми

Двете најважни ознаки во HTML форма се

И . Можете да креирате повеќето HTML форми користејќи само овие две ознаки. Во ова поглавје, ќе ги истражите овие ознаки и мала подгрупа на можни типови или атрибути. . Целосен водич и врска до HTML формулари е во Поглавје 3, HTML и Форми.

Означете

Означете се користи за да се одреди кој дел од HTML-датотеката треба да се користи за информации внесени од корисникот. Ова се однесува на тоа како повеќето HTML страници ја нарекуваат CGI програма. Атрибутите на ознаките ги специфицираат името и локацијата на програмата - или локално или како целосна URL-адреса, типот на кодирање што се користи и методот на движење на податоците што го користи програмата.

Следниот ред ги прикажува спецификациите за ознаката :

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

Атрибутот ENCTYPE не игра посебна улога и обично не е вклучен со ознаката . Детални информации во врска со ознаката ENCTYPE се дадени во Поглавје 3. Еден начин да се користи ENCTYPE е прикажан во Поглавје 14, „Брендирани екстензии“.

Атрибутот ACTION се однесува на URL-то на програмата CGI. Откако корисникот ќе го пополни формуларот и ќе обезбеди информации, сите информации се кодираат и се пренесуваат во програмата CGI. Самата програма CGI го решава проблемот со декодирање и обработка на информации; Овој аспект е дискутиран во „Прифаќање на влез од прелистувачот“, подоцна во ова поглавје.

Конечно, атрибутот METHOD опишува како програмата CGI треба да прима влез. Двата методи, GET и POST, се разликуваат по тоа како ги пренесуваат информациите до програмата CGI. И двете се дискутирани во „Прифаќање на влез од прелистувачот“.

За да може прелистувачот да дозволи внесување на корисникот, сите ознаки за формулари и информации мора да бидат опкружени со ознаката . Не заборавајте на ознаката за затворање

за означување на крајот на формуларот. Не можете да имате формулар во формулар, иако можете да поставите формулар што ви овозможува да презентирате делови од информации на различни места; овој аспект е опширно дискутиран во Поглавје 3.

Означете

Можете да креирате ленти за внесување текст, радио копчиња, полиња за избор и други средства за прифаќање на внесување користејќи ја ознаката . Овој дел опфаќа само полиња за внесување текст. За да го имплементирате ова поле, користете ја ознаката со следните атрибути:

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

NAME е симболичното име на променливата што ја содржи вредноста внесена од корисникот. Ако вклучите текст во атрибутот VALUE, тој текст ќе биде поставен како стандарден во полето за внесување текст. Атрибутот SIZE ви овозможува да ја одредите хоризонталната должина на полето за внесување како што ќе се појави во прозорецот на прелистувачот. Конечно, MAXLENGTH го одредува максималниот број знаци што корисникот може да ги внесе во полето. Имајте предвид дека атрибутите VALUE, SIZE, MAXLENGTH се опционални.

Поднесување формулар

Ако имате само едно поле за текст во формуларот, корисникот може да го поднесе формуларот со едноставно внесување информации на тастатурата и притискање на Enter. Во спротивно, мора да има некој друг начин за корисникот да ги презентира информациите. Корисникот доставува информации користејќи го копчето за поднесување со следнава ознака:

< Input type=submit >

Оваа ознака создава копче Испрати во вашата форма. Кога корисникот ќе заврши со пополнување на формуларот, тој или таа може да ја испрати неговата содржина на URL-то наведено во атрибутот ACTION на формуларот со кликнување на копчето Испрати.

Прифаќање на влез од прелистувачот

Погоре беа примери за снимање на CGI програма која испраќа информации од серверот до прелистувачот. Во реалноста, CGI програма која само дава податоци нема многу апликации (некои примери се дадени во Поглавје 4). Поважната способност на CGI е да прима информации од прелистувачот - функцијата што му дава на веб интерактивен карактер.

Програмата CGI добива два вида информации од прелистувачот.

  • Прво, добива разни информации за прелистувачот (неговиот тип, што може да гледа, домаќинот на домаќинот и слично), серверот (неговото име и верзија, неговата порта за извршување итн.) и програмата CGI самата (име на програмата и каде се наоѓа). Серверот ги дава сите овие информации на програмата CGI преку променливите на околината.
  • Второ, програмата CGI може да прима кориснички влез. Оваа информација, откако ќе биде кодирана од прелистувачот, се испраќа или преку променлива на околината (метод GET) или преку стандарден влез (stdin - метод POST).

Променливи на животната средина

Корисно е да се знае кои променливи на околината се достапни за програмата CGI, и за време на обуката и за дебагирање. Табелата 2.2 наведува некои од достапните променливи на животната средина CGI. Можете исто така да напишете програма CGI која ги прикажува променливите на околината и нивните вредности на веб-прелистувач.

Табела 2.2. Некои важни променливи на животната средина CGI Променлива на животната средина Цел REMOTE_ADDR IP адреса на машината на клиентот. REMOTE_HOST Домаќинот на машината на клиентот. HTTP _ACCEPT Ги наведува типовите на податоци MIME што може да ги интерпретира прелистувачот. HTTP _USER_AGENT Информации за прелистувачот (тип на прелистувач, број на верзија, оперативен систем итн.). REQUEST_METHOD ДОБИЕ или ПОСТИ. CONTENT_LENGTH Големината на влезот ако се испрати преку POST. Ако нема влез или ако се користи методот GET, овој параметар е недефиниран. QUERY_STRING Ги содржи влезните информации кога се пренесуваат со методот GET. PATH_INFO Дозволува корисникот да одреди патека од командната линија CGI (на пример, http://hostname/cgi-bin/programname/path). PATH_TRANSLATED Ја преведува релативната патека во PATH_INFO на вистинска патека на системот.

За да напишете CGI апликација која прикажува променливи на околината, треба да знаете како да направите две работи:

  • Дефинирајте ги сите променливи на околината и нивните соодветни вредности.
  • Печатете ги резултатите во прелистувачот.

Веќе знаете како да ја извршите последната операција. Во Perl, променливите на животната средина се зачувуваат во асоцијативната низа %ENV, која се воведува со името на променливата на животната средина. Листата 2.3 содржи env.cgi, програма Perl која ја постигнува нашата цел.

Листа 2.3. Програма Perl, env.cgi, која ги печати сите променливи на околината CGI.

#!/usr/local/bin/perl печатење „Тип на содржина: текст/html\n\n“; печати" \n"; печати" CGI животна средина\n"; печати"\n"; печати" \n"; печати"

CGI животна средина

\n"; за секој $env_var (клучеви %ENV) (печати " $env_var= $ENV ($env_var)
\n";) печати "

\n";

Слична програма може да биде напишана во C; целосниот код е во листата 2.4.

Листа 2.4. Env.cgi.c во C. /* env.cgi.c */ #include надворешен карактер **околина; int main() ( char **p = опкружување; printf ("Тип на содржина: текст/html\r\n\r\n"); printf (" \n"); printf(" CGI животна средина\n"); printf("\n"); printf(" \n"); printf("

CGI животна средина

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

\n");)

ДОБИЈ или ПОСТАВИ?

Која е разликата помеѓу методите GET и POST? GET ја пренесува кодираната влезна низа преку променливата на околината QUERY_STRING, додека POST ја пренесува преку stdin. POST е префериран метод, особено за формулари со многу податоци, бидејќи нема ограничувања за количината на испратени информации, додека со методот GET количината на медиумскиот простор е ограничен. Сепак, GET има одредена корисна особина; ова е детално опфатено во Поглавје 5, Внесување.

За да одреди кој метод се користи, програмата CGI ја проверува променливата на околината REQUEST_METHOD, која ќе биде поставена или на GET или на POST. Ако е поставено на POST, должината на кодираните информации се зачувува во променливата на околината CONTENT_LENGTH.

Кодиран влез

Кога корисникот поднесува формулар, прелистувачот прво ги шифрира информациите пред да ги испрати на серверот, а потоа до апликацијата CGI. Кога ја користите ознаката , на секое поле му е дадено симболично име. Вредноста внесена од корисникот е претставена како вредност на променливата.

За да се утврди ова, прелистувачот користи спецификација за кодирање URL, која може да се опише на следниов начин:

  • Одвојува различни полиња со амперсанд (&).
  • Ги раздвојува името и вредностите со еднакви знаци (=), со името лево и вредноста надесно.
  • Ги заменува празнините со знаци плус (+).
  • Ги заменува сите „ненормални“ знаци со знакот процент (%) проследен со двоцифрен хексадецимален код за знакот.

Вашата конечна кодирана низа ќе биде слична на следново:

Име1=вредност1&име2=вредност2&име3=вредност3 ...

Забелешка: Спецификациите за кодирање на URL се наоѓаат во RFC1738.

На пример, да речеме дека сте имале формулар што бара име и возраст. HTML-кодот што се користеше за прикажување на оваа форма е прикажан во Списокот 2.5.

Листа 2.5. HTML код за прикажување на формата за името и возраста.

Име и возраст

Внесете го вашето име:

Внесете ја вашата возраст:



Да речеме дека корисникот го внесува Џо Шмо во полето за име и 20 во полето за возраст. Влезот ќе биде кодиран во влезната низа.

Име=Џо+Шмо&возраст=20

Влез за парсирање

За овие информации да бидат корисни, треба да ги користите информациите за нешто што може да го користат вашите CGI програми. Стратегиите за парсирање на влезот се опфатени во Поглавје 5. Во пракса, никогаш нема да морате да размислувате како да го анализирате влезот, бидејќи неколку експерти веќе напишале библиотеки кои вршат парсирање, достапни за секого. Две такви библиотеки се претставени во ова поглавје во следните делови: cgi -lib.pl за Perl (напишано од Стив Бренер) и cgihtml за C (напишано од мене).

Општата цел на повеќето библиотеки напишани на различни јазици е да се анализира кодирана низа и да се стават парови со имиња и вредности во структура на податоци. Постои очигледна предност за користење на јазик кој има вградени структури на податоци како Perl; сепак, повеќето библиотеки за јазици на ниско ниво како што се C и C++ вклучуваат структура на податоци и потпрограма за извршување.

Не е неопходно да се постигне целосно разбирање на библиотеките; поважно е да научите како да ги користите како алатки за да му ја олесните работата на CGI програмерот.

Cgi-lib.pl

Cgi-lib.pl користи Perl асоцијативни низи. Функцијата &ReadParse ја анализира влезната низа и го внесува секој пар име/вредност по име. На пример, соодветните Perl низи потребни за декодирање на влезната низа „име/возраст“ штотуку претставена ќе бидат

&ReadParse(*влез);

Сега, за да ја видите внесената вредност за „име“, можете да пристапите до асоцијативната низа $input(„име“). Слично на тоа, за да пристапите до вредноста на „возраст“, ​​треба да ја погледнете променливата $input („возраст“).

Cgihtml

C нема вградени структури на податоци, па cgihtml имплементира своја листа на врски за употреба со своите рутини за парсирање на CGI. Ова ја дефинира структурата на влезниот тип на следниов начин:

Typedef struct ( Char *име; Char *вредност; ) Entrytype;

За да се анализира влезната низа „име/возраст“ во C користејќи cgihtml, се користи следново:

/* прогласи поврзана листа наречена влез */ Llist влез; /* анализирај го влезот и локацијата во поврзаната листа */ read_cgi_input(&input);

За да пристапите до информациите за возраста, можете или рачно да ја анализирате листата или да ја користите достапната функција cgi _val().

#вклучи #вклучи Char *age = malloc(sizeof(char)*strlen(cgi_val(влез, „возраст“)) + 1); Strcpy(возраст, cgi_val (влез, „возраст“));

Вредноста „возраст“ сега е зачувана во стрингот старост.

Забелешка: Наместо да користам едноставна низа (како char age ;), јас динамично доделувам мемориски простор за жици. Иако ова го отежнува програмирањето, сепак е важно од безбедносна гледна точка. Ова е подетално дискутирано во Поглавје 9.

Едноставна CGI програма

Ќе напишете CGI програма наречена nameage.cgi која се справува со формата име/возраст. Обработката на податоците (она што јас обично го нарекувам „нешта помеѓу“) е минимална. Nameage.cgi едноставно го декодира влезот и го прикажува името и возраста на корисникот. Иако нема многу употреба за таква алатка, таа го демонстрира најкритичниот аспект на програмирањето CGI: влез и излез.

Ја користите истата форма како погоре, повикувајќи ги полињата „име и возраст“. Сè уште не грижете се за робусноста и ефикасноста; решете го постојниот проблем на наједноставен начин. Решенијата Perl и C се прикажани во Списоците 2.6 и 2.7, соодветно.

Листа 2.6. Nameage.cgi во Perl

#!/usr/local/bin/perl # nameage.cgi бара „cgi-lib.pl“ &ReadParse(*влез); печати „Тип на содржина: текст/html\r\n\r\n“; печати" \n"; печати" Име и возраст\n"; печати"\n"; печати" \n"; отпечати "Здраво, " . $input("name") . ". Имаш\n"; печати $input("age") . " години.

\n"; печати"

\n";

Листа 2.7. nameage.cgi во C

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() (влез во листа; read_cgi_input(&внес); printf("Тип на содржина: текст/html\r\n\r\n"); printf(" \n"); printf(" Име и возраст\n"); printf("\n"); printf(" \n"); printf("Здраво, %s. Вие сте\n",cgi_val(влез,"име")); printf("%s години.

\n",cgi_val(влез," возраст")); printf("

\n");)

Ве молиме имајте предвид дека овие две програми се речиси еквивалентни. И двете содржат рутини за парсирање кои зафаќаат само една линија и го обработуваат целиот влез (благодарение на соодветните библиотечни рутини). Излезот е во суштина изменета верзија на вашата главна програма Hello, World!.

Обидете се да ја извршите програмата со пополнување на формуларот и кликнување на копчето Испрати.

Општа програмска стратегија

Сега ги знаете сите основни принципи потребни за програмирање CGI. Откако ќе разберете како CGI ги прима информациите и како ги испраќа назад до прелистувачот, вистинскиот квалитет на вашиот финален производ зависи од вашите општи програмски способности. Имено, кога програмирате CGI (или што било, за таа работа), имајте ги на ум следните квалитети:

  • Едноставност
  • Ефикасност
  • Разновидност

Првите два квалитети се доста чести: обидете се да го направите вашиот код што е можно почитлив и ефикасен. Разновидноста се однесува повеќе на CGI програмите отколку на другите апликации. Кога ќе започнете да развивате сопствени CGI програми, ќе научите дека има неколку основни апликации што секој сака да ги направи. На пример, една од најчестите и очигледни задачи на програмата CGI е да обработи формулар и да ги испрати резултатите до одреден примач. Може да имате обработени повеќе посебни формулари, секој со различен примач. Наместо да пишувате CGI програма за секој поединечен формулар, можете да заштедите време со пишување поопшта CGI програма која се однесува на сите форми.

Со покривање на сите основни аспекти на CGI, ви дадов доволно информации за да започнете со програмирање CGI. Меѓутоа, за да станете ефективен развивач на CGI, треба да имате подлабоко разбирање за тоа како CGI комуницира со серверот и прелистувачот. Остатокот од оваа книга детално ги опфаќа прашањата кои беа накратко споменати во ова поглавје, како и стратегијата за развој на апликации и предностите и ограничувањата на протоколот.

Резиме

Ова поглавје накратко ги претстави основите на CGI програмирањето. Вие создавате излез со правилно форматирање на вашите податоци и печатење на stdout. Примањето CGI влез е малку покомплексно бидејќи мора да се анализира пред да може да се користи. За среќа, веќе постојат неколку библиотеки кои вршат парсирање.

Досега треба да ви биде прилично удобно со програмирање на CGI апликации. Остатокот од оваа книга навлегува во повеќе детали за спецификациите, советите и стратегиите за програмирање за понапредни и сложени апликации.

Сопствениците на онлајн продавниците се запознаени со концептот на „електронска трговија“ од прва рака; тие веќе го знаат одговорот на прашањето „е-трговија - што е тоа? Но, ако дојдете до дното, се појавуваат многу нијанси и овој термин добива пошироко значење.

Е-трговија: што е тоа?

Општиот концепт е како што следува: е-трговија се подразбира како одреден пристап за водење бизнис, кој вклучува вклучување на голем број операции кои користат дигитален пренос на податоци при обезбедување на стоки или обезбедување услуги/работа, вклучително и користење на Интернет.

Така, тоа е секоја комерцијална трансакција што се врши со користење на електронски средства за комуникација.

Работната шема е поставена на следниов начин:

  • секој може да биде блогер или кој било друг сопственик на сопствена интернет страница) се регистрира во овој систем;
  • добива своја врска;
  • поставува посебен код на својата веб-страница - се појавува оглас за избраниот официјален партнер на Мрежата на партнери за е-трговија;
  • ја следи конверзијата на веб-страницата;
  • заработува одреден процент за секое купување од посетител на вашата веб-локација кој следи поврзана врска.

ВП е-трговија

Голем број луѓе сега се страстни за е-трговија, пред се поради желбата да создадат сопствена веб-страница, единствена онлајн продавница за продажба на сопствени производи. За да ја задоволат оваа растечка побарувачка, програмерите се фокусираа на создавање шаблони за е-трговија. Ајде да погледнеме што е ова следно.

Еден таков пример на шаблон е е-трговија на WordPress. Тоа е приклучок за количка за купување WordPress (еден од најпознатите системи за управување со веб-ресурси), наменет првенствено за креирање и организирање блогови). Се обезбедува целосно бесплатно и им овозможува на посетителите на страницата да купуваат на веб-страницата.

Со други зборови, овој приклучок ви овозможува да креирате онлајн продавница (врз основа на WordPress). Овој приклучок за е-трговија ги има сите потребни алатки, поставки и опции за да одговараат на современите потреби.




Врв