GET дісі шін кіріс деректерін деу.

GET дісі шін кіріс деректерді деуді алгоритмі келесі адамдар бойынша жзеге асады:

1. QUERY_STRING айнымалысыны мнін анытау

2. Есімдер мен оларды мндерін декодтау. Жне де бос орын белгілері “+” белгісіне, онды кодтар 128-н асатын белгілер “%” белгісіне алмастырылады. Ал олардан кейінгілер он алтылы кодпен алмастырылады.

3. “Есім-мн” рылымын алыптастыру.

GET дісінде программаа деректерді жіберу айнымалы ортаа байланысты орындалады. QUERY_STRING айнымалысына келесі форматтаы жолдарды мні келіп тседі:

“Есім1=Мні1&Есім2=Мні2&Есім3=Мні3...&ЕсімN=МніN”

Мндаы есімN – NAME атрибутыны мні, ол форманы басару элементіні есімін береді. МніN орнына сервер Value атрибутыны мнін жазады.Оны пайдаланушы есімN элементінде енгізген. QUERY_STRING жолын программалау тіліні арапайым функциялары арылы дейді. Біра оны айта деуге тиым салынады. Бл жол URL-кодтауды олданады.

Кіріс деректерді декодтаудан кейін, жол массивінде барлы есім=мн жбы саталады. Бл массивті пайдаланушы есепті ойылу шартына байланысты р трлі пайдаланады.

POST дісі шін кіріс деректерді деу

Кіріс деректерді POST дісі бойынша деуді алгоритмі келесі адамдардан трады:

1. CONTENT_LENGTH айнымалысыны мнін анытау.

2. Есімдер мен оларды мндерін декодтау. Жне де бос орын белгілері “+” белгісіне, онды коды 128-н асатын белгілер “%” белгісіне алмастырылады. Ал олардан кейінгілер он алтылы кодпен алмастырылатыны ескеріледі.

3. “Есім-мн” рылымын алыптастыру.

STDIN аымынан деректерді оу керек. Егер CONTENT_TYPE оршаан орта айнымалысыны рамында application/x-www-form-urlcoded мні болса, онда STDIN аымындаы деректерді де декодтау керек.

POST дісі бойынша кіріс деректер stdin стандартты аымы арылы жзеге асады. STDIN аымы бойынша кірген деректерді байт бойынша клемі CONTENT_LENGTH айнымалысында крсетіледі.

Сырты программа мен серверді зара атынас интерфейсін арастырамыз.

Пайдаланушылара деректер енгізу

Пайдаланушыдан берген кіріс деректерді енгізу дісіне арамай, CGI программа зіні шешімін STDOUT стандартты аымына жібереді. Бл шешім HTML-жат трінде немесе серверді ережелері трінде болады, мнда ажетті апаратты алуа болады. Соы дісті басымдыы мынада: cgi-модуль рбір шаырылым шін толы HTTP таырыбын жасауа міндетті емес.

Сценариді шыару таырыбы.

детте, сценариді шыару сервермен жзеге асады жне пайдаланушыа жіберіледі. Торап арылы жіберілген файлды трі жайлы апаратты броузер тіркейді жне ол файлдан брын жетеді. Сервер таырыпты ра алмаандытан, сценариді зі сйкес таырыпты жіберуді амтамасыз етуі тиіс. Осыан орай, деректерді деуден блек, сценарий шыу аымына тзу атесіз жазылан мтінді жіберу керек. Ол мтін жолдардан жне жауап рістерден: жалпы таырыбы (General-Header) жне хабарлама денесіні таырыбынан (Entity-Header) , сонымен атар жауаптар таырыбынан (Response-Header) трады.

Шыарылу кіші таырыптан басталады. Ол HTTP таырыбы форматындаыдай мтіндік жолдардан трады жне бос жолмен (жолды ауыстыру символынан трады) аяталады. Мтінні кез-келген жолы, егер ол серверді директивасы болмаса, тікелей олданушыа жіберіледі. азіргі уаытта CGI торабы серверді ш директивасын арастырады:

 

Есімі Анытама беру
Content-type айтарылан жатты MIME-трі
Location Серверге жатты зі емес, жата сілтеме жіберіледі. Осы кезде сервер пайдаланушыа шаырылуды айта жіберуді срайды.
Status Серверге HTTP жол-статус береді, ол пайдаланушыа жіберіледі. Формат: nnn xxxxx, мнда nnn-ш санды статус-код жне ххххх-себеп жолы

 

ызыты апарат жадай жолында болады. Жадай жолы келесідей форматта болады: HTTP/version - версия, Status-Code – нтижені идентификациялайтын статусты ш орынды коды жне Status-Phrase – кодты тсіндіретін мтіндік тжырым. Статус коды броузермен пайдаланылады, ал мтіндік тжырым пайдаланушыа арналан.

Статус кодыны бірінші саны жауапты класын анытауа арналан.

Кодты бірінші санымен аныталатын бес санат бар:

1) 1хх: зірге олданыста жо, болашата олдануа саталынуда.

2) 2хх: стті жол: шаырылу абылданды жне ол делуде.

3) 3хх: айта жіберу – олданушы шаырылуды айта жасауы тиіс.

