CGI скриптове: какво е това, начини за създаване

CGI е съкращение за Common Gateway Interface. Това е така наречената малка програма, която предлага надежден начин за взаимодействие на уеб сървъри в браузър, като изпълнява тези методи, които са невъзможни с HTML. Повечето CGI скриптове са написани на Perl. Това е обичайният език за програмиране, използван за създаване на скриптове на сървър със стандартен текстов файл с разширение (.cgi).

Условия на основната програма

Преди да използвате CGI скриптове, потребителят трябва да провери дали сайтът им се поддържа от сайта и да посочи дали разработчикът има право да използва скрипта. Някои домакини не позволяват това. Ако разработчикът на сайта види папката CGI-bin при изтегляне на HTML файлове, е позволено да използва GCI скриптове.


Някои хостове ще поискат своята CGI-bin функция, тъй като не винаги е предоставена по подразбиране. Други хостове могат да тестват и одобряват скриптове, преди да дадат разрешение за използване на CGI скриптове. Ако разработчикът не се нуждае от редактиране, той все още се нуждае от текстов редактор, за да напише скрипт за заявки за сайтове. Каквото и да е предназначено за редактора, важно е да го запазите като обикновен текст. Освен това ще ви е необходима FTP програма, която идва с търговска версия на Pro или безплатна версия на Lite. Всяка опция ще работи, докато се зарежда в режим ASCII, за да ви помогне да преминете през инсталацията, тъй като създаването на CGI скриптове можеотнеме много време.


Конфигурация и инсталация

Ако потребителят има CGI-бин, има добър шанс да стартира CGI скрипта. За правилното инсталиране се препоръчва да прегледате страницата с често срещани проблеми с уеб хоста, контролния панел на сайта, поддържащите документи или инсталационното съобщение. Една от най-често срещаните грешки на уебмастъра е да инсталирате CGI скриптове с грешен път. Ако вече съществува скрипт, отворен за използване, пътят трябва да е правилен, в противен случай сървърът няма да работи. Докато скриптът се отваря, проверете обратната връзка за всички променливи, които изискват инсталация и коментари в този ред, започващ с "#". Когато е зададен скрипт за сървъра, можете да започнете изтеглянето. Не забравяйте да направите това в ASCII режим, защото обикновеният CGI скрипт е текстов файл. Технически, скриптовете могат да се изпълняват от всяка директория, но повечето хостове позволяват това да се изпълнява само с CGI-bin. Също така е важно да използвате правилното разрешение за файлове, които използват CGI скрипта.

Разрешение за файлове

