Реклама inurl c дъска cgi cmd. Интернет технологии. Лаборатория: CGI. Обща стратегия за програмиране

Зеленчуци 15.04.2022

Как да търсите с помощта на google.com

Вероятно всеки знае как да използва търсачка като Google =) Но не всеки знае, че ако правилно съставите заявка за търсене, използвайки специални структури, можете да постигнете резултатите от това, което търсите, много по-ефективно и по-бързо =) В тази статия Ще се опитам да покажа това и как трябва да направите, за да търсите правилно

Google поддържа няколко оператора за разширено търсене, които имат специално значение при търсене в google.com. Обикновено тези оператори променят търсенето или дори казват на Google да извършва напълно различни видове търсения. Например дизайнът връзка:е специален оператор, а заявката връзка: www.google.comняма да ви даде нормално търсене, а вместо това ще намери всички уеб страници, които имат връзки към google.com.
алтернативни видове заявки

кеш:Ако включите други думи в заявката, Google ще маркира тези включени думи в кеширания документ.
Например, кеш:www.уеб сайтще покаже кеширано съдържание с подчертана дума "уеб".

връзка:горната заявка за търсене ще покаже уеб страници, които съдържат връзки към посочената заявка.
Например: връзка: www.websiteще покаже всички страници, които имат връзка към http://www.site

свързани:Показва уеб страници, които са „свързани“ с посочената уеб страница.
Например, свързани: www.google.comще покаже уеб страници, които са подобни на началната страница на Google.

информация:Искане на информация: ще предостави информация, която Google има за исканата уеб страница.
Например, информация: уебсайтще покаже информация за нашия форум =) (Армада - Форум на възрастни уеб администратори).

Други искания за информация

дефинирам:Заявката define: ще предостави дефиниция на думите, които въвеждате след това, събрана от различни онлайн източници. Дефиницията ще бъде за цялата въведена фраза (т.е. ще включва всички думи в точната заявка).

запаси:Ако започнете заявка с акции: Google ще третира останалите термини на заявката като борсови тикери и ще направи връзка към страница, показваща подготвената информация за тези знаци.
Например, акции: intel yahooще покаже информация за Intel и Yahoo. (Имайте предвид, че трябва да отпечатате знаци за извънредни новини, а не името на компанията)

Модификатори на заявки

сайт:Ако включите site: в заявката си, Google ще ограничи резултатите до уебсайтовете, които намери в този домейн.
Можете също да търсите отделни зони, като ru, org, com и т.н. сайт:com сайт: ru)

allintitle:Ако стартирате заявка с allintitle:, Google ще ограничи резултатите с всички думи на заявката в заглавието.
Например, allintitle: търсене в Googleще върне всички страници за търсене в Google като изображения, блог и т.н

заглавие:Ако включите intitle: в заявката си, Google ще ограничи резултатите до документи, съдържащи тази дума в заглавието.
Например, заглавие: Бизнес

allinurl:Ако стартирате заявка с allinurl: Google ще ограничи резултатите с всички думи на заявката в URL адреса.
Например, allinurl: търсене в Googleще върне документи с google и търсене в заглавието. Освен това, като опция, можете да разделяте думите с наклонена черта (/), след което думите от двете страни на наклонената черта ще бъдат търсени в една и съща страница: Пример allinurl: foo/бар

inurl:Ако включите inurl: в заявката си, Google ще ограничи резултатите до документи, съдържащи тази дума в URL адреса.
Например, Анимация inurl:уебсайт

текст:търси само в текста на страницата за посочената дума, игнорира заглавието и текстовете на връзките и други неща, които не са свързани с. Има и производно на този модификатор - allintext:тези. освен това, всички думи в заявката ще бъдат търсени само в текста, което също е важно, като се игнорират често използвани думи във връзките
Например, intext:форум

период от време:търси във времеви рамки (диапазон от дати: 2452389-2452389), датите за време са посочени в юлиански формат.

Е, и всякакви интересни примери за заявки

Примери за компилиране на заявки за Google. За спамъри

inurl:control.guest?a=знак

Site:books.dreambook.com „URL адрес на началната страница“ „Подпишете моя“ inurl:sign

Сайт: www.freegb.net Начална страница

Inurl:sign.asp "Брой знаци"

„Съобщение:“ inurl:sign.cfm „Подател:“

inurl:register.php „Регистрация на потребител“ „Уебсайт“

Inurl:edu/guestbook „Подпишете се в книгата за гости“

Inurl:post "Публикуване на коментар" "URL"

Inurl:/archives/ „Коментари:“ „Запомняте ли информация?“

„Сценарий и книга за гости, създадени от:“ „URL:“ „Коментари:“

inurl:?action=add “phpBook” “URL”

Заглавие: „Изпратете нова история“

Списания

inurl:www.livejournal.com/users/mode=reply

inurl greatestjournal.com/mode=reply

Inurl:fastbb.ru/re.pl?

inurl:fastbb.ru /re.pl? "Книга за гости"

Блогове

Inurl:blogger.com/comment.g?”postID”"анонимен"

Inurl:typepad.com/ „Публикувайте коментар“ „Запомняте ли лична информация?“

Inurl:greatestjournal.com/community/ „Публикуване на коментар“ „адреси на анонимни плакати“

„Публикуване на коментар“ „адреси на анонимни плакати“ -

Заглавие: "Публикуване на коментар"

Inurl:pirillo.com „Публикуване на коментар“

Форуми

Inurl:gate.html?”name=Forums” “mode=reply”

inurl:”forum/posting.php?mode=reply”

inurl:"mes.php?"

inurl:”members.html”

inurl:forum/memberlist.php?“

Благодарение на световната мрежа почти всеки може да предостави информация в интернет във форма, която е приятна за окото и е подходяща за широко разпространение. Без съмнение сте сърфирали в Интернет и сте виждали други сайтове и вече вероятно знаете, че страшни акроними като "HTTP" и "HTML" са просто съкращения за "Web" и "начин за изразяване на информация в Интернет". Може би вече имате известен опит в представянето на информация в Интернет.

Интернет се оказа идеална среда за разпространение на информация, както се вижда от неговата огромна популярност и масово развитие. Докато някои поставят под съмнение полезността на Интернет и приписват широкото му развитие и популярност главно на рекламата, Интернет безспорно е важна среда за представяне на всякакъв вид информация. Освен че има много услуги за предоставяне на актуална информация (новини, време, спортни събития в реално време) и справочни материали в електронен вид, има и значителни количества данни от различен вид. IRS, която разпространи всички свои данъчни формуляри от 1995 г. и друга информация чрез световната мрежа, наскоро призна, че е получила поща от фенове от своя уеб сайт. Кой би помислил, че IRS някога ще получи поща от фенове? Това не беше защото неговият сайт беше добре проектиран, а защото се оказа наистина полезен инструмент за хиляди, може би милиони хора.

Какво прави мрежата уникална и толкова привлекателна информационна услуга? На първо място, защото предоставя хипермедиен интерфейс за данни. Помислете за твърдия диск на вашия компютър. Обикновено данните се изразяват по линеен начин, подобно на файлова система. Например, имате няколко папки и във всяка папка има документи или други папки. Мрежата използва различна парадигма за изразяване на информация, наречена хипермедия. Хипертекстовият интерфейс се състои от документ и връзки. Връзките са думи, върху които се кликва, за да се видят други документи или да се намери друг вид информация. Мрежата разширява концепцията за хипертекст, за да включва други видове медии като графики, звуци, видео (оттук и името "хипермедия"). Маркирането на текст или графика в документ ви позволява да видите свързана информация за избрания елемент в произволен брой форми.

Почти всеки може да се възползва от този прост и уникален начин за представяне и разпространение на информация, от учените, които искат незабавно да споделят данни с колегите си, до бизнесмените, които споделят информация за своята компания с всички. Въпреки че предоставянето на информация е изключително важно, през последните няколко години мнозина смятат, че получаването на информация е също толкова важно.

Докато Мрежата предоставя уникален хипермедиен интерфейс за информация, има много други. ефективни начиниразпространение на данни. Например мрежови услуги като File Transfer Protocol (FTP) и дискусионната група "Gopher" съществуват много преди появата на World Wide Web. Електронната поща е основната среда за комуникация и обмен на информация в Интернет и повечето други мрежи почти от самото начало на тези мрежи. Защо интернет стана толкова популярен начин за разпространение на информация? Мултимедийният аспект на Интернет има осезаем принос за неговия безпрецедентен успех, но за да бъде Интернет най-ефективен, той трябва да бъде интерактивен.

Без способността да получавате информация от потребителите и да предоставяте информация, мрежата би била напълно статична среда. Информацията ще бъде достъпна само във формата, посочен от автора. Това би подкопало една от изчислителните възможности като цяло: интерактивната информация. Например, вместо да принуждавате потребителя да преглежда множество документи, сякаш преглежда книга или речник, би било по-добре да позволите на потребителя да идентифицира ключови думи, които го интересуват. Потребителите могат да персонализират как се представят данните, вместо да разчитат на твърда структура, дефинирана от доставчика на съдържание.

Терминът "уеб сървър" може да бъде подвеждащ, тъй като може да се отнася както за физическата машина, така и за софтуера, който използва за взаимодействие с интернет браузъри. Когато браузър поиска даден уеб адрес, той първо се свързва с машината през интернет, като изпраща на софтуера на уеб сървъра заявка за документ. Този софтуер работи непрекъснато, изчаква такива заявки и отговаря съответно.

Въпреки че сървърите могат да изпращат и получават данни, функционалността на самия сървър е ограничена. Например, най-примитивният сървър може да изпрати искания файл само до браузъра. Сървърът обикновено не знае какво да прави с този или онзи допълнителен вход. Ако ISP не каже на сървъра как да обработва тази допълнителна информация, сървърът най-вероятно ще игнорира входа.

За да може сървърът да извършва други операции, освен търсене и изпращане на файлове към интернет браузъра, трябва да знаете как да разширите функционалността на сървъра. Например, уеб сървър не може да търси в база данни въз основа на ключова дума, въведена от потребител, и да върне множество съвпадащи документи, освен ако тази възможност не е програмирана в сървъра по някакъв начин.

Какво е CGI?

Общият интерфейс на шлюза (CGI) е интерфейс към сървъра, който ви позволява да разширите функционалността на сървъра. Използвайки CGI, можете да работите интерактивно с потребителите, които имат достъп до вашия сайт. На теоретично ниво CGI ви позволява да разширите способността на сървъра да анализира (интерпретира) вход от браузъра и да връща информация въз основа на входа на потребителя. На практическо ниво CGI е интерфейс, който позволява на програмист да пише програми, които лесно комуникират със сървър.

Обикновено, за да разширите възможностите на сървъра, трябва сами да модифицирате сървъра. Това решение е нежелателно, защото изисква разбиране на по-ниското ниво на мрежовото програмиране на интернет протокола. Това също ще изисква редактиране и повторно компилиране на изходния код на сървъра или писане на персонализиран сървър за всяка задача. Да приемем, че искате да разширите сървъра, за да действа като шлюз от уеб към електронна поща (уеб към електронна поща), като грабва въведените от потребителя данни от браузъра и ги изпраща по имейл до друг потребител. Кодът трябва да бъде инжектиран в сървъра, за да анализира входа от браузъра, да го изпрати по имейл до друг потребител и да изпрати отговора обратно към браузъра през мрежовата връзка.

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

Второ, това е трудно и изисква обширни технически познания.

Трето, това е приложимо само за конкретен сървър. Ако трябва да преместите сървъра си на друга платформа, ще трябва да стартирате или поне да отделите много време за пренасяне на код към тази платформа.

Защо CGI?

CGI предлага преносимо и лесно решение на тези проблеми. CGI протоколът дефинира стандартен начин за комуникация на програмите с уеб сървър. Без никакви специални познания е възможно да се напише програма на всеки машинен език, който взаимодейства и комуникира с уеб сървър. Тази програма ще работи с всички уеб сървъри, които разбират CGI протокола.

CGI комуникацията се извършва чрез стандартен вход и изход, което означава, че ако знаете как да отпечатвате и четете данни, използвайки вашия език за програмиране, можете да напишете приложение за уеб сървър. Освен анализирането на входа и изхода, програмирането на CGI приложения е почти еквивалентно на програмирането на всяко друго приложение. Например, за да програмирате програма „Здравей, свят!“, използвайте функциите за печат на вашия език и формата, дефиниран за CGI програми, за да отпечатате съответното съобщение.

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

Тъй като CGI е общ интерфейс, не сте ограничени до конкретен машинен език. Често задаван важен въпрос е какви езици за програмиране могат да се използват за CGI програмиране? Можете да използвате всеки език, който ви позволява да правите следното:

  • печат към stdout
  • Прочетете от стандартен вход
  • Четене от променливи режими

Почти всички езици за програмиране и много скриптови езици правят тези три неща и можете да използвате всяко от тях.

Езиците попадат в един от следните два класа: превод и устен превод. Преведен език като 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.

Резюме

Общият интерфейс на шлюза е протоколът, чрез който програмите комуникират с уеб сървърите. Гъвкавостта на CGI позволява на програмистите да пишат шлюзови програми на почти всеки език, въпреки че има много компромиси, свързани с различните езици. Без тази възможност създаването на интерактивни уеб страници би било трудно, в най-добрия случай изисквайки модификации на сървъра, а интерактивността би била недостъпна за повечето потребители, които не са администратори на сайтове.

Глава 2. Основи

Преди няколко години създадох страница за колеж в Харвард, където можете да изпращате вашите коментари за тях. По това време интернет беше млад и документацията беше оскъдна. Аз, както много други, разчитах на кратка документация и система за програмиране, създадена от други, за да науча CGI програмиране. Въпреки че този метод на изследване изисква известно търсене, много експерименти и повдига много въпроси, той е много ефективен. Тази глава е плод на моята ранна работа с CGI (с няколко уточнения, разбира се).

Въпреки че отнема известно време, за да разберете и овладеете напълно общия интерфейс на шлюза, самият протокол е доста прост. Всеки, който има някои основни умения по програмиране и е запознат с мрежата, може бързо да се научи как да програмира доста сложни CGI приложения, точно както аз и други научихме преди няколко години.