4) 4хх: пайдаланушыны ателігі – шаырылу дрыс делмеді. Егер олданушы зіні шаырылуын 4хх кодасы бар жауап келгенге дейін тотатпаса, онда ол серверге дерек жіберуді тотатуы керек

5) 5хх: Web-серверді ателігі – дрыс жасалан шаырылуа жауап бере алмады.

Келесі кестеде HTTP-ді жауап кодтары келтірілген:

 

Статус коды Маынасы
ок
Post стті команда
Шаырылу абылданды
Get немесе HEAD шаырылу орындалды
Шаырылу орындалды, біра ішіндегісі жо
Ресурс бірнеше жерден табылды
Ресурс млдем жойылан
Ресурс уаытша орнында жо
шаырылу згертілінген
Пайдаланушыдан шаырылу нашар
Аныталмаан шаырылу
Ресурс тлемін тлеу ажет
Пайдалануа рсат жо
Ресурс табылмады
Аталмыш ресурс шін бл діс олданылмайды
Ресурсты бл тріне рсат жо
Ресурса рсат жо
Серверді ішкі атесі
діс орындалан жо
Сценарий бзылан немесе серверді жктемесі кп болып кеткен
Серверге рсат жо/сценариді тайм-ауты
Екінші сценарий/ серверді тайм-ауты

 

Status директивасы CGI-сценариге деу жадайы туралы хабарламаны айтаруа ммкіндік береді. Егер бл директива берілмеген болса, онда сервер 200 Ok крсетеді.

Мысалы:

Status: 404 Not found

Сервер осы апарат негізінде таырыпты негіздейді. Оны пайдаланушыа жібереді.. Мысалы, директивтер жиыны:

НТТР/1.0 200 ОК

Server: NCSA/1.0a6

Content-type: text/html

шаырылуды ойдаыдай орындаланын хабарлайды.

Мнда: 200 - код шаырылуды ойдаыдай орындаланын білдіретін, “Ok” соны білдіреді.

Келесі директива: Content-type: text/html

егер жауап денесі бар болса, міндетті трде орын алады. Ол серверге ары арай HTML-жат болатынын хабарлайды.

Ал директива:

Location: http://host/file.txtпайдаланушыменталап етілген болса, Web-сервер file.txt-ны шыарылуына келеді.

Сценарий жмыстарыны кезендері жоарыда крсетілгендей 3 блімнен трады:

1. Кіріс мліметтеріні инициализациясы жне делуі.

2. Жмысты негізгі блігі жне пайдаланушыа шыару.

3. з жмысын аятау.

Инициализацияны орындау барысында барлы параметрлер алдын ала белгілі (немесе оларды тану иын емес), ал шешілетін тапсырмалар сценарийлерді кез келгеніне бірдейлеу болып келеді. Кіріс деректерін деу кезеінде орындалатындар, сценарийді жазылу масаттарына байланысты. Жалпыл аланда, кіріс деректеріні делуі, оларды трлендіру болып табылады.

Жмысты инициализациялааннан кейін, кіріс деректері оылып, оларды жеке айнымалылара блінгенінен кейін, сценарий жмысты негізгі блігіні орындалуа дайын болады. Жмысты бл блігінде сценарий деректерді шыаруа дайындайды жне адамдары инициализация кезеіндегідей онша атта регламенттенбейді. Барлы орындалатын рекеттер ойылан масаттармен аныталады. Деректерді деу CGI-да крделі емес боландытан, ал сценарийді руды масаты немі кейбір шыу апаратын дайындау болып табылады. Сол себепті, кіріс деректерін деу жне шыыс деректерін дайындалуды формалданан адамдары программаны бір фазасына бірігеді.

Нтижелерді шыарылуы. арапайым CGI-сценарийінде шыу апараты, тек таырып жне HTML текстен трады. Крделірек сценарийлер кейбір осымша деректер енгізілген сценарийді айта шаыруа ажетті графиканы, мтінді графиканы немесе жалпы барлы апаратты шыара алады.

Аятау дегеніміз барлы пайдаланан ресурстардан босатылу, тазалануы жне программадан шыарылуы болып табылады. Егер бос жадыны немесе баса объектілерді блінуі орындалан болса, оларды да босатылуы ажет. Олай істелінбеген жадайда жйені барлы ресурстары жойылып немесе лыптанып алуы жне баса сценарийлерді немесе жалпы серверді жмысы тотап алуы ммкін. Платформаларды кпшілігінде файлдар мен жадындаы объектілер автоматты трде жабылады да, оларды пайдаланан процесс біткеннен кейін операциялы жйемен жабылады. Біра бл жадайда ресурстарды босату барысында толыымен операциялы жйеге сйену дрыс емес.

 

дебиет: 1 нег. [20-26], 2 нег. [80-98], 7 ос.[100-117], 9 ос.[211-234]

Баылау сратары:

1. CGI интерфейсінде орталарды айнымалылары андай апараттардан трады?

2. Сервер мен сырты программаны зара атынас интерфейсінде get дісі шін кіріс деректер алай деледі?

3. Сервер мен сырты программаны зара атынас интерфейсінде post дісі шін кіріс деректер алай деледі?

4. Сырты программамен кіріс деректерін деу жмысыны кезедері андай?

5. Сервер мен сырты программа зара атынас интерфейсінде post сценарийін шыару таырыбы андай апарат келеді?