Има три вида достъп до данни с три различни разрешения за всяка група.
Unix сървърите ви позволяват да задавате различни нива на достъп. Важно е да знаете кои разрешения има скриптът:
  • Групата - се състои от добавени потребители на сървъра. Ако е необходимо, ще им бъде позволено да премахнат разрешението си.
  • Потребител - се състои само от собственика на файла в групата, това е хостинг акаунта.
  • Друга група се състои от всички други аспекти на сървъра.
  • Четене - позволява на потребителите да четат и разбират данните, посочени във файла.
  • Разрешението за писане - писане ще позволи на потребителите да декриптират и напишат нова дата, да изтрият стари данни от архива.
  • Execute - разрешението за изпълнение, ще позволи изпращането на файла само ако програмата или Upload CGI exe скрипта се изпълняват. Потвърждение, че скриптът ще работи преди връзката в публичен режим.
  • Пример за приложение за прилагане

    CGI - Програмата опростява създаването на сложни, високопроизводителни, множество уеб приложения, проектиране, писане и разработване на уеб проекти. Той интелигентно използва използването на съвременни технологии и методи, които разработчикът се свързва с всеки набор от операционни системи или сървърни инструменти.
    Тя е с лека тежест (по отношение на използването на паметта), което я прави подходяща за обикновени CGI среди и висока производителност в постоянни среди като FastCGI или mod_perl. С добавянето на PLUGINS, когато нуждите ви нарастват, можете да използвате сложни функции, когато е необходимо, например, трябва да напишете приложение за търсене през базата данни с джаджи. Сценарият на екземпляра е това, което потребителят всъщност нарича уеб сървър. Това е много малък прост файл, който просто създава копие на интерфейса на програмата и извиква наследения метод run (). По-долу е пълното описание на "widgetview.cgi": #! /Usr /bin /perl -wuse WidgetView my $ webapp = WidgetView- & gt; new () $ webapp- & gt; run () Както виждате, widgetview.cgi просто използва приложението Модулът, който изпълнява пакетаPerl нарича WidgetView.pm. CGI Application се грижи за прилагането на новите () и run () методи. В този случай потребителят никога не трябва да извиква print (), за да изпрати изхода към STDOUT. Вместо това целият изход се връща като скалар.
    CGI е най-значимият принос за управлението на състоянието на приложението. Всичко, което е необходимо за напредъка на програмата, е да се зададе стойността на HTML формата на параметъра "rm" на стойността на режима на изпълнение, която трябва да се обработи чрез изпращане на формуляра. Това е ключът към CGI приложението.

    Методи за писане на скриптове

    Използвайки CGI Application, потребителят осъществява достъп до няколко вградени метода. По-долу са изброени тези, които се извикват от скрипта. Методът new () е конструктор за CGI. Връща връзката към пакета за приложения (клас). Тя може да приеме набор от параметри като двойки: key = & gt; стойност.
    Този метод може да приеме някои специфични параметри:
  • TMPL_PATH - Определя пътя до директорията на шаблона.
  • QUERY - позволява да определите вече създадения обект на заявката CGI.pm.
  • PARAMS - този параметър ви позволява да зададете няколко режима за персонализиране по време на изпълнение. Като предавате различни стойности в различни скриптове на копия, които използват един и същ програмен модул, можете да постигнете по-високо ниво на повторно използване.
  • Run () се извиква към обекта на Application Module от скрипта. При извикване той изпълнява функционалността на интерфейса на приложния модул.

    Този метод първо определя състоянието на приложението, като разглежда стойността на параметъра CGI, определен от параметъра mode_param (). По подразбиране "rm" за "Run Mode", който ще съдържа името на режима на работа. акотова не е зададено, състоянието по подразбиране е равно на стойността на start_mode (). След като режимът е зададен, run () разглежда изпращащата таблица, съхранена в run_modes (), и намира указател за функция, който се въвежда от името на режима. Ако бъде намерена, функцията се извиква и върнатите данни print () се изпращат в STDOUT и в браузъра. Ако посоченият режим не е намерен в таблицата на run_modes (), run () croak ().

    PSGI Support

    Приложението предлага вградена поддръжка за PSGI. Обектът по подразбиране за това е: psgi_app () $ psgi_coderef = WebApp-> psgi_app ({args to new ()}) Най-лесният начин е да създадете и върнете PSGI-съвместим код. Трябва да предавате аргументите на hashref по същия начин като новия. Това връща PSGI-съвместим код, използвайки CGI ::: PSGI като обект на заявка. За да използвате друг обект на заявката, създайте свой собствен обект run_as_psgi () както следва: run_as_psgi () my $ psgi_aref = $ webapp- & gt; , изисквани от спецификацията на PSGI. Използвайте това, ако искате да стартирате приложението над PSGI съвместим манипулатор, като Plack. Крайният резултат може да изглежда така:
    PSGI спецификацията може да върне дескриптор на файл или връзка на подпрограма вместо байтови низове. В режим PSGI той се поддържа директно от CGI Application.

    Методи за евентуално отхвърляне

    CGI прилага някои от методите, които се очаква да бъдат предефинирани чрез въвеждането им в модула на подкласа. Тези методи са следните:
  • Настройка (). Този метод се извиква от наследения метод на конструктора new ().
  • Методът setup () трябва да се използва за определяне на следващото свойство на методите.
  • Методът setup () може да извика всеки от случаите на потребителски потребителски екземпляр. Тази функция е добро място за определяне на свойствата, специфични за програмата, чрез $ webapp- & gt; param () Методът setup () може да се приложи като изображение по-долу:
    Въпреки това, често всичко, което трябва да бъде в setup (), определя режимите за стартиране на AutoRunmode, което ви позволява да правите това с прост синтаксис, използвайки атрибутите за стартиране. Метод на разкъсване (). Ако е реализиран, той се извиква автоматично след създаване на CGI скриптове и стартиране на програмата. Може да се използва за почистване след операции. Типичното използване на функцията teardown () е да деактивирате връзката с базата данни, която е зададена в опцията setup (). Можете също да използвате метода teardown () за съхраняване на информация за състоянието на сървъра: cgiapp_init ().

    Изпращане на празен URI за изпълнение на режими

    Модерните уеб браузъри отиват без ограничение на URI, като осигуряват чист URI: /cgi-bin/item.cgi?rm=view&id=15 Чист URI за описване на един същият ресурс може да бъде: /item /15 /view. Процесът на картографиране на тези URI-та към режимите на изпълнение се нарича диспечиране и се обработва от CGI :: Application :: Dispatch. Не се изисква допълнителен мениджър. Можете да работите върху CGI :: Application на десктоп или лаптоп, без да инсталирате пълнофункционален уеб сървър, като Apache. Вместо това, инсталирайте CGI :: Application :: Server с CPAN. След инсталацията, потребителят ще бъде след няколко минутивашия собствен сървър на приложения. Извършва се автоматизирано тестване. Тест :: WWW :: Mechanize :: CGIApp ви позволява да извършвате функционално тестване на CGI :: App без да работите с уеб сървър. Test :: WWW :: Mechanize може да се използва за валидиране на програмата чрез този уеб сървър. Директното тестване също е лесно. CGI - Програмата обикновено отпечатва изходните данни на своите режими на работа в STDOUT. Това може да бъде потиснато чрез променливата на средата CGI_APP_RETURN_ONLY. Приложението има вградена архитектура, която е лесна за използване и разработва нови плъгини.

    CGI Content Interface

    Това е първият набор от спецификации за разработване на динамично съдържание на уеб сървър. CGI съдържанието, доставено на потребителите, не е статичен HTML-код, четен от файл на сървър. Това е динамично съдържание, създадено в скрипт, който може да извлича информация от базата данни, да адаптира съдържанието към типа на браузъра, пита дали е нов потребител или не. PHP е език, специално предназначен за внедряване на динамично съдържание на уеб сървъри. Това прави много по-лесно разработването на CGI скриптове в PHP, отколкото на други езици. Когато сървърът започне да изпълнява, той предоставя цялата необходима контекстуална информация:
  • Пълна информация за заявката, включително името /IP на отдалечения хост, искания URL и неговите аргументи, низът на заявката (ако има такъв).
  • Бисквитки, свързани с искането.
  • В случай на POST заявка, в резултат на изпращане на уеб формуляри, имена и стойности на параметри.
  • Основен пример на PHP скрипт

    Скриптът трябва да изпълни процеса и след това да покаже валидния HTML код, включителноHTTP заглавки. Пример PHP скрипт:
    В този скрипт първият и последният ред са HTML, а офертите на PHP са включени в маркерите и след това получават скрипт от браузъра, добавяйки поредица от две аргументи, data1 и data2. В допълнение към глобалната променлива $ _SERVER, в скрипта са достъпни следните асоциативни масиви за стартиране на CGI скриптове:
  • $ _GET - имената и стойностите на аргументите, предадени на сървъра за GET заявката.
  • $ _POST - имената и стойностите на параметрите, изпратени на сървъра в заявката за POST, при изпращане на формуляра.
  • $ _COOKIE - имената и стойностите на „бисквитките“, прикрепени към заявката.
  • $ _REQUEST - всички елементи в $ _GET, $ _POST и $ _COOKIEnpm за изпълнение на PHP скриптове от nodejs чрез cgi. Този модул е ​​предназначен за deskshell за осигуряване на безпрепятствена обработка на PHP скриптове.
  • Като се има предвид, че разработчикът получава заявка в nodejs и има заявен обект, наречен req, и обект, наречен res, той трябва да използва този модул, както следва:
    Така че искането за /test.php ще съответства на php модула за CGI скриптове. Функцията paramsForRequest прочита обекта на заявката и задава правилните cgi променливи на средата за заявката. Това се предоставя като отделна функция, така че ако е необходимо, можете да добавите допълнителни променливи за заявка. Функцията detectBinary в Windows търси допълнителен модул на сайта php-bin-win32 ", който осигурява преносим php файл. Този код работи за deskshell и ако е необходимо да се използва за други цели и допълнителни функции.

    Първа програма

    За да напишете проста програма CGI в Perl, следвайки традицията, използвайте фразата "hello world". Ето япредставени изцяло. Запазете го във файл с име hello в директорията cgi-bin и го стартирайте с URL: localhost /cgi-bin /hello в браузъра. Потребителят трябва да види текста "Hello world" в браузъра. Ако не, разгледайте секцията за отстраняване на грешки в CGI програмите, за да ви помогне да отстраните неизправности. Това е проста програма. Има само няколко точки, които разграничават разработването на CGI скриптове на Perl от стандартната програма, която се изпълнява от командния ред. Първата е опцията -T на линията shebang. Това превръща Perl в "taint" режим. В този режим Perl автоматично ще игнорира всички данни, идващи от потребителя, и няма да позволи тези данни да бъдат прехвърлени към операционната система, докато не бъдат изчистени. В този смисъл режимът на оцветяване е добра идея. Втората разлика е добавянето на ред, който отпечатва заглавието на съдържанието. Това ще бъде първата проба от потребителя с CGI протокола. Всички CGI програми трябва да извеждат набор от заглавия към браузъра на потребителя. В повечето случаи единственият хедър, който се връща, е съдържание. Това показва на браузъра какви данни изпраща програмата. Този пример връща обикновен текст, така че типът на съдържанието е "text /plain". Обикновено връщаме HTML, така че видът на съдържанието ще бъде "text /html". Няма причини, поради които програмата да не може да върне по-сложни данни, като например PNG ("image /png"). Набор от заглавия трябва да бъде отделен от действителните данни с празен ред. Това се постига чрез отпечатване на два знака от новия ред след заглавката на последния CGI скрипт на сървъра.изход към STDOUT. Уеб сървърът ще бъде организиран, за да събира всички данни, записани в STDOUT и да ги прехвърля обратно в браузъра. Предишният пример всъщност не направи нищо. Няма нужда да имате CGI програма, която показва само фиксиран текст. Може лесно да се направи с помощта на HTML страницата. Потребителят трябва да се поучи от пример за това какво има динамичен изход. Например, скрипт, който отпечатва текущото време:
    Този скрипт работи на същия принцип като последния, но дава на системата време да използва функцията за разработване на CGI скриптове на Perl - "localtime" и отпечатва стойността. Всеки път, когато се презарежда скрипт, времето ще се актуализира. Още веднъж този скрипт показва обикновен текст. Трябва да разгледате версията, която връща HTML:
    Тази програма изглежда малко по-сложна, но всъщност прави същото като в предишния пример. Добавената сложност идва от факта, че те трябва да показват цялата HTML страница. Ако даден потребител някога е разглеждал настройките на вашия браузър, вероятно е видял квадратчетата за отметка или превключвателите, за да активират или деактивират javascript и java, но никога да не ги виждат за CGI или PHP. Това е така, защото JavaScript и Java се изпълняват от браузъра (или не, ако потребителят ги изключи). Браузърът не знае нищо за CGI или PHP. Той просто получава чист HTML код след изпълнение на скриптове на сървъра. Вграденият метод за създаване на CGI PHP скриптове, ColdFusion, ASP се използва главно от разработчиците, създава уеб страници, които ще имат достъп до бази данни назад, например.клиент /сървър уеб приложения. Голямата полза от CGI метода е, че скриптовете се съхраняват във файлове, така че има буквално хиляди свободно достъпни скриптове, които вече са написани и готови за изтегляне и използване на сайта. Това означава, че не е необходимо да изучавате скриптовия език, за да получите ползите от скриптовете, които вече са извършили тази работа.

    Свързани публикации