Целта на тази глава е да представи основите на CGI по изчерпателен, макар и стегнат начин. Всяка концепция, обсъдена тук, е представена подробно в следващите глави. Въпреки това, след като сте проучили тази глава, можете веднага да започнете да програмирате CGI приложения. След като достигнете това ниво, можете да научите тънкостите на CGI, или като прочетете останалата част от тази книга, или като просто експериментирате сами.

Можете да намалите CGI програмирането до две задачи: получаване на информация от уеб браузъра и изпращане на информацията обратно към браузъра. Това е доста интуитивно, след като овладеете нормалното използване на CGI приложения. Често потребителят получава подкана да попълни формуляр, например да вмъкне своето име. След като потребителят попълни формуляра и натисне Enter, тази информация се изпраща на CGI програмата. След това програмата CGI трябва да преобразува тази информация в това, което разбира, да я обработи по подходящ начин и след това да я изпрати обратно на браузъра, независимо дали е просто потвърждение или резултат от многофункционално търсене в база данни.

С други думи, CGI програмирането изисква разбиране как да получите вход от интернет браузър и как да изпратите изход обратно. Какво се случва между входния и изходния етап на CGI програма зависи от целта на разработчика. Ще откриете, че основната трудност при CGI програмирането се крие в този междинен етап; след като се научите как да работите с вход и изход, това е достатъчно, за да станете CGI разработчик.

В тази глава ще научите принципите зад CGI въвеждане и извеждане, както и други основни умения, които ще ви трябват, за да пишете и използвате CGI, включително неща като създаване на HTML формуляри и именуване на вашите CGI програми. Тази глава обхваща следните теми:

  • Традиционна програма „Здравей, свят!“;
  • CGI изход: изпращане на информация обратно за показване в интернет браузър;
  • Конфигуриране, инсталиране и стартиране на приложението. Ще научите за различни платформи и уеб сървъри;
  • CGI вход: Интерпретиране на информация, изпратена от уеб браузъра. Запознаване с някои полезни програмни библиотеки за анализиране на такъв вход;
  • Прост пример: обхваща всички уроци в тази глава;
  • Стратегия за програмиране.

Поради естеството на тази глава, ще засегна само леко някои теми. Не се притеснявайте; всички тези теми са разгледани много по-задълбочено в други глави.

Здравей свят!

Започвате с традиционна уводна задача по програмиране. Ще напишете програма, която ще показва "Hello, World!" на вашия уеб браузър. Преди да напишете тази програма, трябва да разберете каква информация уеб браузърът очаква от CGI програмите. Трябва също да знаете как да стартирате тази програма, за да я видите в действие.

CGI не зависи от езика, така че можете да внедрите тази програма на всеки език. Тук се използват няколко различни езика, за да се демонстрира независимостта на всеки език. В Perl програмата "Hello, World!" показано в листинг 2.1.

Списък 2.1. Здравей свят! в Perl. #!/usr/local/bin/perl # Hello.cgi - Моята първа CGI програма отпечатва "Content-Type: text/html\n\n"; печат" \n";печат" Здравей свят!"; печат"\n";печат" \n";печат"

Здравей свят!

\n";печат" \н";

Запазете тази програма като hello.cgi и я инсталирайте на подходящото място. (Ако не сте сигурни къде е, не се притеснявайте; ще разберете в раздела „Инсталиране и изпълнение на CGI програма“ по-късно в тази глава.) За повечето сървъри правилната директория се нарича cgi-bin . Сега извикайте програмата от вашия уеб браузър. За повечето това означава отваряне на следния Uniform Resource Locator (URL):

http://име на хост/име на директория/hello.cgi

Hostname е името на вашия уеб сървър, а directoryname е директорията, в която сте поставили hello.cgi (вероятно cgi-bin).

Разделяне на hello.cgi

Има няколко неща, които трябва да се отбележат за hello.cgi.

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

Второ, имайте предвид, че съдържанието на първия оператор за печат (Content-Type: text/html) не се показва на вашия уеб браузър. Можете да изпратите всякаква информация, която искате обратно към браузъра (HTML страница, графика или звук), но първо трябва да кажете на браузъра какъв вид данни изпращате. Този ред казва на браузъра какъв вид информация да очаква - в този случай HTML страница.

Трето, програмата се нарича hello.cgi. Не винаги е необходимо да използвате разширението .cgi с името на вашата CGI програма. Макар че източниксъщо използва разширението .cgi за много езици, то не се използва за обозначаване на тип език, но е начин за сървъра да идентифицира файла като изпълним файл, а не като файл с изображение, HTML файл или текстов файл. Сървърите често са конфигурирани да се опитват да изпълнят само онези файлове, които имат това разширение, докато показват съдържанието на всички останали. Въпреки че използването на разширението .cgi не е задължително, то все още се счита за добра практика.

Като цяло hello.cgi се състои от две основни части:

  • казва на браузъра каква информация да очаква (Content-Type: text/html)
  • казва на браузъра какво да показва (Hello, World!)

Здравей свят! в C

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

Списък 2.2. Здравей свят! в C. /* hello.cgi.c - Здравей, свят CGI */ #include int main() ( printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" Здравей свят!\n"); printf("\n"); printf(" \n"); printf("

Здравей свят!

\n"); printf(" \н"); )

Забележка

Имайте предвид, че Perl версията на hello.cgi използва Content-Type print ": text/html\n\n "; Докато C версията използва Printf(" Content-Type: text/html\r\n\r\n ");

Защо Perl отпечатва израза, завършващ с два нови реда (\n), докато C printf завършва с два връщания на каретка и нов ред (\r\n)?

Формално, заглавките (всички изведени преди празния ред) трябва да бъдат разделени от връщане на каретка и нов ред. За съжаление, на DOS и Windows машини, Perl превежда \r като нов ред, а не като връщане на каретка.

Въпреки че изключението \rs в Perl е технически неправилно, то ще работи в почти всички протоколи и също така е преносимо на всички платформи. Затова във всички примери за Perl в тази книга използвам нови редове за разделяне на заглавки, а не връщане на каретка и нови редове.

Подходящо решение на този проблем е представено в Глава 4, Заключение.

Нито уеб сървърът, нито браузърът се интересуват какъв език се използва за писане на програмата. Въпреки че всеки език има предимства и недостатъци като език за програмиране на CGI, най-добре е да използвате езика, с който се чувствате най-удобно. (Изборът на език за програмиране е обсъден по-подробно в глава 1 „Общ интерфейс на шлюза (CGI)“).

CGI изход

Сега можем да разгледаме по-отблизо проблема с изпращането на информация към уеб браузъра. От примера „Hello, World!“ можете да видите, че уеб браузърите очакват два набора от данни: заглавка, която съдържа информация като каква информация да се покаже (напр. Content-Type: ред) и действителна информация (какво се показва на Уеб браузър). Тези два блока информация са разделени с празен ред.

Хедърът се нарича HTTP хедър. Той дава важни подробности за информацията, която браузърът ще получи. Има няколко различни типа HTTP заглавки и най-общият е този, който сте използвали преди: Content-Type: заглавка. Можете да използвате различни комбинации от HTTP заглавки, разделени с връщане на каретка и нови редове (\r\n). Празният ред, разделящ заглавката от данните, също се състои от връщане на каретката и нов ред (защо са необходими и двата е описано накратко в предходната бележка и подробно в глава 4). Ще научите за други HTTP заглавки в Глава 4; в момента имате работа с Content-Type: заглавка.

Content-Type: Заглавката описва типа данни, които CGI връща. Подходящият формат за тази заглавка е:

Content-Type: подтип/тип

Където подтип/тип е правилният тип Многофункционални разширения за интернет поща (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 тип Описание Text/html Hypertext Markup Language (HTML) Text/plain Файлове с обикновен текст Image/gif GIF графични файлове Image/jpeg JPEG компресирани графични файлове Audio/basic Sun аудио файлове *.au Audio/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 nobody - акаунт, който няма разрешения за файлове и не може да бъде вписан). 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 realdirectoryname

където fakedirectoryname е името на псевдо директорията (/cgi-bin), а realdirectoryname е пълният път, където всъщност се съхраняват CGI програмите. Можете да конфигурирате повече от един ScriptAlias ​​​​като добавите още редове на ScriptAlias.

Конфигурацията по подразбиране е достатъчна за нуждите на повечето потребители. Все пак трябва да редактирате ред във файла srm.conf, за да определите правилното име на реална директория. Ако, например, вашите CGI програми се намират в /usr/local/etc/httpd/cgi-bin, редът ScriptAlias ​​​​във вашия файл srm.conf трябва да изглежда така:

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

За достъп или връзка към CGI програми, намиращи се в тази директория, използвайте следния URL адрес:

http://име на хост/cgi-bin/име на програма

Където hostname е името на хоста на вашия уеб сървър, а programname е името на вашия 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 application/x-httpd-cgi .cgi

Това ще асоциира MIME типа CGI с разширението .cgi. Сега трябва да модифицираме файла access.conf, така че да можем да изпълним CGI във всяка директория. За да направите това, добавете опцията ExecCGI към реда Option. Ще изглежда нещо като следния ред:

Индекси на опции 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, от друга страна, позволява на сървъра да приема заявки дори докато работи.

Разработчик на Macintosh CGI, използващ някой от тези уеб сървъри, трябва да използва разширението .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 GET или POST. 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 print "Content-type: text/html\n\n"; печат" \n";печат" CGI среда\n";печат"\n";печат" \n";печат"

CGI среда

\n"; foreach $env_var (ключове %ENV) ( печат " $env_var= $ENV($env_var)
\n"; ) печат " \н";

Подобна програма може да бъде написана на C; пълният код е в листинг 2.4.

Списък 2.4. env.cgi.c в C. /* env.cgi.c */ #include extern char **околна среда; int main() ( char **p = environ; printf("Content-Type: text/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(" \н"); )

ВЗЕМЕТЕ или ПУБЛИКУВАЙТЕ?

Каква е разликата между методите 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 кодът за показване на формата за име и възраст.

име и възраст

Въведете вашето име:

Въведете вашата възраст:

Да предположим, че потребителят въвежда Joe Schmoe в полето за име и 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 *name; Char *value; ) Entrytype;

За анализ на входния низ "име / възраст" в C с помощта на cgihtml се използва следното:

/* деклариране на свързан списък, наречен input */ Llist input; /* анализира вход и поставя в свързан списък */ read_cgi_input(&input);

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

#включи #включи Char *age = malloc (sizeof (char) * strlen (cgi _val (input, "age")) + 1); Strcpy(възраст, cgi_val(вход, "възраст"));

Стойността "age" вече се съхранява в низа за възраст.

Забележка: Вместо да използвам прост масив (като 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(*input); print "Content-Type: text/html\r\n\r\n"; печат" \n";печат" име и възраст\n";печат"\n";печат" \n"; print "Здравей, " . $input("име") . ". Вие сте\n"; print $input("age") . " години.

\n";печат" \н";

Списък 2.7. nameage.cgi в 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(" име и възраст\n"); printf("\n"); printf(" \n"); printf("Здравей, %s. Ти си\n",cgi_val(input,"име")); printf("%s години.

\n",cgi_val(вход,"възраст")); printf(" \н"); )

Имайте предвид, че тези две програми са почти еквивалентни. И двете съдържат рутинни анализи, които приемат само един ред и обработват целия вход (благодарение на подходящите рутинни библиотеки). Резултатът е по същество модифицирана версия на вашата основна програма Hello, World!.

Опитайте да стартирате програмата, като попълните формуляра и щракнете върху бутона Изпрати.

Обща стратегия за програмиране

Вече знаете всички основни принципи, необходими за CGI програмиране. След като разберете как CGI получава информация и как я изпраща обратно към браузъра, действителното качество на вашия краен продукт зависи от общите ви способности за програмиране. А именно, когато програмирате CGI (или изобщо каквото и да било), имайте предвид следните качества:

  • Простота
  • Ефективност
  • Универсалност

Първите две качества са доста често срещани: опитайте се да направите кода си възможно най-четлив и ефективен. Гъвкавостта се отнася повече за CGI програмите, отколкото за други приложения. Когато започнете да разработвате свои собствени CGI програми, ще откриете, че има няколко основни приложения, които всеки иска да направи. Например, една от най-честите и очевидни задачи на CGI програма е да обработи формуляр и да изпрати резултатите по имейл до конкретен получател. Можете да имате няколко отделни изобразени формуляра, всеки с различен получател. Вместо да пишете CGI програма за всеки отделен формуляр, можете да спестите време, като напишете по-обща CGI програма, която пасва на всички формуляри.

Покривайки всички основни аспекти на CGI, ви предоставих достатъчно информация, за да започнете с CGI програмирането. Въпреки това, за да бъдете ефективен разработчик на CGI, трябва да имате по-задълбочено разбиране за това как CGI комуникира със сървъра и браузъра. Останалата част от тази книга обсъжда подробно въпросите, които бяха споменати накратко в тази глава, както и стратегиите за разработка на приложения, предимствата и ограниченията на протокола.

Резюме

Тази глава обхваща накратко основите на CGI програмирането. Създавате изход чрез правилно форматиране на вашите данни и отпечатване на stdout. Получаването на CGI вход е малко по-сложно, защото трябва да бъде анализирано, преди да може да се използва. За щастие вече има няколко библиотеки, които извършват анализирането.

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

За да се получи надежден резултат, анализът трябва да се извърши най-малко 2 седмици след последната доза антибиотици и (или) антибактериални лекарства.

  • изстъргване от пикочен канал препоръчва се да се приема 2 часа след последното уриниране, от фаринкса и назофаринкса - на празен стомах (4-5 часа след последното хранене, докато е необходимо да се изключи миенето на зъбите и изплакването на устата), не се изисква специална подготовка за други места.
  • Урина. Изследването се подлага на средна част от свободно освободената урина, в количество от 3-5 ml в стерилен пластмасов контейнер за еднократна употреба (контейнерът може да бъде получен на рецепцията) след задълбочена тоалетна на външните гениталии без използване на антисептици . Време за доставка до лабораторията при стайна температура - 1-2 часа, при температура 2-8 ° C - 5-6 часа.
  • сперма за бактериологично изследване се събира в стерилен пластмасов контейнер за еднократна употреба с широко гърло чрез мастурбация (контейнерът се получава от рецепцията). Време за доставка на материала в лабораторията при стайна температура в рамките на 1-2 часа.
  • храчки Препоръчително е да се събира сутрин, на гладно след саниране на устната кухина, в стерилен пластмасов съд. Времето за доставка на материала в лабораторията при стайна температура е 1-2 часа, при температура 2-8°C - 5-6 часа.
  • Ограда секреция на простатата извършва се от уролог, след предварителен масаж на простатата (тази манипулация се извършва само в ЦУ). Преди приема на секрета на простатната жлеза се препоръчва сексуално въздържание поне 2 дни.
  • Бактериологични изследвания кърма . Вземането на проби от кърмата се извършва само преди хранене на детето или два часа след кърмене. Изследваната пациентка измива лявата и дясната млечна жлеза с топла вода и сапун и избърсва с чиста кърпа. Повърхността на зърната и върховете на пръстите се третират с памучен тампон, умерено навлажнен със 70% етилов алкохол. Първата порция кърма, приблизително 0,5 ml, се изхвърля. След това, без да докосва зърното с ръце, жената изцежда 0,5 - 1 ml мляко от всяка жлеза в отделен стерилен контейнер (контейнери могат да бъдат получени на рецепцията). Време за доставка до лабораторията при стайна температура - 1-2 часа, при температура 2-8°C - 5-6 часа.
  • Ограда с новиална течност за бактериологично изследване се извършва от лекар в стерилни пластмасови съдове (контейнерът може да се получи на рецепцията). В лабораторията тази процедура не се извършва. Времето за доставка на материала в лабораторията при стайна температура е 1-2 часа, при температура 2-8°C - 5-6 часа.
  • Ограда отделяне от рана за бактериологично изследване се извършва от лекар, в контейнер за еднократна употреба със среда на Ames (контейнерът може да се получи на рецепцията). Време за доставка на материала в лабораторията при стайна температура в рамките на 6 часа, при температура 2-8°C - до 2 дни.
  • Жлъчка за бактериологично изследване се събира по време на сондиране, поотделно, в порции А, Б и В в три стерилни епруветки или по време на операцията със спринцовка в една епруветка, като се спазват правилата за асептика (тази процедура не се извършва в лаборатория) . Времето за доставка на материала в лабораторията при стайна температура е 1-2 часа, при температура 2-8°C - 5-6 часа.

„Проектиран от: PHPLD Вашият сайт“ „Изпратете статия“ „Осъществено от ArticleMS“ „Изпратете статия“ „Главно меню“ „Последни статии“ „Дизайнер: Astralinks Directory“ „Изпратете статия“ „Изпратете статии“ „Вход за членове“ „Най-популярни Статии" "RSS емисии на статии" "Полетата, маркирани със звездичка, са задължителни" joomla "Дизайнер: Безплатни PHPLD шаблони" "Изпратете статия" "RSS статии" "RSS коментари" "Последни статии" "Упълномощаване" "Потребителско име:" "Парола: " "Запомни ме" "Регистрирай се" "Забравили сте паролата си?" "Startseite ? Weblogs ? Weblog von" "RSS емисии" "Добавете ни към любими" "Направете ни своя начална страница" "Изпратете статии" "Редовни връзки с реципрочни" Inurl на статия:"/access/unauthenticated" Форуми "Шаблон от DevHunters. com" "Добавяне на статия" "С гордост, предоставено от WordPress и BuddyPress" "Дизайнер: Безплатни PHPLD шаблони" "Добавяне на статия" "Този въпрос е за тестване дали сте човек и за предотвратяване на автоматично изпращане на спам" "За потвърждаване на реципрочната връзка моля, включете следния HTML код в страницата на URL" "Добавяне на статия" "Произволни съобщения за пресата" "Скрипт за съобщение за пресата" inurl:"/blogs/load/recent" "Статия на седмицата" "Директория със статии Всички права запазени. " „Проектиран от: PHPLD Вашият сайт“ „Изпратете статия“ „Информация за Alexa“ „Подробности за списъка“ „URL адрес за ОБЯВА“ „Статистика на сайта“ „Добавяне на статия“ „Проектиран от еднопосочни връзки“ „Добавяне на статия“ „Каним ви да разгледате нашия каталог със статии от категориите отляво и не забравяйте да добавите този сайт към любимите си!" „Дизайнер: PHPLD шаблони“ „Добавяне на статия“ „Повече информация за текстовите формати“ „Оценете автора: Текущ:“ „Осъществено от: php Link Directory“ „Добавяне на статия“ „Неприемливи сайтове, съдържание и няколко причини, поради които изпращанията не са одобрени: " "Добавяне на статия" "Шаблон от Yazzoo" "Добавяне на статия" "Тема от: Уеб директория Romow" "Изпращане на статия" "Осъществено от WordPress + приставка за директория на статии" "Тема от: Уеб директория" "Изпращане на статия" "RSS статии" „RSS ​​коментари“ „Последни статии“ „Осъществено от: php Link Directory“ „Добавяне на статия“ „%E8%AB%8B%E6%BA%96%E7%A2%BA%E5%A1%AB%E5%85% A5%E6%82%A8%E7%9A%84%E9%83%B5%E7%AE%B1%EF%BC%8C%E5%9C%A8%E5%BF%98%E8%A8%98% E5%AF%86%E7%A2%BC%EF%BC%8C%E6%88%96%E8%80%85%E6%82%A8%E4%BD%BF%E7%94%A8%E9% 83%B5%E4%BB%B6%E9%80%9A%E7%9F%A5%E5%8A%9F%E8%83%BD%E6%99%82%EF%BC%8C%E6%9C% 83%E7%99%BC%E9%80%81%E9%83%B5%E4%BB%B6%E5%88%B0%E8%A9%B2%E9%83%B5%E7%AE%B1% E3%80%82" "Използване на приставката за директория на статии" "Тази директория с връзки използва сесии за съхраняване на информация" "Добавяне на статия" "Меню на блог" "Създаване на блог" " Моите блогове" "PHPmotion" "PHPLD CLUB - БЕЗПЛАТНИ ТЕМИ ЗА ВАС" "Добавяне на статия" "Skinned by: Указател за уеб дизайн" "Добавяне на статия" "Шаблон от Yazzoo" "Добавяне на статия" "Шаблон от DevHunters.com" "Добавяне на статия " "Нямате разрешение да коментирате. Ако влезете, може да можете да коментирате" "Шаблон от безплатни PHPLD шаблони" "Добавяне на статия" "Спонсорирано от: Съвети и трикове за уеб администратори / Изтегляне на БЕЗПЛАТНИ phpLD теми" "Изпратете статия" "Тема от: Уеб директория" "Добавяне Статия" "Използвайте статиите в нашата директория на вашия уебсайт, за да предоставите на посетителите си" "Осъществено от: php Link Directory" "Изпратете статия" "Подкрепено от оферта за позиция" "Добавете статия" "Тема от: Romow Web Directory" "Изпратете Статия" "Подкрепено от оферта за позиция" "Изпратете статия" "Подкрепено от оферта за позиция" "Добавяне на статия" "Спонсорирано от: Съвети и трикове за уеб администратори / Изтеглете БЕЗПЛАТНИ phpLD теми" "Изпратете статия" "Проектирано от Mitre Design и SWOOP" „Изпращане на статия“ „Тема от: Уеб директория“ „Добавяне на статия“ „Начални видеоклипове Аудиозаписи“ Блогове phpmotion „Шаблон от DevHunters.com“ „Изпращане на статия“ „Проектиран от: Уеб директория с покана“ „Добавяне на статия“ „регистрирани автори в нашия директория със статии" "Директория с връзки към PHP" "Добавяне на статия" "Спонсорирано от: Съвети и трикове за уеб администратори / Изтеглете БЕЗПЛАТНИ phpLD теми " "Добавяне на статия" "Осъществено от таблото за управление на статии" "Изпращане или регистриране на коментари за отваряне" "Начало? Уеблогове" "Разработено от Hutbazar" "Добавяне на статия" Начало Членове RSS "създадоха групата" "Моля, създайте акаунт, за да започнете." "Осъществено от: Удобен за статии Ultimate" inurl:"/wp-login.php?action=register " "Дизайнер: PHPLD шаблони" "Изпратете статия" "задвижван от joomla" "добавете нова публикация" "Проектирано от еднопосочни връзки" "Добавете статия" "За да потвърдите реципрочната връзка, моля, включете следния HTML код в страницата на URL " "Изпращане на статия" "Спонсорирано от Directhoo" "Добавяне на статия" "Шаблон от: Emillie Premium Directory" "Изпращане на статия" "Има * публикувани статии и * регистрирани автори" inurl:"/node/1" "Вие сте тук" „Публикувайте статията си в RSS формат за други уебсайтове за синдикиране“ „Шаблон от Yazzoo“ „Изпратете статия“ „Осъществено от PHPLD“ „Изпратете статия“ „Статии с правописни или граматически грешки ще бъдат изтрити“ „ДИРЕКТОРИЯ СКРИПТ ОТ PHP ВРЪЗКА ДИРЕКТОРИЯ " "Добавяне на статия" inurl:submitguide.php "изпращане на статии" "Избор на редакторите" "Скрипт за съобщение за пресата" "Добавяне на статия" "Директория с връзки към PHP" Начало „Безплатна регистрация“ „Изпратете статия“ „За нас“ „Свържете се с нас“ „Търсене в сайта“ „Влизане на автора“ „Информация за Alexa“ „Подробности за списъка“ „URL LISTING“ „Статистика на сайта“ „Добавяне на статия“ „Тази директория с връзки използва сесии за съхраняване на информация" "Добавяне на статия" "Проектирано от: PHPLD Вашият сайт" "Добавяне на статия" "Изпращане на статии" "Ако все още нямате акаунт, можете да се регистрирате тук. " "designed by AskGraphics.com" "Изпратете статия" inurl:"/user/profile.php?id=" moodle "Най-оценени прессъобщения" "Скрипт за прессъобщение" "Не изпращайте статии, пълни с правописни грешки и лоша граматика" „Тема от: Romow Web Directory“ „Добавяне на статия“ „Използвайте полето за търсене на статии, за да намерите статии по набор от теми“ „Спонсорирано от Directhoo“ „Добавяне на статия“ „PHP Link Directory“ inurl:"submit_article.php" "Това авторът е публикувал * статии досега. Повече информация за автора очаквайте скоро." "Осъществено от PHPLD" "Изпратете статия" "Осъществено от PHPmotion" - безплатен видео скрипт "Осъществено от: php Link Directory" "Изпратете статия" "Искате ли да ви изпращаме ежедневно дайджест за нови статии всеки ден" "Експертни автори" "Директория със статии Всички права запазени." "Директория с връзки към PHP" "Добавяне на статия" "Скинирано от: Директория за уеб дизайн" "Изпращане на статия" Начална страница на тема "Разрешаване на коментари" "Разрешаване на обратни проследявания" „Максимум прикачени файлове“ „Начални блогове“ „Влезте или се регистрирайте, за да публикувате коментари“ „PHPLD CLUB – БЕЗПЛАТНИ ТЕМИ ЗА ВАС“ „Изпратете статия“ „Изпратете връзка“ Ценообразуване „Въведете показания код“ „Това помага за предотвратяване на автоматизирани регистрации.“ „ Изпратете Статия" "Проектиран от: Invitation Web Directory" "Изпращане на статия" "Шаблон от: Emillie Premium Directory" "Добавяне на статия" "Тази директория с връзки използва сесии за съхраняване на информация" "Изпращане на статия" "За да предотвратите автоматично изпращане на спам, оставете това поле празно " Държава "Град/село" "Последен достъп" "Не сте влезли в системата" "Wordpress A rticle Directory Script" "PHP Link Directory" "Add Article" "Live Articles" "Article Directory Всички права запазени." "Подробности за статията" "Трябва да сте влезли, за да оставите оценка" "Трябва да сте влезли, за да оставите коментар " "Проектиран от One Way Links" "Изпращане на статия" "Проектиран от: Invitation Web Directory" "Добавяне на статия" "Шаблон от: Emillie Premium Directory" "Изпращане на статия" "Съдържанието на това поле се пази лично и няма да се показва публично" "Проектиран от: Футуристични художници" "Добавяне на статия" "Дизайнер: Директория на Astralinks" "Изпращане на статия" "Неприемливи сайтове, съдържание и няколко причини, поради които изпратените материали не са одобрени:" "Добавяне на статия" "Горещи прессъобщения" "Съобщение за печата Скрипт" "Извести ме за нови публикации по имейл" inurl:"populararticles.php" "Вашето виртуално лице или снимка" "Изпратете статия" "PHP Link Directory" "Изпратено от" "Влезте или се регистрирайте, за да публикувате коментари" "Търсете в този сайт :" "Подробности за статията" "Трябва да сте влезли, за да оставите оценка" "Трябва да сте влезли, за да оставите коментар" "Wordpre ss Скрипт за директория на статии" "Директория с връзки към PHP" "Изпратете статия" "захранвано от vbulletin" "Последни публикации в блогове" "Изпратете статии" inurl:"submitart.php" "Проектирано от: Уеб директория за покани" "Изпратете статия" "Изпратете статии " "Общо статии" "Общо автори" "Общо изтегляния" "Проектирано от Mitre Design и SWOOP" "Добавяне на статия" "Проектирано от: Футуристични художници" "Изпращане на статия" "Можете да зададете детайлни конфигурации на компоненти, като щракнете двукратно върху фон, текст , изображения или цитати" "Категории съобщения за пресата" "Скрипт за съобщения за пресата" "Проектиран от: PHPLD Вашият сайт" "Добавяне на статия" "Спонсорирано от Directhoo" "Изпращане на статия" "Условия за ползване на автора" "Условия за ползване на издателя" " Отказ от отговорност" "Запазваме си правото да включваме реклами на страници с вашите статии" "задвижвани от phpmotion" Блогове inurl:"login.php" "Регистрирайте се сега, за да изпратите свои собствени статии" Начало "Добавяне на статия" "Последни връзки" "Най-популярни хитове " "Осъществено от ArticleMS от ArticleTrader.com" "Изпратено от анонимен" "Влезте или се регистрирайте, за да публикувате коментари" „Най-популярни статии“ „Директория със статии Всички права запазени. " "Skinned by Addictive Games" "Изпратете статия" "Условия за ползване" "Това е демонстрация само страница ." "themes/default/templates/generic_terms.htm" "Изпращане на връзка" Ценообразуване "Въведете показания код" "Това помага за предотвратяване на автоматизирани регистрации." "Добавяне на статия" "Одрани от пристрастяващи игри" "Изпращане на статия" inurl:"login2submitart .php" "В нашата директория със статии има * публикувани статии и * регистрирани автори." "Оценете тази статия: Текуща:" Тема inurl:"act=dispBoardWrite" inurl:"login.php" "Влезте за достъп до контролния панел на вашия автор " "Изпратете връзка" Ценообразуване "Въведете показания код" "Това помага за предотвратяване на автоматизирани регистрации." "Изпратете статия" moodle "публичен профил" "Осигурете парола за новия акаунт в двете полета Паролата трябва да бъде най-малко" "За да потвърдите реципрочна връзка, моля, включете следния HTML код в страницата на URL" "Добавяне на статия" "Skinned by Addictive Games" "Добавяне на статия" "Повече информация за опциите за форматиране" "Проектирано от еднопосочни връзки" "Изпратете статия" "Информация за Alexa " "Подробности за списъка" "URL адрес за списъка" "Статистика на сайта" "Изпратете статия" "designed by AskGra phics.com" "Добавяне на статия" "Като публикувате статии, пълни с информация, скоро ще се насладите" inurl:"submitarticles.php" "Осъществено от скрипт за съобщение за пресата" "Регистрирайте се" "Моля, попълнете този формуляр и ние" ще изпратим получавате имейл за добре дошли, за да потвърдите имейл адреса си и да влезете." Форуми "Дизайнер: Безплатни PHPLD шаблони" "Добавяне на статия" inurl:"/blog/index.php?postid=" moodle "Разработено от Hutbazar" "Изпращане на статия" "Дизайнер: Директория на Astralinks" "Добавяне на статия" "Публикувайте статията си в RSS формат за други уебсайтове за синдикиране" Начало "Изпратете статия" "Последни връзки" "Най-популярни хитове" "Шаблон от DevHunters.com" "Изпратете статия" връзка:"www.articledashboard.com" "Влезте във вашия акаунт" "Влезте в достъп до вашия контролен панел за автори" "Нямате акаунт?" "Вашият универсален източник за безплатни статии. Имате ли нужда от съдържание, което да добавите към вашия уеб сайт?" "Осъществено от PHPLD" "Добавяне на статия" "Редове и абзаци се прекъсват автоматично" "Наскоро одобрени статии" "Директория на статии Всички права запазени." "Шаблон от: PHPmotionTemplates.com" " Интелигентен блог" "Добавяне на нова публикация" "Директория с връзки към PHP" inurl:"submit_article.php" "СКРИПТ НА ДИРЕКТОРИЯ ОТ ДИРЕКТОРИЯ ЗА ВРЪЗКИ в PHP" "Добавяне на статия" "Подкрепено от оферта за позиция" "Изпратете статия" "Директория с връзки към PHP" "Изпратете Статия" "ДИРЕКТОРИЯ СКРИПТ ОТ PHP ДИРЕКТОРИЯ ЗА ВРЪЗКИ" "Изпратете статия" "Разработено от Hutbazar" "Изпратете статия" "Спонсорирано от: Съвети и трикове за уеб администратори / Изтеглете БЕЗПЛАТНИ phpLD теми" "Добавяне на статия" "Горещи статии" "Директория на статии Всички права запазено.“ „Осъществено безплатно от PHPmotion“ Блогове „Извести ме, когато се публикуват нови коментари“ „За да потвърдите реципрочната връзка, моля, включете следния HTML код в страницата на URL“ „Изпратете статия“ „Вече има * Отлични статии в нашата база данни от * Автори" "Тази директория с връзки използва сесии за съхраняване на информация" „Изпратете статия“ „качете вашите статии и бъдете в течение за нови статии. " Начало "Добавяне на статия" "Последни връзки" "Най-посещавания" "Неприемливи сайтове, съдържание и няколко причини, поради които изпращанията не са одобрени:" "Изпращане на статия" "Решения за авторско право * vBulletin" "Създаване на блог" "Шаблон чрез безплатни PHPLD шаблони" „Добавяне на статия“ „Съобщение за пресата на седмицата“ „Скрипт за съобщение за пресата“ „Шаблон от безплатни PHPLD шаблони“ „Изпратете статия“ „качете вашите статии и бъдете в течение за нови статии.“ „PHPLD CLUB – БЕЗПЛАТНИ ТЕМИ ЗА ВАС“ „Добавяне Статия" "Публикуване на коментари към статии" "Директория със статии Всички права запазени." "Създаване на нов акаунт Вход Заявка за нова парола" "Използвайте статиите в нашата директория на уебсайта си, за да предоставите на посетителите си" "ДИРЕКТОРИЯ СКРИПТ ОТ PHP ДИРЕКТОРИЯ ЗА ВРЪЗКИ" "Изпратете Статия" "Осъществено от WordPress ž Използване на приставка за директория на статии" "Одрани от пристрастяващи игри" "Добавяне на статия" "Наскоро одобрени" "Скрипт за прессъобщение" "Избор на редакторите" "Директория със статии, всички права запазени." "Информация за Alexa" "Подробности за списъка " "URL адрес на СПИСЪКА" "Статистика на сайта" "Изпращане на статия" "Шаблон от: Emillie Premium Directory" "Добавяне на статия" "Софтуер за поддръжка от Zendesk" Форуми "Designed by: Futuristic Artists" "Добавяне на статия" "Не сте влезли. (Вход)" Държава "Град/населено място" "Уеб страница" "Произволни статии" "Директория със статии Всички права запазени." "Проектирано от Mitre Design и SWOOP" "Добавяне на статия" "Разработено от Hutbazar" "Добавяне на статия" "Свържете се с нас " "Това е само демонстрационна страница." "themes/default/templates/generic_contactus.htm" "Неприемливи сайтове, съдържание и няколко причини, поради които изпращанията не са одобрени:" "Изпратете статия" "Публична група" "Популярни думи за търсене" " Последни термини за търсене" "Осъществено от UCenter Home" "Дизайнер: PHPLD шаблони" "Изпратете статия" "Добре дошли!" "Изпращане на статия" "Нашите нови статии" "Осъществено от: Подходящо за статии" "общо статии" "Дизайнер: PHPLD шаблони" „Добавяне на статия“ „Шаблон от безплатни PHPLD шаблони“ „Изпратете статия“ „Тема от: Уеб директория“ „Изпратете статия“ „Ако сте наели призрачен писател, вие се съгласявате, че имате“ „проектиран от AskGraphics.com“ „Изпратете Статия" "Дизайнер: Директория на Astralinks" "Добавяне на статия" "Проектирано от: Футуристични художници" "Изпращане на статия" "Експертни автори" "Скрипт за съобщение за пресата" "Относно автора или" "Последни публикации" "Добавяне на нов коментар" "Дизайн на уебсайта и разработен от ArticleBeach" "Скин от: Указател за уеб дизайн" "Изпращане на статия" "Посочете парола за новия акаунт в двете полета" "Проектиран от Mitre Design и SWOOP " "Изпратете статия" "Тук са най-популярните 100 статии за" "Скрипт на статия - Осъществено от маркетинг на статии" "Изпратете статии" "Моля, влезте, за да напишете коментар" "добавете нова публикация" "Влезте, за да публикувате ново съдържание във форума. " "Осъществено от Drupal" "софтуер за поддръжка" inurl:"/entries/" "Скрипт за директория на статии в Wordpress" "Директория за връзки към PHP" "Изпратете статия" "Добавете статия" "Директория за връзки към PHP" "Изпратете връзка" Ценообразуване "Въведете кода показано" "Това помага за предотвратяване на автоматизирани регистрации." "Добавяне на статия" "Директория с връзки към PHP" "Изпращане на статия" "Създайте свой собствен личен адрес, за да могат вашите приятели и семейство да ви намерят!" "Най-оценени статии" "Директория със статии Всички права запазени ." "Skinned by: Web Design Directory" "Add Article" "Редовни връзки с реципрочни" Статия "Template By Yazzoo" "Submit Article" "Submit Article" "PHP Link Directory" "Theme by: Romow Web Directory" "Add Article " "PHPLD CLUB - БЕЗПЛАТНИ ТЕМИ ЗА ВАС" "Изпратете статия" Начало "Изпратете статия" "Последни връзки" "Най-популярни хитове" "Добре дошли в директорията със статии *. Тук можете да намерите интересна и полезна информация за най-популярните теми." "За нас" "Това е само демо страница." "themes/default/templates/generic_aboutus.htm" "Най-нови автори" "Добре дошли при нашите нови автори!" „Като член ще можете да“ „И така, какво чакате?“ „Регистрирайте се сега, за да започнете, забавно е и е БЕЗПЛАТНО!“ Блогове „Дизайнер: Безплатни PHPLD шаблони“ „Изпратете статия“ „Wordpress Скрипт за директория на статии" "Директория с връзки към PHP" "Добавяне на статия" "Допълнителни статии от" "Публикувано от анонимен (непроверено)" "дизайнирано от AskGraphics.com" "Добавяне на статия" "Влезте за достъп до контролния панел на вашия автор" "Регистрирайте се сега за изпращане на вашите собствени статии" "Този въпрос е за тестване дали сте посетител или не и за предотвратяване на автоматично изпращане на спам" inurl:"/node/2" "Вие сте тук" "Рекламирайте с нас" "Това е демонстрация само страница." "themes/default/templates/generic_advertise.htm" "Спонсорирано от Directhoo" "Изпращане на статия" връзка: www.articletrader.com "Осъществено от vBulletin" "Създаване на блог" "Осъществено от PHPLD" "Добавяне на статия" inurl:"/node/3" "Вие сте тук" "Дизайн и разработка от ArticleBeach" "Осъществено от таблото за управление на статии" inurl:submitarticles.php inurlopulararticles.php "Осъществено от: Подходящо за статии" inurl: submitguide.php "изпратете статии" "Осъществено от ArticleMS" "Използване на плъгин за директория на статии" "Присъединете се сега, за да популяризирате бизнеса си, да намерите партньори, да изградите взаимоотношения и да се свържете отново с общността. Синхронизиране с Facebook Twitter Имейл SMS и други" "е услуга за микроблогинг, базирана на инструмента за безплатен софтуер Laconica." "Външни профили" "Последно онлайн" "За мен" "Публични бележки" ЧЗВ Контакт "Мобилен интерфейс" "какво са правите" "групи" "Най-популярни" "Всички групи" "Забравена парола? " "Осъществено от" "revou" "Присъединете се сега, за да популяризирате бизнеса си, да намерите партньори, да изградите връзки и да се свържете отново с общността. Синхронизиране с Facebook Twitter Имейл SMS и други" "Имате проблеми при влизане?" "Публични бележки" "през ​​цялото време" "миналия месец" "показване на актуализации на снимки" "показване на актуализации на текст" inurl:"/recentupdates.php?m=" „Той работи със софтуера за микроблогиране StatusNet“ „е услуга за микроблогинг, базирана на инструмента StatusNet за безплатен софтуер.“ „присъединете се към разговора“ „код на изображението“ „регистрирайте се по-долу.“ „потребителите могат да комуникират, използвайки бързи актуализации на състоянието от 160 знака или по-малко." "Този свободно течащ диалог ви позволява да изпращате съобщения, снимки и видеоклипове до всеки" "Регистрирайте се с вашия имейл адрес. Вече има * регистрирани членове." "Моят текст и файлове са достъпни под Creative Commons Attribution 3.0, с изключение на тези лични данни: парола, имейл адрес, IM адрес и телефонен номер." групи "Най-популярни" "Всички групи" "Забравих вашия парола?" "Осъществено от" "ReVou Software" "Нека моите съобщения са видими за всички потребители, не само за моите приятели" "Осъществено от Sharetronix" "Осъществено от Jisko" "С този формуляр можете да създадете нов акаунт. След това можете да публикувате известия и да се свържете с приятели и колеги." "С този формуляр можете да създадете нов акаунт. След това можете да публикувате известия и да се свързвате с приятели и колеги." "Моят текст и файлове са достъпни под Creative Commons Attribution 3.0 с изключение на тези лични данни: парола, имейл адрес, IM адрес и телефонен номер." "Вашето име (без интервал между букви и думи)" "Осъществено от Blogtronix" "задвижвано от twitter скрипт" "Авторско право * Twitter скрипт" "Той изпълнява софтуера за микроблогинг Laconica" "Осъществено от * скрипт" inurl:"/recentupdates.php" "Осъществено от скрипт за Scritter " "Прикачено изображение: " "Осъществено от Blogtronix" "Публични бележки" "Условия за ползване" "Нормална версия" "Също така е лесно да намерите и да се свържете с други хора за частни теми и да следите техните актуализации." " Публични бележки" "Нормална версия" "Вход" "Осъществено от ReVou Software" inurl:"Special:UserLogin" wiki inurl:":UserLogin" "Тема: 12 февруари" "първи" "предишен" "1-20 от" "следващ" inurl:groups inurl:"http://wiki." "Наскоро коментирани страници" "CategoryWiki" inurl:"title=Lietot%C4%81ja_diskusija:" "MoinMoin Powered" "Valid HTML 4.01 " inurl:"Използвател:" wiki inurl:"title=Потребител:" wiki "Тази страница е последно използвана" "Тази страница е" "Изпращане / регистрация" "MoinMoin Powered" "GPL лицензиран" inurl:"title=% D0%9E%D0%B1%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BA%D0% BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%87%D0%B0:" "DokuWiki поддържа някои прост език за маркиране" "Какво с Горещи" "Последни промени" "Предстоящи събития" "Етикети" inurl:"title=Diskuse_s_u%C5%BEivatelem:" "Mac OS X Server - Wikis" inurl:"title=%E0%A6%AC%E0%A7% 8D %E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0% E0 %A7%80_%E0%A6%86%E0%A6%B2%E0%A6%BE%E0%A6%AA:" inurl:"tiki-forums.php" inurl:"User_talk:" wiki "Ще намерите повече полезни страници в категорията Wiki или в PageIndex" inurl:"title=Kasutaja_arutelu:" inurl:"title=%E5%88%A9%E7%94%A8%E8%80%85%E2%80%90 % E4%BC%9A%E8%A9%B1:" inurl:"Spezial:Anmelden" wiki "Thčme: Strasa - Mono" inurl:"title=Diskuse_s_wikistou:" "Сътрудничество при създаване на онлайн документи, редактиране ng и коментари. " "Влезте в моята страница" "wikis" inurl:/wiki/dokuwiki inurl:"wiki/RecentlyCommented" inurl:"http://mediawiki." inurl:"title=%E5%88%A9%E7%94% A8%E8%80%85%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:" inurl:"%ED%8A%B9%EC%88%98%EA %B8%B0%EB%8A%A5:%EB%A1%9C%EA%B7%B8%EC%9D%B8" wiki inurl:"title=%D7%A9%D7%99%D7%97%D7 %AA_%D7%9E%D7%A9%D7%AA%D7%9E%D7%A9:" "Тема: Eatlon" "Няма коментари на тази страница." "Вашето име на хост е" "Валиден XHTML" "Валиден CSS" inurl:"title=%D8%A8%D8%AD%D8%AB_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:" inurl:"title=Usuario:" inurl :"/wikka.php?wakka=UserSettings" "какви връзки тук" "свързани промени" "специални страници" inurl:"title=%E0%B8%84%E0%B8%B8%E0%B8%A2%E0% B8%81%E0%B8%B1%E0%B8%9A%E0%B8%9C%E0%B8%B9%E0%B9%89%E0%B9%83%E0%B8%8A%E0%B9% 89:" intitle:"Mac OS X Server" "Осъществено от TikiWiki CMS/Groupware v2" "Тази страница е била последно модифицирана" "Тази страница е била достъпвана" "Влезте / създайте акаунт" "Неизменна страница" Информационни прикачени файлове "Има в момента няма текст на тази страница, можете да търсите по това заглавие на страница i n други страници или редактирайте тази страница." "Движен от DokuWiki" "Благодарим ви, че инсталирахте TikiWiki!" inurl:"title=Special:UserLogin" "Diese Seite wurde zuletzt am" "Diese Seite wurde bisher" "Anmelden / Benutzerkonto erstellen" inurl:"Utilisateur:" wiki inurl:groups "влезте в моята страница" "актуализации" "wikis" "блогове" "календар" "поща" "Тема: Ohia" "Осъществено от TikiWiki" FrontPage RecentChanges FindPage Help Contents inurl:" title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:" inurl:"title=Szerkeszt%C5%91vita:" inurl:"/wikka/UserSettings" "Горещо " " Скорошни промени" "Предстоящи събития" inurl:"%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C4%83ng_nh%E1%BA%ADp" wiki inurl:"%D0 %A3 %D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:" wiki inurl:"title=Pembicaraan_Pengguna:" inurl:"wiki/index.php? title= " wiki inurl:"title=%E0%A4%B8%E0%A4%A6%E0%A4%B8%E0%A5%8D%E0%A4%AF_%E0%A4%B5%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%A4%E0%A4%BE:" inurl:"title=Benutzer_Diskussion:" "Theme: Fivealive" inurl:"title=Diskusia_s_redaktorom:" "What’s Hot" "Recent Changes" "Upcoming Events" "Tags" "Edited" inurl:"tiki-index.php" inurl:"title=%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80_%D1%81%D0%B0_%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA%D0%BE%D0%BC:" inurl:"title=Bruger_diskussion:" inurl:"Especial:Registre_i_entrada" wiki inurl:"title=Usuari_Discussi%C3%B3:" inurl:"title=Overleg_gebruiker:" inurl:"title=%CE%A3%CF%85%CE%B6%CE%AE%CF%84%CE%B7%CF%83%CE%B7_%CF%87%CF%81%CE%AE%CF%83%CF%84%CE%B7:" "Make sure to whitelist this domain to prevent registration emails being canned by your spam filter!" inurl:"Especial:Userlogin" wiki inurl:"%E4%BD%BF%E7%94%A8%E8%80%85:" wiki inurl:"title=Usuario_discusi%C3%B3n:" inurl:"title=Brugerdiskussion:" "Theme: Jqui" inurl:"title=Brukerdiskusjon:" "wiki is licensed under" "What’s Hot" "Recent Changes" inurl:"tiki-login.php" inurl:"Special:Inloggning" wiki "MoinMoin Powered" inurl:"Speci%C3%A1ln%C3%AD:P%C5%99ihl%C3%A1sit" wiki inurl:"Speci%C3%A1lis:Bel%C3%A9p%C3%A9s" wiki inurl:"title=Anv%C3%A4ndardiskussion:" inurl:"Special:Whatlinkshere" "pageindex" "recentchanges" "recentlycommented" inurl:"/RecentlyCommented" site:.edu "forums register" site:.edu "register iam over 13 years of age forum" site:.edu "discussion board register" site:.edu "bulletin board register" site:.edu "message board register" site:.edu "phpbb register forum" site:.edu "punbb register forum" site:.edu "forum signup" site:.edu "vbulletin forum signup" site:.edu "SMF register forum" site:.edu "register forum Please Enter Your Date of Birth" site:.edu "forums - Registration Agreement" site:.edu "forum Whilst we attempt to edit or remove any messages containing inappropriate, sexually orientated, abusive, hateful, slanderous" site:.edu "forum By continuing with the sign up process you agree to the above rules and any others that the Administrator specifies." site:.edu "forum In order to proceed, you must agree with the following rules:" site:.edu "forum register I have read, and agree to abide by the" site:.edu "forum To continue with the registration procedure please tell us when you were born." site:.edu "forum I am at least 13 years old." site:.edu "Forum Posted: Tue May 05, 2009 8:24 am Memberlist Profile" site:.edu "View previous topic:: View next topic forums" site:.edu "You cannot post new topics in this forum" site:.edu "proudly powered by bbPress" site:.edu "bb-login.php" site:.edu "bbpress topic.php" site:.edu "Powered by PunBB viewforum.php" site:.edu "Powered by PunBB register.php" site:.edu "The Following User Says Thank You to for this post" site:.edu "BB code is On" site:.edu "Similar Threads All times are GMT +1? site:.edu "If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post" site:.edu "Hot thread with no new posts" site:.edu "Thread is closed" site:.edu "There are 135 users currently browsing forums." site:.edu "forums post thread" site:.edu "forums new topic" site:.edu "forums view thread" site:.edu "forums new replies" site:.edu "forum post thread" site:.edu "forum new topic" site:.edu "forum view thread" site:.edu "forum new replies" site:.edu "add topic" site:.edu "new topic" site:.edu "phpbb" site:.edu "view topic forum" site:.edu "add message" site:.edu "send message" site:.edu "post new topic" site:.edu "new thread forum" site:.edu "send thread forum" site:.edu "VBulletin forum" site:.edu "Quick Reply Quote message in reply?" site:.edu "Currently Active Users: 232 (0 members and 232 guests)" site:.edu "Currently Active Users: members and guests" site:.edu "Forums Posting Statistics Newest Member" site:.edu "Users active in past 30 minutes: SMF" site:.edu "Users active in past 30 minutes: Most Online Today Most Online Ever" site:.edu "Most Online Today Most Online Ever Forums" site:.edu "Currently Active Users: 18 (0 members and 18 guests)" site:.edu "Users active today: 15478 (158 members and 15320 guests)" site:.edu "Threads: 673, Posts: 7,321, Total Members: 376? site:.edu "Add this forum to your Favorites List! Threads in Forum:" site:.edu "Threads in Forum Hot thread with no new posts" site:.edu "powered by vbulletin" site:.edu "powered by yabb" site:.edu "powered by ip.board" site:.edu "powered by phpbb" site:.edu "powered by phpbb3? site:.edu "powered by invision power board" site:.edu "powered by e-blah forum software" site:.edu "powered by xmb" site:.edu "powered by: fudforum" site:.edu "powered by fluxbb" site:.edu "powered by forum software minibb" site:.edu "this forum is powered by phorum" site:.edu "powered by punbb" site:.edu "powered by quicksilver forums" site:.edu "powered by seo-board" site:.edu "powered by smf" site:.edu "powered by ubb.threads" site:.edu "powered by the unclassified newsboard" site:.edu "powered by usebb forum software" site:.edu "powered by xennobb" site:.edu "powered by yaf" site:.edu "Powered By MyBB" site:.edu "Powered by IP.Board" site:.edu "powered by phpbb" site:.edu "forums post thread" site:.edu "forums new topic" site:.edu "forums view thread" site:.edu "forums new replies" site:.edu "forum post thread" site:.edu "forum new topic" site:.edu "forum view thread" site:.edu "forum new replies" site:.edu "forum" site:.edu "phorum" site:.edu "add topic" site:.edu "new topic" site:.edu "phpbb" site:.edu "yabb" site:.edu "ipb" site:.edu "posting" site:.edu "add message" site:.edu "send message" site:.edu "post new topic" site:.edu "new thread" site:.edu "send thread" site:.edu "vbulletin" site:.edu "bbs" site:.edu "intext:powered by vbulletin" site:.edu "intext:powered by yabb" site:.edu "intext:powered by ip.board" site:.edu "intext:powered by phpbb" site:.edu "inanchor:vbulletin" site:.edu "inanchor:yabb" site:.edu "inanchor:ip.board" site:.edu "inanchor:phpbb" site:.edu "/board" site:.edu "/board/" site:.edu "/foren/" site:.edu "/forum/" site:.edu "/forum/?fnr=" site:.edu "/forums/" site:.edu "/sutra" site:.edu "act=reg" site:.edu "act=sf" site:.edu "act=st" site:.edu "bbs/ezboard.cgi" site:.edu "bbs1/ezboard.cgi" site:.edu "board" site:.edu "board-4you.de" site:.edu "board/ezboard.cgi" site:.edu "boardbook.de" site:.edu "bulletin" site:.edu "cgi-bin/ezboard.cgi" site:.edu "invision" site:.edu "kostenlose-foren.org" site:.edu "kostenloses-forum.com" site:.edu "list.php" site:.edu "lofiversion" site:.edu "modules.php" site:.edu "newbb" site:.edu "newbbs/ezboard.cgi" site:.edu "onlyfree.de/cgi-bin/forum/" site:.edu "phpbbx.de" site:.edu "plusboard.de" site:.edu "post.php" site:.edu "profile.php" site:.edu "showthread.php" site:.edu "siteboard.de" site:.edu "thread" site:.edu "topic" site:.edu "ubb" site:.edu "ultimatebb" site:.edu "unboard.de" site:.edu "webmart.de/f.cfm?id=" site:.edu "xtremeservers.at/board/" site:.edu "yooco.de" site:.edu "forum" site:.edu "phorum" site:.edu "add topic" site:.edu "new topic" site:.edu "phpbb" site:.edu "yabb" site:.edu "ipb" site:.edu "posting" site:.edu "add message" site:.edu "send message" site:.edu "post new topic" site:.edu "new thread" site:.edu "send thread" site:.edu "vbulletin" site:.edu "bbs" site:.edu "cgi-bin/forum/" site:.edu "/cgi-bin/forum/blah.pl" site:.edu "powered by e-blah forum software" site:.edu "powered by xmb" site:.edu "/forumdisplay.php?" site:.edu "/misc.php?action=" site:.edu "member.php?action=" site:.edu "powered by: fudforum" site:.edu "index.php?t=usrinfo" site:.edu "/index.php?t=thread" site:.edu "/index.php?t=" site:.edu "index.php?t=post&frm_id=" site:.edu "powered by fluxbb" site:.edu "/profile.php?id=" site:.edu "viewforum.php?id" site:.edu "login.php" site:.edu "register.php" site:.edu "profile.forum?" site:.edu "posting.forum&mode=newtopic" site:.edu "post.forum?mode=reply" site:.edu "powered by icebb" site:.edu "index.php?s=" site:.edu "act=login&func=register" site:.edu "act=post&forum=19? site:.edu "forums/show/" site:.edu "module=posts&action=insert&forum_id" site:.edu "posts/list" site:.edu "/user/profile/" site:.edu "/posts/reply/" site:.edu "new_topic.jbb?" site:.edu "powered by javabb 0.99? site:.edu "login.jbb" site:.edu "new_member.jbb" site:.edu "reply.jbb" site:.edu "/cgi-bin/forum/" site:.edu "cgi-bin/forum.cgi" site:.edu "/registermember" site:.edu "listforums?" site:.edu "forum mesdiscussions.net" site:.edu "version" site:.edu "index.php?action=vtopic" site:.edu "powered by forum software minibb" site:.edu "index.php?action=registernew" site:.edu "member.php?action=register" site:.edu "forumdisplay.php" site:.edu "newthread.php?" site:.edu "newreply.php?" site:.edu "/phorum/" site:.edu "phorum/list.php" site:.edu "this forum is powered by phorum" site:.edu "phorum/posting.php" site:.edu "phorum/register.php" site:.edu "phpbb/viewforum.php?" site:.edu "/phpbb/" site:.edu "phpbb/profile.php?mode=register" site:.edu "phpbb/posting.php?mode=newtopic" site:.edu "phpbb/posting.php?mode=reply" site:.edu "/phpbb3/" site:.edu "phpbb3/ucp.php?mode=register" site:.edu "phpbb3/posting.php?mode=post" site:.edu "phpbb3/posting.php?mode=reply" site:.edu "/punbb/" site:.edu "punbb/register.php" site:.edu "powered by phpbb" site:.edu "powered by punbb" site:.edu "/quicksilver/" site:.edu "powered by quicksilver forums" site:.edu "index.php?a=forum" site:.edu "index.php?a=register" site:.edu "index.php?a=post&s=topic" site:.edu "/seoboard/" site:.edu "powered by seo-board" site:.edu "seoboard/index.php?a=vforum" site:.edu "index.php?a=vtopic" site:.edu "/index.php?a=register" site:.edu "powered by smf 1.1.5? site:.edu "index.php?action=register" site:.edu "/index.php?board" site:.edu "powered by ubb.threads" site:.edu "ubb=postlist" site:.edu "ubb=newpost&board=1? site:.edu "ultrabb" site:.edu "view_forum.php?id" site:.edu "new_topic.php?" site:.edu "login.php?register=1? site:.edu "powered by vbulletin" site:.edu "vbulletin/register.php" site:.edu "/forumdisplay.php?f=" site:.edu "newreply.php?do=newreply" site:.edu "newthread.php?do=newthread" site:.edu "powered by bbpress" site:.edu "bbpress/topic.php?id" site:.edu "bbpress/register.php" site:.edu "powered by the unclassified newsboard" site:.edu "forum.php?req" site:.edu "forum.php?req=register" site:.edu "/unb/" site:.edu "powered by usebb forum software" site:.edu "/usebb/" site:.edu "topic.php?id" site:.edu "panel.php?act=register" site:.edu "a product of lussumo" site:.edu "comments.php?discussionid=" site:.edu "/viscacha/" site:.edu "forum.php?s=" site:.edu "powered by viscacha" site:.edu "/viscacha/register.php" site:.edu "/post?id=" site:.edu "post/printadd?forum" site:.edu "community/index.php" site:.edu "community/forum.php?" site:.edu "community/register.php" site:.edu "powered by xennobb" site:.edu "hosted for free by zetaboards" site:.edu "powered by yaf" site:.edu "yaf_rules.aspx" site:.edu "yaf_topics" site:.edu "postmessage.aspx" site:.edu "register.aspx" site:.edu "post/?type" site:.edu "action=display&thread" site:.edu "index.php" site:.edu "index.php?fid" site:.edu inurl:guestbook inurl: edu guestbook inurl:edu Link:http://worldwidemart.com/scripts/ inurl:"guestBook.aspx" site:edu inurl:guest inurl:guest site:edu inurl:guestbook.html inurl:guestbook.php inurl:kg.php inurl:guestbook.html site:.edu inurl:guestbook.php site:.edu inurl:?agbook=addentry inurl:?show=guestbook&do=add inurl:?t=add inurl:GuestBook/addentry.php inurl:Myguestbook/index.asp inurl:addentry.html inurl:addentry.php inurl:addguest.cgi inurl:addguest.htm inurl:addguest.html inurl:addguest.php inurl:addguest.shtml inurl:apeboard.cgi inurl:apeboard_plus.cgi inurl:apeboard_plus.cgi?command= inurl:ardguest.php?do= inurl:aska.cgi inurl:aspboardpost.asp?id= inurl:bbs.cgi inurl:bbs.cgibbs.cgi? inurl:bbs.cgibbs.cgi?id= inurl:bbs.cgibbs.cgi?mode= inurl:bbs.cgibbs.cgi?page= inurl:bbs.cgibbs.cgi?room= inurl:bbs.cgibbs.php inurl:bbs.cgibbs/mm.php inurl:bbs.cgibbs_inaka.jsp inurl:board.cgi?id= inurl:board.cgi?mode= inurl:book.php inurl:c-board.cgi?cmd= inurl:cbbs.cgi inurl:cbbs.cgi?mode= inurl:cbbs.cgi?mode=new inurl:cf.cgi?mode= inurl:cgi-bin/config.pl inurl:cgi-bin/gbook.cgi inurl:cgi/gbook.cgi inurl:clever.cgi inurl:clever.cgi?mode= inurl:clever.cgi?page= inurl:clip.cgi inurl:combbs.cgi?mode= inurl:comment.htm inurl:comment.php inurl:comment.php?id= inurl:comment_reply.php?com_itemid= inurl:commentaire.php?id= inurl:comments.asp inurl:comments.htm inurl:comments.html inurl:comments.php inurl:comments.php?id= inurl:crazyguestbook.cgi?db= inurl:custombbs.cgi inurl:custreg.asp?action= inurl:cutebbs.cgi inurl:dcguest.cgi?action=add_form inurl:default.asp inurl:default.asp?action= inurl:diary.cgi?mode= inurl:e-guest_sign.pl inurl:e_sign.asp inurl:easyguestbookentry inurl:eguestbook.cgi?Sign inurl:eintrag.htm inurl:eintrag.html inurl:eintrag.php inurl:eintrag.php?id= inurl:eintrag1.php inurl:eintrag_neu.php inurl:eintragen.asp inurl:eintragen.htm inurl:eintragen.html inurl:eintragen.php inurl:eintragen.php?menuid= inurl:eintragen.pl inurl:emfsend.cgi?sc= inurl:entry.php inurl:entry.php?id= inurl:epad.cgi inurl:fantasy.cgi inurl:firebook.cgi inurl:form.php inurl:forum_posts.asp inurl:forum_topics.asp inurl:fpg.cgi inurl:fsguest.html inurl:fsguestbook.html inurl:g_book.cgi inurl:gaeste.php? inurl:gaestebuch.cgi inurl:gaestebuch.htm inurl:gaestebuch.html inurl:gaestebuch.php inurl:gaestebuch.php?action= inurl:gaestebuch.php?action=entry inurl:gaestebuch/ inurl:gaestebuch_lesen.php inurl:gastbok.php inurl:gastbuch.php inurl:gastenboek.html inurl:gastenboek.php inurl:gb.asp inurl:gb.cfm?bookID= inurl:gb.cgi?id= inurl:gb.php inurl:gb.php?action= inurl:gb.php?id= inurl:gb.php?tmpl= inurl:gb.php?user= inurl:gb/ inurl:gb/addrec.php inurl:gb_list.asp inurl:gb_sign.asp inurl:gbadd.php inurl:gbadd.php?action=new&interval=1 inurl:gbaddentry.php inurl:gbook.asp inurl:gbook.html inurl:gbook.php inurl:gbook.php?a= inurl:gbook.php?action= inurl:gbook.php?id= inurl:gbook.php?page=1 inurl:gbook.php?show= inurl:gbook/?page=1 inurl:gbook/gbook.php inurl:gbook2.php inurl:gbook?sign= inurl:gbooksign.asp inurl:gbserver inurl:gbuch.php inurl:gjestebok.php inurl:gjestebok/index.asp inurl:gjestebok/index.pl inurl:gjestebok3.asp inurl:gjesteboken.asp inurl:glight.cgi inurl:goto.php?msgadd inurl:gst_sign.dbm inurl:gstbk_add.php?sid= inurl:guest.asp inurl:guest.cfm inurl:guest.cgi inurl:guest.cgi?action=add_form inurl:guest.cgi?handle= inurl:guest.cgi?pageid= inurl:guest.cgi?site= inurl:guest.htm inurl:guest.html inurl:guest.php inurl:guest.pl inurl:guest/gbook.php inurl:guest_book.htm inurl:guest_book.html inurl:guestadd.html inurl:guestbook inurl:guestbook-add.html inurl:guestbook.asp inurl:guestbook.asp?action= inurl:guestbook.asp?mode= inurl:guestbook.asp?sent= inurl:guestbook.aspx inurl:guestbook.cfm inurl:guestbook.cgi inurl:guestbook.cgi?action= inurl:guestbook.cgi?action=add&aspm1= inurl:guestbook.cgi?id= inurl:guestbook.cgi?start= inurl:guestbook.htm inurl:guestbook.html inurl:guestbook.html?page= inurl:guestbook.mv?parm_func= inurl:guestbook.php inurl:guestbook.php.cgi?gbook= inurl:guestbook.php? inurl:guestbook.php?act= inurl:guestbook.php?action= inurl:guestbook.php?action=add inurl:guestbook.php?cmd= inurl:guestbook.php?do= inurl:guestbook.php?form= inurl:guestbook.php?id= inurl:guestbook.php?inputmask= inurl:guestbook.php?lang= inurl:guestbook.php?mode= inurl:guestbook.php?new_message= inurl:guestbook.php?new_message=1 inurl:guestbook.php?page= inurl:guestbook.php?pg= inurl:guestbook.php?sn= inurl:guestbook.pl inurl:guestbook.pl?action= inurl:guestbook.pl?action=add inurl:guestbook.pl?action=form inurl:guestbook/add.html inurl:guestbook/comment.php?gb_id= inurl:guestbook/index.asp inurl:guestbook/php/entry.php inurl:guestbook/post/ inurl:guestbook2.asp?l= inurl:guestbook_add.php inurl:guestbook_new.php inurl:guestbook_sign.php inurl:guestbook_sign.php?oscsid= inurl:guestbookadd.asp inurl:guestbookvip.php inurl:guestbookvip.php?memid= inurl:guestbox.php?anfangsposition= inurl:guestform.php inurl:guestform.php?gbid=cdg inurl:guestsaisie.php inurl:honey.cgi inurl:honey.cgi?mode= inurl:ibbs.cgi inurl:ibbs.cgi?H=tp&no=0 inurl:ibbs.cgi?page= inurl:imgboard.cgi inurl:index.php3?add=1 inurl:index.php?gbname= inurl:index.php?id=...&item_id= inurl:index.php?p=guestbook!}<=NL&action=add inurl:index.php?page=guestbook_read inurl:joyful. inurl:joyful.cgi inurl:joyfulyy.cgi inurl:jsguest.cgi?action=new inurl:kakikomitai.cgi? inurl:kb_pc.cgi inurl:kboard.cgi inurl:kbpost.htm inurl:kerobbs.cgi inurl:kerobbs.cgi?page= inurl:kiboujoken.htm inurl:kniha.php inurl:krbbs.cgi inurl:ksgosci.php inurl:ksiega.php inurl:ktaiufo.cgi inurl:light.cgi inurl:light.cgi?page= inurl:mboard.php inurl:messageboard.html inurl:messages.php?1=1&agbook=addentry inurl:mezase.cgi inurl:minibbs.cgi inurl:minibbs.cgi?log= inurl:mkakikomitai.cgi inurl:msboard.cgi?id= inurl:msgboard.mv?parm_func= inurl:msgbook.cgi?id= inurl:new.php?forum_id= inurl:new_message.asp inurl:newdefault.asp inurl:newdefault.asp?DeptID= inurl:news.php?subaction= inurl:patio.cgi inurl:petit.cgi inurl:phello.cgi inurl:post.asp inurl:post.htm inurl:post.html inurl:post_comment.php?u= inurl:post_comment.php?w= inurl:postcards.php?image_id= inurl:print_sec_img.php inurl:purybbs.cgi inurl:purybbs.cgi?page= inurl:rabook.php inurl:rbook.cgi inurl:rbook.cgi?page= inurl:read.cgi/gboy/ inurl:read.cgi?board= inurl:reg.php?pid= inurl:resbbs.cgi inurl:schedule.cgi?form= inurl:sendmessage.asp inurl:showguestbook.php?linkid= inurl:sicharou.cgi inurl:sign.asp inurl:sign.asp?PagePosition= inurl:sign.html inurl:sign.php inurl:sign_guestbook.asp inurl:sign_guestbook_form.asp inurl:signbook.cfm inurl:signerbok.asp inurl:signgb.php inurl:signguestbook.asp inurl:signguestbook.html inurl:signguestbook.php inurl:signup.php inurl:simbbs.cgi inurl:skriv.html inurl:skriv_i_gaestebogen.html inurl:spguest.cgi?id= inurl:stlfbbs.cgi inurl:submit.asp inurl:submit.html inurl:submit.php inurl:submit.pl inurl:suggest.php?action= inurl:sunbbs.cgi?mode= inurl:tnote.cgi inurl:treebbs.cgi inurl:ttboard.cgi?act= inurl:upb.cgi inurl:upbbs.cgi inurl:user.php inurl:view.php?id=9&action=new inurl:write.asp inurl:write.php?uid= inurl:wwwboard.cgi inurl:yapgb.php?action= inurl:yuu-fantasy.cgi inurl:yybbs.cgi inurl:zboard.php?id= inurl:0815guestbooks.de inurl:100pro-gaestebuch.de/gbserver/ inurl:12book.de/gaestebuch inurl:Gb/Sign_Guestbook.asp inurl:Gbook/Sign_Guestbook.asp inurl:GuestBook/gst_sign.dbm inurl:Guestbook/Sign_Guestbook.asp inurl:Guestbook_eintrag.htm inurl:Sign_Guestbook.asp inurl:addbook.cgi inurl:addentry inurl:addguest inurl:addguest.html inurl:addguest.php inurl:addguestGB2.cgi inurl:addmessage inurl:apeboard inurl:bbs inurl:burning inurl:epad inurl:feedbook.de inurl:flash_gb9.php?id= inurl:flf-book.de inurl:free-guestbooks.de/gbserver/ inurl:freeguestbook.de/addbook.cgi? inurl:freeguestbook.de/readbook.cgi? inurl:freeguestbook4you.de gaestebuch-umsonst.ws inurl:gaestebuch. inurl:gaestebuch.007box.de inurl:gaestebuch.php inurl:gaestebuch.php? inurl:gaestebuch/neu.php inurl:gaestebuch4u.de inurl:gaestebuchking.de inurl:gastbuch.php inurl:gastbuch.php3 inurl:gastbuch.php?id= inurl:gb.cgi inurl:gb.php?user= inurl:gb.webmart.de inurl:gb.webmart.de/gb.cfm?id= inurl:gb/addguest.html inurl:gb/guest.pl inurl:gb/sign.html inurl:gb2003.de inurl:gb_eintrag.php? inurl:gbook.cgi inurl:gbook.tv inurl:gbook/addguest.html inurl:gbook/guest.pl inurl:gbook/sign.html inurl:gbserver.de inurl:gratis-gaestebuch.de inurl:gratis-gaestebuch.eu/firebook.cgi? inurl:gst_sign.dbm inurl:guessbook/sign.html inurl:guest. inurl:guest.pl inurl:guest_book/guest.pl inurl:guestb inurl:guestbook inurl:guestbook-free.com/books inurl:guestbook-free.com/books2 inurl:guestbook.cgi inurl:guestbook.onetwomax.de inurl:guestbook/a=sign inurl:guestbook/addguest.html inurl:guestbook/guest.pl inurl:guestbook/sign.html inurl:guestbook24.com/gastbuch.php inurl:guestbook24.eu inurl:guestbook4you.de/gb.php? inurl:iboox.com inurl:multiguestbook.com inurl:my-gaestebuch.de inurl:netguestbook.com inurl:new.html#sign inurl:power-guestbook.de inurl:regsign.cgi inurl:sign.fcgi inurl:sign.html inurl:sign_book.cgi inurl:wgbsign.html site:com “powered by BlogEngine.NET” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” "post a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” "post a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” "post a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” "post a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” "Leave a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” "Leave a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” "Leave a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” "Leave a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” "add a comment" -"comments closed" -"you must be logged in" site:org “powered by BlogEngine.NET” "add a comment" -"comments closed" -"you must be logged in" site:edu “powered by BlogEngine.NET” "add a comment" -"comments closed" -"you must be logged in" site:gov “powered by BlogEngine.NET” "add a comment" -"comments closed" -"you must be logged in" site:com “powered by BlogEngine.NET” "post a comment" site:edu “powered by BlogEngine.NET” "post a comment" site:org “powered by BlogEngine.NET” "post a comment" site:gov “powered by BlogEngine.NET” "post a comment" site:com “powered by BlogEngine.NET” "Leave a comment" site:org “powered by BlogEngine.NET” "Leave a comment" site:edu “powered by BlogEngine.NET” "Leave a comment" site:gov “powered by BlogEngine.NET” "Leave a comment" site:com “powered by BlogEngine.NET” "add a comment" site:org “powered by BlogEngine.NET” "add a comment" site:edu “powered by BlogEngine.NET” "add a comment" site:gov “powered by BlogEngine.NET” "add a comment" site:com “powered by BlogEngine.NET” inurl:blog "post a comment" site:edu “powered by BlogEngine.NET” inurl:blog "post a comment" site:org “powered by BlogEngine.NET” inurl:blog "post a comment" site:gov “powered by BlogEngine.NET” inurl:blog "post a comment" site:com “powered by BlogEngine.NET” inurl:blog "Leave a comment" site:org “powered by BlogEngine.NET” inurl:blog "Leave a comment" site:edu “powered by BlogEngine.NET” inurl:blog "Leave a comment" site:gov “powered by BlogEngine.NET” inurl:blog "Leave a comment" site:com “powered by BlogEngine.NET” inurl:blog "add a comment" site:org “powered by BlogEngine.NET” inurl:blog "add a comment" site:edu “powered by BlogEngine.NET” inurl:blog "add a comment" site:gov “powered by BlogEngine.NET” inurl:blog "add a comment" site:edu "powered by BlogEngine.NET" site:com "powered by BlogEngine.NET" site:gov "powered by BlogEngine.NET" site:org "powered by BlogEngine.NET" “powered by BlogEngine.NET” site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” "post a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” "post a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” "post a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” "post a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” "add a comment" -"comments closed" -"you must be logged in" site:org “Powered by BlogEngine.NET 1.4.5.0” "add a comment" -"comments closed" -"you must be logged in" site:edu “Powered by BlogEngine.NET 1.4.5.0” "add a comment" -"comments closed" -"you must be logged in" site:gov “Powered by BlogEngine.NET 1.4.5.0” "add a comment" -"comments closed" -"you must be logged in" site:com “Powered by BlogEngine.NET 1.4.5.0” "post a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” "post a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” "post a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” "post a comment" site:com “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” "Leave a comment" site:com “Powered by BlogEngine.NET 1.4.5.0” "add a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” "add a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” "add a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” "add a comment" site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "post a comment" site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "Leave a comment" site:com “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" site:org “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" site:edu “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" site:gov “Powered by BlogEngine.NET 1.4.5.0” inurl:blog "add a comment" site:edu "Powered by BlogEngine.NET 1.4.5.0" site:com "Powered by BlogEngine.NET 1.4.5.0" site:gov "Powered by BlogEngine.NET 1.4.5.0" site:org "Powered by BlogEngine.NET 1.4.5.0" “Powered by BlogEngine.NET 1.4.5.0” site:com “powered by expressionengine” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” inurl:blog "post a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” inurl:blog "Leave a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” inurl:blog "add a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” "post a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” "post a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” "post a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” "post a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” "Leave a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” "Leave a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” "Leave a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” "Leave a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” "add a comment" -"comments closed" -"you must be logged in" site:org “powered by expressionengine” "add a comment" -"comments closed" -"you must be logged in" site:edu “powered by expressionengine” "add a comment" -"comments closed" -"you must be logged in" site:gov “powered by expressionengine” "add a comment" -"comments closed" -"you must be logged in" site:com “powered by expressionengine” "post a comment" site:edu “powered by expressionengine” "post a comment" site:org “powered by expressionengine” "post a comment" site:gov “powered by expressionengine” "post a comment" site:com “powered by expressionengine” "Leave a comment" site:org “powered by expressionengine” "Leave a comment" site:edu “powered by expressionengine” "Leave a comment" site:gov “powered by expressionengine” "Leave a comment" site:com “powered by expressionengine” "add a comment" site:org “powered by expressionengine” "add a comment" site:edu “powered by expressionengine” "add a comment" site:gov “powered by expressionengine” "add a comment" site:com “powered by expressionengine” inurl:blog "post a comment" site:edu “powered by expressionengine” inurl:blog "post a comment" site:org “powered by expressionengine” inurl:blog "post a comment" site:gov “powered by expressionengine” inurl:blog "post a comment" site:com “powered by expressionengine” inurl:blog "Leave a comment" site:org “powered by expressionengine” inurl:blog "Leave a comment" site:edu “powered by expressionengine” inurl:blog "Leave a comment" site:gov “powered by expressionengine” inurl:blog "Leave a comment" site:com “powered by expressionengine” inurl:blog "add a comment" site:org “powered by expressionengine” inurl:blog "add a comment" site:edu “powered by expressionengine” inurl:blog "add a comment" site:gov “powered by expressionengine” inurl:blog "add a comment" site:edu "powered by expressionengine" site:com "powered by expressionengine" site:gov "powered by expressionengine" site:org "powered by expressionengine" “powered by expressionengine” inurl:"title=Dyskusja_u%C5%BCytkownika:" inurl:"/wiki/index.php" "Theme: Strasa - Mono" wiki "you only need to fill in when" categorywiki "This is an alphabetical list of pages you can read on this server." "Login/Register" inurl:"title=%EC%82%AC%EC%9A%A9%EC%9E%90%ED%86%A0%EB%A1%A0:" inurl:"title=U%C5%BEivatel_diskuse:" "Theme: Fluid Index by Your Index" inurl:"title=Discussion_utilisateur:" "Welcome to MoinMoin. You will find here the help pages for the wiki system itself." "Wiki:About" inurl:"Speciaal:Aanmelden" wiki inurl:"title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:" inurl:"CategoryWiki" inurl:"Especial:Entrar" wiki inurl:"title=Discussioni_utente:" inurl:"/mediawiki/index.php" "The wiki, blog, calendar, and mailing list" inurl:"Istimewa:Masuk_log" wiki inurl:"title=%E4%BD%BF%E7%94%A8%E8%80%85%E8%A8%8E%E8%AB%96:" inurl:"title=%E0%B8%84%E0%B8%B8%E0%B8%A2%E0%B9%80%E0%B8%81%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%A7%E0%B8%81%E0%B8%B1%E0%B8%9A%E0%B8%9C%E0%B8%B9%E0%B9%89%E0%B9%83%E0%B8%8A%E0%B9%89:" inurl:"title=Usu%C3%A1rio_Discuss%C3%A3o:" inurl:"Speciale:Entra" wiki "Powered by WikkaWiki" inurl:"tiki-register.php" "dokuwiki.txt" "Tema: Fivealive - Lemon" inurl:"%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3" wiki Categories PageIndex Recent Changes Recently Commented "Login/Register" "" "" "Powered by Tikiwiki CMS/Groupware" inurl:"title=Utilizador_Discuss%C3%A3o:" "Tema: Fivealive" "This page was last modified on" "wiki" inurl:"Specjalna:Zaloguj" wiki "Thanks for installing Wikka! This wiki runs on version" inurl:"http://wikka." "Theme: Coelesce" "Powered By MediaWiki" inurl:wiki "Theme: Fivealive - Kiwi" inurl:"Utente:" wiki "recentchanges" "findpage" "helpcontents" inurl:"Sp%C3%A9cial:Connexion" wiki inurl:"Pengguna:" wiki "MoinMoin Powered" "Python Powered" inurl:"title=%E0%B4%89%E0%B4%AA%E0%B4%AF%E0%B5%8B%E0%B4%95%E0%B5%8D%E0%B4%A4%E0%B4%BE%E0%B4%B5%E0%B4%BF%E0%B4%A8%E0%B5%8D%E0%B4%B1%E0%B5%86_%E0%B4%B8%E0%B4%82%E0%B4%B5%E0%B4%BE%E0%B4%A6%E0%B4%82:" inurl:"U%C5%BCytkownik:" wiki inurl:"Speciel:Log_p%C3%A5" wiki "Powered By MediaWiki" "Powered By MediaWiki" inurl:wiki "what links here" "related changes" "special pages" inurl:Special:Whatlinkshere "There is currently no text in this page, you can search..." "Powered by wikkawiki" inurl:wiki/RecentlyCommented "pageindex" "recentchanges" "recentlycommented" "you only need to fill in when" categorywiki "MoinMoin Powered" "MoinMoin Powered" "Python Powered" "recentchanges" "findpage" "helpcontents" "powered by tikiwiki" "powered by tikiwiki" inurl:tiki-index.php Powered by TikiWiki CMS/Groupware v2 inurl:tiki-register.php

Клиентът може да поиска от уеб сървъра както файл с документ от диск, така и документ, динамично генериран от някаква външна програма (като правило, в зависимост от данните, предоставени от потребителя при попълване на формуляра). CGI интерфейсът е спецификация за взаимодействието между уеб сървър и външна програма, която уеб сървърът изпълнява, за да обработи заявка. (Външна програма, независимо от нейното естество, често се нарича CGI скрипт.)

CGI определя как данните, предоставени от клиента в заявка, се предават на програмата, как програмата връща генерираното HTML съдържание на сървъра и какви променливи на средата се задават от сървъра, когато програмата стартира. Променливите на средата носят допълнителна информация за сървъра и заявката (например тип сървър, IP адрес на клиента и т.н.).

Данните от HTML формуляр, попълнен от клиента, могат да бъдат изпратени до сървъра по два метода: GET и POST, това се определя от параметъра методсъответния етикет<форма метод=... действие=...>. В първия случай (GET) данните се добавят след въпросителния знак в края на URL адреса, посочен в параметъра действие, във втория случай те се изпращат в тялото на заявката - в секцията, предназначена за данни (следва след всички заглавки и празен ред). И в двата случая данните се кодират по един и същи начин - вижте по-нататък. параграф.

Когато се извика CGI програма, всичко, което е в тялото на заявката, се дава на програмата при стандартен вход и каквото и да е в URL адреса след въпросителния знак, се поставя в променливата на средата QUERY_STRING. Уеб сървърът не интерпретира или трансформира данните от заявката по никакъв начин, тези задачи се възлагат на CGI програмата.

Програмата CGI записва съдържанието на отговора (обикновено HTML съдържание) в своя стандартен изход, който се прихваща от уеб сървъра, за да се изпрати обратно на клиента. CGI програмата трябва първо да отпечата заглавката "Content-Type" и да я отдели от данните с празен ред. Например, резултатът от CGI програма, която генерира HTML, може да изглежда така:

Тип съдържание: текст/html

Здравей свят

Конфигуриране на сървъра Apache за изпълнение на CGI скриптове

За да може Apache да третира всички файлове в определена директория като CGI скриптове, трябва да използвате директивата

ScriptAlias ​​​​/ виртуален/път/ /път/до/директория/ ScriptAlias ​​​​/cgi-bin/ /usr/local/www/cgi-bin/ Това означава, че за обработка на заявка за URL като http://your.server.com/cgi-bin/dir/script, a скрипт файл от каталога DocumentRoot/cgi-bin/dir/ и /usr/local/www/cgi-bin/dir/script се изпълнява.

За смесено съхранение на файлове за преглед и CGI скриптове в една и съща директория в дървото DocumentRootдайте на CGI скриптовете същото разширение (напр. ".cgi") и кажете на сървъра да интерпретира такива файлове като CGI скриптове:

AddHandler cgi-script .cgi Директивата AddHandler може да се използва във всеки контекст на конфигурация на Apache.

URL структура и кодиране на данни за заявка

Части от URL адреса, наречени PATH_INFO и QUERY_STRING, са съществени за работата на CGI програмите. Обмислете заявка с URL като

http://my.server.com/cgi-bin/dir/prog/a/b?A=1&B=qwerty

Използване на директивата ScriptAlias, дадено в предходния параграф, сървърът определя, че е имало извикване на програмата CGI и, за да търси тази програма, замества първоначалния /cgi-bin/На /usr/local/www/cgi-bin/. След искания URL адрес сървърът намира поддиректория в тази директория реж, но поддиректория прогрв каталога /usr/local/www/cgi-bin/dirне е открит. В този случай сървърът приема това прогр- името на CGI програмата, която ще се изпълнява. Ако програмата /usr/local/www/cgi-bin/dir/progне е намерена или не може да бъде изпълнена, сървърът връща на клиента грешка 403, 404 или 500. В противен случай програмата prog се изпълнява и останалата част от пътя от URL адреса е /a/b- предава се на програмата prog в променливата на средата PATH_INFO. По този начин можете да подадете допълнителни параметри към CGI програмата.

Всичко след въпросителния знак A=1&B=qwerty- предава се на prog в променливата на средата QUERY_STRING. Това може да са данни от формуляр, попълнен от потребителя, изпратен до сървъра чрез метода GET или някаква друга информация (сървърът не прави никакви предположения относно интерпретацията на данните в QUERY_STRING, това е задачата на извикания програма).

Данните от полетата на формуляра, попълнени от потребителя - независимо от метода (POST или GET) са изпратени до сървъра - се кодират, както следва:

име на полето=поле_стойност&име на полето=поле_стойност...

Двойките име-стойност са разделени с амперсанд. Буквено-цифровите знаци и някои препинателни знаци, които нямат специално значение (тире, долна черта), се предават така, както са. Останалите знаци са кодирани като " %NM ", Където NM- двуцифрен шестнадесетичен код. Интервалът може да бъде предаден като "%20" или като знак "+". Знаците на кирилица също трябва да бъдат кодирани по посочения начин. Кодирането се извършва от браузъра при попълване на полетата на попълнения формуляр.

Например:

http://my.server.com/cgi-bin/dir/prog?birthday=11%2F05%2F73&name=John+Smith означава, че в полето рожден денпотребителят въвежда "11/05/73" и в полето име- Джон Смит.

Декодирането на данните от формуляра е работа на CGI програмата.

При изпращане на данни от формуляра, кодирани по горния начин с помощта на метода POST, клиентът трябва да зададе заглавката на заявката Content-Type, както следва:

Content-Type: application/x-www-form-urlencoded

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

Когато изпълнява CGI скрипт, уеб сървърът задава допълнителни променливи на средата:

Променлива Значение
AUTH_TYPE

Методът за удостоверяване, използван за удостоверяване на потребителя. Вижте също REMOTE_USER и REMOTE_IDENT.

CONTENT_LENGTH

Дължината на данните на заявката в байтове, предадени на CGI скрипта чрез стандартен вход.

ТИП СЪДЪРЖАНИЕ

Типът MIME на данните на заявката.

DOCUMENT_ROOT

Основната директория на дървото на документите на уеб сървъра (дефинирана от директивата DocumentRoot).

GATEWAY_INTERFACE

CGI версията за използване.

HTTP_ACCEPT

Списък с MIME типове данни, които клиентът може да приеме.

HTTP_FROM

Имейл адресът на потребителя, който е направил заявката (много браузъри не предават тази информация).

HTTP_REFERER
HTTP_USER_AGENT

Клиентски браузър.

PATH_INFO PATH_INFO (ако има) - вижте по-горе " "
PATH_TRANSLATED

PATH_INFO се преобразува в пълен път във файловата система на сървъра (PATH_INFO е добавен към DOCUMENT_ROOT).

QUERY_STRING

Данни за заявка, предадени като част от URL адреса след въпросителния знак – вижте „ “ по-горе.

REMOTE_ADDR

клиентски IP адрес.

REMOTE_HOST DNS името на клиента.
REMOTE_USER Удостоверено потребителско име.
REQUEST_METHOD

Метод на заявка (GET, POST, HEAD и др.).

SCRIPT_NAME Виртуалният път (напр. /cgi-bin/program.pl) до изпълнимия CGI скрипт.
ИМЕ НА СЪРВЪРА DNS името на сървъра или, ако името не може да бъде определено, неговия IP адрес.
SERVER_PORT

Номер на порт на сървъра.

SERVER_PROTOCOL Името и версията на протокола, през който е направена заявката (например HTTP/1.1).
СЪРВЪРЕН_СОФТУЕР

Типът и номерът на версията на софтуера на уеб сървъра.

Apache идва със стандартен тестов скрипт, test-cgi, който показва стойностите на променливите на CGI средата.

Бисквитки и други методи за запазване на състоянието

Основният проблем при писането на интерактивни CGI скриптове, т.е. скриптове, чиито последователни извиквания от един и същи потребител са логически свързани един с друг, е проблем с постоянството на състоянието. Факт е, че HTTP протоколът разглежда всички входящи заявки към сървъра като независими една от друга. Съответно, след обработка на всяка нова заявка, CGI скриптът напълно прекратява работата си и за обработка на следващата заявка, независимо дали принадлежи към същата логическа потребителска сесия или не, скриптът започва от нулата без никаква информация за историята.

Примери за ситуации, при които се изисква запазване на състояние, са: последователен процес на регистрация, когато регистрантът трябва да попълни няколко формуляра, като следващият формуляр зависи от резултата от попълването на предишния; онлайн пазаруване, когато потребителят събира покупки в кошницата, докато се движи в сайта; тестове и викторини, когато потребителят последователно отговаря на въпроси.

Има няколко метода за запазване на състоянието:

  1. бисквитки - запазване на компютъра на клиента,
  2. скрити полета - съхраняват се във формуляра, изпратен до клиента,
  3. запазване във файл от произволен формат на сървъра,
  4. запазване в паралелно работеща база данни.

Последните два метода прилагат постоянство на състоянието от страната на сървъра.

База данни

Всяка от наличните СУБД може да действа като паралелна база данни, за достъп до която езикът за програмиране на скриптове има интерфейс (Perl има библиотеки, които осигуряват взаимодействие с всички общи СУБД).

Има и решение под формата на демон, който работи паралелно с http сървъра и съхранява необходимата информация в своята RAM под формата променлива=значение. За да запише или извлече данни, скриптът се свързва с демона на предварително определен TCP или UDP порт, идентифицира се и използва набор от прости команди като "запазване име=стойност“ и „екстракт име" (се завръща стойност).

Интересното е, че въпреки сложността на изпълнението, подобно решение (или използването на СУБД с възможност за достъп през мрежата) ви позволява да споделяте данни между скриптове, изпълнявани на различни сървъри (ако се използва някакъв вид сложна разпределена интерактивна уеб система внедрен), като същевременно запазва данни от страна на потребителя.

Файл

Основният недостатък на съхраняването на данни във файл, освен използването на дисково пространство и разходите за файлови операции, е самата операция за запис на диск. Записването на диск може да бъде източник на сериозни проблеми със сигурността, тъй като работата на CGI скрипт всъщност се контролира от външни потребители, които може да имат злонамерени намерения. Изпращайки някакви специални данни към небрежен скрипт, можете да предизвикате сериозен срив в сървъра. Ако скриптът има разрешение за запис на диск, последствията могат да бъдат много по-сериозни, така че обикновено CGI скриптовете, като самия уеб сървър, се изпълняват с минимални привилегии от името на никой потребител без разрешение за запис на диск.

Устойчивост на състоянието от страна на потребителя

Съхраняването на данни за състоянието от страна на потребителя (бисквитки и, технически, скрити полета) е значителен недостатък: потребителят има пълен достъп до съхранените данни и може да ги промени неупълномощено (например да прочете правилния отговор на теста или да промени потребителския идентификатор) . Предимството е простото изпълнение.

Бисквитки

Бисквитките са данни за преглед Име=значение, които, когато са получени от сървъра, се съхраняват от браузъра на диска на потребителя, за да бъдат върнати на сървъра при последващи заявки към този или друг URL адрес. Тъй като данните се съхраняват на диск, те могат да се използват след рестартиране на браузъра.

Сървърът изпраща бисквитката чрез специално поле за заглавка на HTTP отговор "Set-Cookie". Браузърът връща бисквитката и чрез специално поле в заглавката на HTTP заявката – „Бисквитка“. От страна на сървъра бисквитката обикновено се формира от скрипт, който просто извежда подходящата заглавка към STDOUT. Прехвърлянето на данни, получени чрез бисквитки от браузъра към скрипта, се извършва от сървъра чрез настройка на променливата на средата HTTP_COOKIE, която е налична в скрипта и съдържа двойки Име=значение, които браузърът предава в полето „Бисквитка“ в заглавката на своята заявка.

Формат на полето Set-Cookie (HTTP отговор)

Задайте бисквитки: Име=значение; Максимална възраст= секунди; Коментар= текстов_коментар; Път = URI_или_част_URI; Домейн= сървърен_домейн; сигурен; Версия=1

Всички елементи освен Име=значениеи Версия не са задължителни. Един хедър на отговор на сървъра може да съдържа множество полета Set-Cookie.

Име=значениеинформация, предназначена да бъде съхранена от страна на клиента и впоследствие върната на сървъра; нито в име, нито в значениене може да съдържа интервали, раздели или точка и запетая; ако е необходимо, тези знаци трябва да бъдат кодирани в съответствие с общите правила за кодиране на URL адреси.

Максимална възраст= секундизадава дата на изтичане на данните (в секунди от момента на получаване на бисквитката); по подразбиране - до края на този процес на браузъра.

Коментар= текстов_коментаркоментар на сървъра относно предназначението на бисквитката; предполага се, че потребителят може да откаже да работи с тази бисквитка, ако коментарът не му харесва.

Домейн= сървърен_домейндомейна, за който тази бисквитка е валидна (браузърът трябва да върне бисквитка при достъп до всички сървъри в този домейн, като вземе предвид параметъра Path [виж по-долу]); домейнът трябва да започва с точка; този сървър трябва да е в този домейн. Ако параметърът Domain не е зададен, върнете бисквитката само на този сървър.

Път = URI_или_част_URIпът от корена на дървото на документа на сървъра (URI); браузърът трябва да върне бисквитка при достъп до този URI и всички URI, започващи с този; по подразбиране URI, който е генерирал бисквитката при поискване, минус името на файла.

Пример: при достъп до "http://s.vvsu.ru/a/b/c", сървърът върна отговор с набор от заглавни полета:

SetCookie: X=5; Версия=1 Това означава, че бисквитката трябва да бъде върната от браузъра при достъп до всички URL адреси като „http://s.vvsu.ru/a/b/ някакво име на файл".
Ако SetCookie в отговора на сървъра изглежда така: SetCookie: X=5; Домейн=.vvsu.ru; Път=/a/; Версия=1, тогава браузърът трябва да прикачи тази бисквитка към всички заявки за URL адреси във формата: "http:// име_без_точка.vvsu.ru/a/b/ някакъв_път_или_никой".

Secure, ако този параметър е налице, тогава браузърът трябва да върне бисквитката на сървъра само през защитен комуникационен канал; стандартът не посочва конкретен механизъм за защита на данните при транзит, но се предполага, че това е SSL.

Формат на полето за бисквитка (HTTP заявка)

Бисквитки: Име=значение; Път = URI_или_част_URI; Домейн= сървърен_домейн; Версия=1

Параметрите Path и Domain се включват само ако са зададени в заглавката Set-Cookie. Ако няколко бисквитки отговарят на параметъра Path, те се посочват в една и съща заглавка на бисквитка една след друга (разделени с точка и запетая) в следния ред: бисквитките с по-дългия параметър Path се предават първи. Редът, в който параметрите на пътя са равни, не е дефиниран.

Скрити полета

Във формуляр се създава скрито поле с помощта на таг
име1стойност= стойност1>

Когато браузърът получи документ с тази форма, съдържанието на полетата от тип "скрити" не се показва и потребителят не знае за тяхното съществуване (освен ако не погледне в HTML текста на изпратения документ). След като потребителят изпрати формуляра до сървъра, " име1=стойност1" се прикачват към данните на формуляра, които ще бъдат обработени от новостартиралия скрипт. По този начин скриптът може да получи данни за историята на работата си с потребителя. Например, когато пазарувате онлайн, скритите полета могат да съдържат списък с продукти, избрани за покупка в други отдели, които потребителят вече е посетил в тази сесия.

Недостатъкът на този метод (освен споменатата по-горе възможност за достъп и промяна на данни) е, че данните се съхраняват само по време на една сесия на браузъра. Ако браузърът се рестартира, всички данни ще бъдат загубени и процесът на взаимодействие със скрипта ще започне от нулата.

Страната на сървъра включва

SSI е механизъм от страна на сървъра за анализиране на HTML документи, за да ги намерите в документа и да изпълните директиви, които добавят допълнителна информация към документа.

Всички директиви се вмъкват в HTML тагове за коментари, което позволява на клиента, ако сървърът не поддържа SSI, да игнорира тези директиви. Директивите имат следния формат:

Следва списък на основните SSI директиви и техните параметри.

ехоЗаменя в документа стойността на променлива на средата, посочена като параметър (вижте също списъка с CGI променливи) или специална SSI променлива (вижте):

Пристигнахте на сървъра, намиращ се на...

включватВмъква текста на друг файл в документа. Настроики: файл- показва пътя до вмъкнатия файл спрямо местоположението на този документ; виртуален- указва виртуалния път (както би изглеждал в URL) до файла, който ще бъде вмъкнат.

Тази директива е много удобна за създаване на стандартни горни и долни колонтитули за уеб страници.

fsizeВмъква размера на файла, посочен в параметъра (пътят до файла е виртуален):

размер на файла archive.zip -байтове.

флаш модВмъква в документа датата и часа на последната модификация на файла, посочен в параметъра (пътят до файла е виртуален):

Дата на последна промяна:байтове. Изходният формат за дата и час може да бъде зададен с параметъра timefmtдирективи конфиг.

изпИзпълнява външната програма, зададена от параметъра, и вмъква резултата от тази програма в документа. Настроики: cmd- изпълнимата програма е някакво обикновено приложение; cgi- програмата, която се изпълнява е CGI скрипт

Посетих тази страницаведнъж. Първият пример използва заместване на променлива на средата (вижте CGI променливи).

конфигПроменя различни аспекти на това как работи SSI. Настроики:

  • errmsg - съобщение за грешка, издавано, когато директивата не може да бъде изпълнена:
  • sizefmt - задава изходния формат на размера на файла (заместен от директивата fsize; стойности: байтове- показва в байтове; съкр- Закръглява до най-близкото цяло число килобайта.размер на файла archive.zip - приблизителнобайтове.
  • timefmt - задава изходния формат за дата и час, вижте .

SSI специални променливи

Следват SSI променливите, които могат да се използват в директивата ехов допълнение към CGI променливите.

DOCUMENT_NAME Името на този документ. Например:

Вие четете файл, наречен:

DOCUMENT_URL Виртуалният път до дадения документ. Например:

QUERY_STRING_UNESCAPED Декодирани данни от QUERY_STRING (вижте " "), като всички метасимволи на обвивката са екранирани с обратна наклонена черта (\).

DATE_LOCAL Текущата дата и час в местно време. Например:

Сега

DATE_GMT Текущата GMT дата и час.

ПОСЛЕДНО МОДИФИЦИРАН
Датата и часът на последната промяна на този документ. Например:

Този файл беше последно модифициран

Упражнение

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

Правила на играта

Сървърът отгатва дума от речника и я показва на потребителя в маскиран вид (буквите се заменят със звездички). Потребителят има определен брой опити; по време на всеки опит той може да познае една буква. Ако потребителят познае правилно буква или назове буква, която вече е използвал, опитът не се брои. В противен случай броят на опитите се намалява с един.

Ако потребителят познае буквата правилно, сървърът демаскира всички срещания на познатата буква в дисплея на думата. И в двата случая сървърът добавя предложената от потребителя буква към списъка с използвани букви, който се показва при всеки опит за удобство на потребителя. Показва се и броят на оставащите опити.

Играта приключва, ако броят на опитите стане равен на нула (потребителят губи) или ако всички букви в думата са познати (потребителят печели).

Ако потребителят при някакъв опит предложи повече от една буква, се счита, че потребителят се опитва да отгатне цялата дума. При правилно предположение потребителят печели, в противен случай губи, независимо от броя на оставащите опити.

Внедряване

Думите се избират на случаен принцип от даден текстов файл.

Съотношението между броя на опитите и дължината на думата се определя разумно от програмиста. Например броят на опитите е дадена функция на дължината на думата; броят на опитите е строго обвързан с всяка дума в речника; дължината на думите в речника и броят на опитите са постоянни; при определяне на броя на опитите се използва декларираното от потребителя ниво на трудност.

При първия достъп до скрипта се показва начален екран и форма за регистрация на изгледа.

Препоръчваме за четене

Връх