» √лавна€
eXcode.ru » —татьи » Web » ¬ведение в CGI
» Ќовости
» ќпросы
» ‘айлы
» ∆урнал



ѕользователей: 0
√остей: 3





ќбщие сведени€




√лавным достижением технологии World Wide Web по праву считают унификацию интерфейса пользовател€ при работе с информационными ресурсами Internet. ”ниверсальный мультипротокольный браузер, будь то Netscape Navigator или Internet Explorer, позвол€ет путем выбора гипертекстовой ссылки получить доступ к FTP-архиву, архиву Gopher, новост€м из конференции Usenet или отправить письмо по электронной почте. ƒо эпохи Web дл€ каждого из этих ресурсов пришлось бы запускать отдельную программу.

ќднако, кроме текстов, которые можно читать, или картинок, которые можно просматривать, существует множество ресурсов, требующих ввода информации в процессе работы с ними.   таким ресурсам, в частности, относ€тс€ информационно-поисковые системы, где пользователь должен вводить список ключевых слов или рел€ционные (да и любые другие) базы данных, формулиру€ запрос к отношени€м. Ѕолее того, дл€ любой страницы, котора€ требует аутентификации пользовател€, необходимо вводить идентификатор и пароль.

Ќа сегодн€ уже сложилс€ определенный стиль графического интерфейса приложени€. —уществует достаточно большое число прикладных пакетов, которые позвол€ют "прилаживать" такой интерфейс к программе. ќднако на такое "прилаживание" или пр€мое программирование уходит до 80% трудозатрат программистов. ѕри этом в большинстве случаев все сводитс€ к разбору введенных параметров с последующей выдачей результатов в виде отформатированного текста.

‘орматирование страниц в Web-технологии достигаетс€ за счет HTML-разметки. ќстаетс€ только создать инструмент ввода данных через рабочее окно браузера или через HTML-документ. ¬ 1991 году эта проблема была решена специалистами NCSA. ќни разработали и реализовали две взаимосв€занные спецификации: HTML-формы и Common Gateway Interface.

‘ормы произвели насто€щую революцию в HTML-разметке: авторы документов получили возможность создавать сложные шаблоны ввода информации в рамках HTML-страницы, пользователи Ч эти шаблоны заполн€ть. ѕри этом авторы форм опирались на свойства HTTP-протокола и универсальный локатор ресурсов URL с учетом того, что при HTTP-обмене можно использовать различные методы доступа к ресурсам. Ёто позволило сделать механизм интерпретации форм расшир€емым и легко приспосабливаемым к дальнейшему развитию Web-технологии. “аким образом кроме HTTP можно было использовать и другие протоколы, которые поддерживали универсальный браузер, например mailto.

Common Gateway Interface Ч это спецификаци€ обмена данными между прикладной программой, выполн€емой по запросу пользовател€, и HTTP-сервером, который данную программу запускает. ƒо по€влени€ CGI новые функции нужно было внедр€ть непосредственно в сервер. CGI позволила разрабатывать программы независимо от сервера, а механизм передачи им управлени€ и данных был унаследован от программировани€ в среде командной строки. ѕоследнее резко сократило трудозатраты на разработку приложений, так как не надо было программировать интерфейс пользовател€: его функции выполн€ли формы.

—лушатели данного учебного курса научатс€ создавать документы с формами, программировать на стороне сервера с использованием CGI и обрабатывать данные, передаваемые браузером серверу. ¬ рамках курса будут подробно рассмотрены различные способы такой обработки, а также основные приемы построени€ интерактивных страниц Web-узла.

¬ведение

ќбмен данными в Web-технологии подраздел€етс€ в соответствии с типами методов доступа протокола HTTP и видами запросов в спецификации CGI.

ќсновных методов доступа два: GET и POST. ѕомимо них часто используютс€ HEAD и PUT.

¬иды запросов CGI раздел€ют на два основных MIME-типа: application/x-www-form-urlencoded и multipart/form-data. ¬торой тип запроса специально создан дл€ передачи больших внешних файлов.

Ёту классификацию можно представить в виде таблицы:

ћетод  лиент --> —ервер лиент <-- —ервер
GETѕо умолчанию“олько HTTP-заголовокHTTP-заголовок и страница, как тело HTTP-сообщени€
isindex“олько HTTP-заголовок (список ключевых слов включен в URL. —лова разделены символом "+".  одировани€ кириллицы не производитс€)HTTP-заголовок и страница, как тело HTTP-сообщени€
form-urlencoded“олько HTTP-заголовок (данные из формы включены в URL страницы. ѕроизводитс€ кодирование специальных символов и кириллицы) HTTP-сообщени€HTTP-заголовок и страница, как тело HTTP-сообщени€
POSTform-urlencoded“олько HTTP-заголовок (данные из формы включены в URL страницы. ѕроизводитс€ кодирование специальных символов и кириллицы) HTTP-сообщени€HTTP-заголовок и страница, как тело HTTP-сообщени€
form-dataHTTP-заголовок и составное тело HTTP-сообщени€. ѕерва€ часть тела Ч данные из формы, дл€ которых производитс€ кодирование, втора€ часть тела Ч присоединенный файл как он естьHTTP-заголовок и страница, как тело HTTP-сообщени€
PUTHTTP-заголовок и документ, как тело HTTP-сообщени€HTTP-заголовок. ¬ качестве тела можно передать комментарий к коду возврата
HEADHTTP-заголовокHTTP-заголовок

ѕри реализации нестандартных методов доступа, например, DELETE, могут быть несколько иные комбинации содержани€ откликов и ответов.

ћы рассмотрим все эти типы обменов.

HyperText Transfer Protocol

¬се данные в рамках Web-технологии передаютс€ по протоколу HTT–. »сключение составл€ет обмен с использованием программировани€ на Java или обмен из Plugin-приложений. ”читыва€ реальный объем трафика, который передаетс€ в рамках Web-обмена по HTTP, мы будем рассматривать только этот протокол. ѕри этом мы остановимс€ на таких вопросах, как:

  • обща€ структура сообщений;
  • методы доступа;
  • оптимизаци€ обменов.

ќбща€ структура сообщений

HTTP Ч это протокол прикладного уровн€. ќн ориентирован на модель обмена "клиент-сервер".  лиент и сервер обмениваютс€ фрагментами данных, которые называютс€ HTTP-сообщени€ми. —ообщени€, отправл€емые клиентом серверу, называют запросами, а сообщени€, отправл€емые сервером клиенту Ч откликами. —ообщение может состо€ть из двух частей: заголовка и тела. “ело от заголовка отдел€етс€ пустой строкой.

«аголовок содержит служебную информацию, необходимую дл€ обработки тела сообщени€ или управлени€ обменом. «аголовок состоит из директив заголовка, которые обычно записываютс€ кажда€ на новой строке.

“ело сообщени€ не €вл€етс€ об€зательным, в отличие от заголовка сообщени€. ќно может содержать текст, графику, аудио- или видеоинформацию.

Ќиже приведен HTTP-запрос:

GET / HTTP/1.0
Accept: image/jpeg
пуста€ строка 

» отклик:

HTTP/1.0 200 OK
Date: Fri, 24 Jul 1998 21:30:51 GMT
Server: Apache/1.2.5
Content-type: text/html
Content-length: 21345
пуста€ строка
<HTML>
...
</HTML> 

“екст "пуста€ строка" Ч это просто обозначение наличи€ пустой строки, котора€ отдел€ет заголовок HTTP-сообщени€ от его тела.

—ервер, принима€ запрос от клиента, часть информации заголовка HTTP-запроса преобразует в переменные окружени€, которые доступны дл€ анализа CGI-скриптом. ≈сли запрос имеет тело, то оно становитс€ доступным скрипту через поток стандартного ввода.

ћетоды доступа

—амой главной директивой HTTP-запроса €вл€етс€ метод доступа. ќн указываетс€ первым словом в первой строке запроса. ¬ нашем примере это GET. –азличают четыре основных метода доступа:

  • GET;
  • HEAD;
  • POST;
  • PUT.

 роме этих четырех методов существует еще около п€ти дополнительных методов доступа, но они используютс€ редко.

ћетод GET

ћетод GET примен€етс€ клиентом при запросе к серверу по умолчанию. ¬ этом случае клиент сообщает адрес ресурса (URL), который он хочет получить, версию протокола HTTP, поддерживаемые им MIME-типы документов, версию и название клиентского программного обеспечени€. ¬се эти параметры указываютс€ в заголовке HTTP-запроса. “ело в запросе не передаетс€.

¬ ответ сервер сообщает версию HTTP-протокола, код возврата, тип содержани€ тела сообщени€, размер тела сообщени€ и р€д других необ€зательных директив HTTP-заголовка. —ам ресурс, обычно HTML-страница, передаетс€ в теле отклика.

ћетод HEAD

ћетод HEAD используетс€ дл€ уменьшени€ обменов при работе по протоколу HTTP. ќн аналогичен методу GET за исключением того, что в отклике тело сообщени€ не передаетс€. ƒанный метод используетс€ дл€ проверки времени последней модификации ресурса и срока годности кэшированных ресурсов, а также при использовании программ сканировани€ ресурсов World Wide Web. ќдним словом, метод HEAD предназначен дл€ уменьшени€ объема передаваемой по сети информации в рамках HTTP-обмена.

ћетод POST

ћетод POST Ч это альтернатива методу GET. ѕри обмене данными по методу POST в запросе клиента присутствует тело HTTP-сообщени€. Ёто тело может формироватьс€ из данных, которые ввод€тс€ в HTML-форме, или из присоединенного внешнего файла. ¬ отклике, как правило, присутствует и заголовок, и тело HTTP-сообщени€. „тобы инициировать обмен по методу POST, в атрибуте METHOD контейнера FORM следует указать значение "post".

ћетод PUT

ћетод PUT используетс€ дл€ публикации HTML-страниц в каталоге HTTP-сервера. ѕри передаче данных от клиента к серверу в сообщении присутствует и заголовок сообщени€, в котором указан URL данного ресурса, и тело Ч содержание размещаемого ресурса.

¬ отклике тело ресурса обычно не передаетс€, а в заголовке сообщени€ указываетс€ код возврата, который определ€ет успешное или неуспешное размещение ресурса.

ќптимизаци€ обменов

ѕротокол HTTP изначально не был ориентирован на посто€нное соединение. Ёто означает, что как только сервер прин€л запрос от клиента и ответил на него, соединение между клиентом и сервером разрываетс€. ƒл€ нового обмена данными нужно устанавливать новое соединение. “акой подход имеет как достоинства, так и недостатки.

  достоинствам относитс€ возможность одновременного обслуживани€ большого количества коротких запросов. ƒаже на попул€рных серверах число открытых соединений может не превышать сотни при обслуживании пор€дка миллиона запросов в сутки. ѕри этом один клиент может открыть до 40 соединений одновременно, и с точки зрени€ сервера все они равноправны. ѕри высокоскоростных лини€х св€зи это позвол€ет добитьс€ малого времени отклика на запрос клиента дл€ всей страницы (текст, графика и т.п.).

  недостаткам такой схемы обмена относ€тс€: необходимость каждый раз устанавливать соединение и невозможность поддерживать сессию работы с информационным ресурсом. ѕри инициализации соединени€ по транспортному протоколу TCP и разрыве этого соединени€ требуетс€ передать довольно большой объем служебной информации. ќтсутствие поддержки сессий в HTTP затрудн€ет работу с такими ресурсами как базы данных или ресурсы, требующие аутентификации.

ƒл€ оптимизации числа открытых TCP-соединений в HTTP-протоколе версий 1.0 и 1.1 предусмотрен режим keep-alive. ¬ этом режиме соединение инициализируетс€ только один раз, и по нему последовательно можно реализовать несколько HTTP-обменов.

ƒл€ обеспечени€ поддержки сессий к директивам HTTP-заголовка были добавлены "ключики" (cookies). ќни позвол€ют сымитировать поддержку соединени€ при работе по протоколу HTTP.

¬иды интерфейса пользовател€ в Web-технологии

—траницы World Wide Web по функциональному назначению можно разделить на несколько типов: информационные страницы, навигационные страницы, страницы обмена данными. ¬о многих случа€х эти функции можно объединить в одной странице.

»нформационные страницы Ч это последовательное изложение информации с возможностью гипертекстовых контекстных переходов. ѕользователь просматривает их последовательно. √ипертекстовые ссылки обычно примен€ют дл€ создани€ сносок, примечаний или отсылок к спискам литературы и других ассоциативных материалов. “ипичными примерами таких страниц €вл€ютс€ подсказки, руководства, описани€ компаний, исторические справки и т.п.

Ќавигационные страницы Ч это совокупность гипертекстовых ссылок, котора€ позвол€ет ориентироватьс€ в материалах Web-узла. “ипичный пример такой страницы Ч Home page (домашн€€ страница).  ак правило, на ней нет пространных текстовых описаний и иллюстраций, она состоит из совокупности различных меню. Ёти меню можно реализовать через списки, таблицы ссылок или imagemap.

—траницы обмена данными позвол€ют передать на сервер некоторый объем информации, отличный от стандартного адреса (URL) ресурса. ѕри просмотре и навигации пользователь просто выбирает гипертекстовые ссылки, по которым загружаютс€ новые страницы. ѕри обмене данными на сервер передаетс€ не только адрес ресурса, но и дополнительна€ информаци€, которую вводит пользователь.

¬ зависимости от функционального назначени€ страниц измен€етс€ вид интерфейса ресурса, с которым пользователь имеет дело. ¬ первых двух случа€х достаточно манипул€тором "мышь" выбрать гипертекстовую ссылку, как тут же загрузитс€ нова€ страница. ¬ случае страниц обмена данными следует заполнить пол€ HTML-форм и отправить данные на сервер.

ѕри этом формы обеспечивают практически все необходимые виды полей ввода и меню. ≈динственное, чего не позвол€ют реализовать HTML-формы, так это вложенные меню. ‘ормы можно примен€ть не только при обмене данными. ƒостаточно развитые механизмы обработки форм присутствуют в JavaScript.

—пецификаци€ Common Gateway Interface

ƒанна€ спецификаци€ определ€ет стандартный способ обмена данными между прикладной программой и HTTP-сервером. —пецификаци€ была предложена дл€ сервера NCSA и €вл€етс€ основным средством расширени€ возможностей обработки запросов клиентов HTTP-сервером.

¬ CGI имеет смысл выделить следующие основные моменты:

  • пон€тие CGI-скрипта;
  • типы запросов;
  • механизмы приема данных скриптом;
  • механизм генерации отклика скриптом.

ќсновное назначение CGI Ч обработка данных из HTML-форм. ¬ насто€щее врем€ область применени€ CGI гораздо шире.

ѕон€тие CGI-скрипта

CGI-скриптом называют программу, написанную на любом €зыке программировани€ или командном €зыке, котора€ осуществл€ет обмен данными с HTTP-сервером в соответствии со спецификацией Common Gateway Interface.

Ќаиболее попул€рными €зыками дл€ разработки скриптов €вл€ютс€ Perl и —.

“ипы запросов

–азличают два типа запросов к CGI-скриптам: по методу GET и по методу POST. ¬ свою очередь, запросы по методу GET подраздел€ютс€ на запросы по типам кодировани€: isindex и form-urlencoded, а запросы по методу POST Ч multipart/form-data и form-urlencoded.

¬ запросах по методу GET данные от клиента передаютс€ скрипту в переменной окружени€ QUERY_STRING. ¬ запросах по методу POST данные от скрипта передаютс€ в потоке стандартного ввода скрипта. ѕри передаче через поток стандартного ввода в переменной окружени€ CONTENT_LENGTH указываетс€ число передаваемых символов.

«апрос типа ISINDEX Ч это запрос вида:

http://intuit.ru/somthig-cgi/
cgi-script?слово1+слово2+слово3 

√лавным здесь €вл€етс€ список слов после символа "?". —лова перечисл€ютс€ через символ "+" и дл€ кириллицы в шестнадцатеричные последовательности не кодируютс€. ѕоследовательность слов после символа "?" будет размещена в переменной окружени€ QUERY_STRING.

«апрос типа form-urlencoded Ч это запрос вида:

http://intuit.ru/somthig-cgi/
cgi-script?field=word1&field2=word2 

ƒанные формы записываютс€ в виде пар "им€_пол€-значение", которые разделены символом "&".

ѕриведенный пример Ч это обращение к скрипту по методу GET. ¬се символы после "?" попадут в переменную окружени€ QUERY_STRING. ѕри этом если в значени€х полей по€вл€етс€ кириллица или специальные символы, то они замен€ютс€ шестнадцатеричным кодом символа, который следует за символом "%".

ѕри обращении к скрипту по методу POST данные после символа "?" не будут размещатьс€ в QUERY_STRING, а будут направлены в поток стандартного ввода скрипта. ¬ этом случае количество символов в потоке стандартного ввода скрипта будет указано в переменной окружени€ CONTENT_LENGTH.

ѕри запросе типа multipart/form-data примен€етс€ составное тело HTTP-сообщени€, которое представл€ет собой данные, введенные в форме, и данные присоединенного внешнего файла. Ёто тело помещаетс€ в поток стандартного ввода скрипта. ѕри этом к данным формы примен€етс€ кодирование как в form-urlencoded, а данные внешнего файла передаютс€ как есть.

ћеханизмы приема данных скриптом

—крипт может прин€ть данные от сервера трем€ способами:

  • через переменные окружени€;
  • через аргументы командной строки;
  • через поток стандартного ввода.

ѕри описании этих механизмов будем считать, что речь идет об обмене данными с сервером Apache дл€ платформы Unix.

ѕеременные окружени€

ѕри вызове скрипта сервер выполн€ет системные вызовы fork и exec. ѕри этом он создает среду выполнени€ скрипта, определ€€ ее переменные. ¬ спецификации CGI определены 22 переменные окружени€. ѕри обращении к скрипту разными методами и из различных контекстов реальные значени€ принимают разные совокупности этих переменных. Ќапример, при обращении по методу POST переменна€ QUERY_STRING не имеет значени€, а по методу GET Ч имеет. ƒругой пример Ч переменна€ окружени€ HTTP_REFERER. ѕри переходе по гипертекстовой ссылке она определена, а если перейти по значению пол€ location или через JavaScript-программу, то HTTP_REFERER определена не будет.

ѕолучить доступ к переменным окружени€ можно в зависимости от €зыка программировани€ следующим образом:

#Perl
$a = $ENV{CONTENT_LENGTH};
...
// C
a = getenv("CONTENT_LENGTH"); 

¬ случае доступа к скрипту по методу GET данные, которые передаютс€ скрипту, размещаютс€ в переменной окружени€ QUERY_STRING.

јргументы командной строки

 ак ни странно звучит, но у CGI-скрипта может быть такой элемент операционного окружени€ как командна€ строка. Ёто не означает, что скрипт реально можно вызвать из командной строки через сервер. “ем не менее получить доступ к содержанию командной строки скрипта можно с помощью тех же функций, что и при вызове его из-под интерактивной оболочки:

#Perl
foreach $a (@ARGV)
{
print $a,"
";
}

// C
void main(argc,argv)
int argc;
char *argv[];
{
int i;
for(i=0;i<argc;i++)
{
printf("%s
",argv[i]);
}
} 

¬ обоих примерах показана распечатка аргументов командной строки дл€ программ на Perl и C соответственно.

јргументы командной строки по€вл€ютс€ только в запросах типа ISINDEX.

ѕоток стандартного ввода

¬вод данных в скрипт через поток стандартного ввода осуществл€етс€ только при использовании метода доступа к ресурсу (скрипту) POST. ѕри этом в переменную окружени€ CONTENT_LENGTH помещаетс€ число символов, которое необходимо считать из потока стандартного ввода скрипта, а в переменную окружени€ CONTENT_TYPE помещаетс€ тип кодировани€ данных, которые считываютс€ из потока стандартного ввода.

ѕри посимвольном считывании в C можно применить, например, такой фрагмент кода:

int n;
char *buf;
n= atoi(getenv("CONTENT_LENGTH"));
buf = (char *) malloc(n+1);
memset(buf,′00′,n+1);
for(i=0;i<n;i++)
{
buf[i]=getchar();
}

free(buf); 

¬ данном фрагменте применено динамическое размещение пам€ти в скрипте, поэтому при выходе из него пам€ть следует освободить. ¬ообще говор€, пам€ть будет автоматически освобождена операционной системой после завершени€ скрипта. ќднако, если переносить скрипт на спецификацию FCGI (Fast CGI), что требует минимума переделок, из-за неаккуратной работы с пам€тью могут возникнуть проблемы.

ћеханизм генерации отклика скриптом

—уществует только один способ вернуть данные серверу и, соответственно, браузеру пользовател€ Ч писать в поток стандартного вывода (STDOUT). ѕри этом скрипт должен формировать HTTP-сообщение.

—начала вывод€тс€ директивы HTTP-заголовка. ¬ минимальном варианте это либо

Content-type: text/html, 

либо

Location: http://intuit.ru/ 

¬ первом случае определ€етс€ тип тела HTTP-сообщени€, а во втором осуществл€етс€ перенаправление запроса.

ѕосле заголовка генерируетс€ отклик в виде тела HTTP-сообщени€, которое должно быть отделено от заголовка пустой строкой:

#!/bin/sh
echo Content-type: text/plain
echo
echo Hello 

¬ данном случае используетс€ командный интерпретатор sh.

≈сли скрипт начинает формирование заголовка с директивы версии HTTP-протокола, то сервер не анализирует отклик и передает его как есть. ≈сли в заголовке, сгенерированном скриптом, эта директива отсутствует, то сервер считает, что заголовок неполный, и вставл€ет в него дополнительные директивы.

  началу статьи





ƒобавил: MadvEXƒата публикации: 2006-02-20 17:59:34
–ейтинг статьи:3.00 [√олосов 5] ол-во просмотров: 6686

 омментарии читателей

¬сего комментариев: 38

2018-08-02 04:48:30
Mediaanit
 аждому креативному человеку есть что продемонстрировать широкой аудитории. Ёто практические зан€ти€ по уходу за детьми, урок в€зани€ или €зыка, психологический тренинг, учебна€ консультаци€. ќнлайн трансл€ци€ интересного ролика привлечет аудиторию и позволит заработать солидный заработок.
«а что зрители заплат€т? «а допуск к оригинальной видеотрансл€ции, возможность спрашивать тренера и получать ответ. ѕользуютс€ посто€нным спросом профессиональные уроки с демонстрацией полезных навыков, обучающие курсы. ‘ормирование и показ ролика довер€ют специалистам Ц тогда успех гарантирован!
<a href=http://www.mediamost.net/organizovat-video-translyatsiyu/>как организовать онлайн трансл€цию через youtube</a>

2018-07-03 04:09:20
MarinaKib

<a href=https://liderpiara.biz/ref/10262>¬се еще думаешь как заработать? «аработай у себ€ ¬к на своих подписчиках</a>

2018-06-09 10:29:12
EllenaCob
–емонт квартир, офисов , производственных помещений. ¬се виды ремонтно-отделочных работ Ђпод ключї. ћал€рные работы http://www.plasterers-spb.ru . ”кладка плитки, линолеума, ламината. √ипсокартонные конструкции любой сложности. ”становка межкомнатных дверей. ѕодвесные и нат€жные потолки.  омплексна€ бригада опытных, ответственных мастеров.  ачественно, быстро, с гарантией.— перечнем оказываемых услуг можете ознакомитс€ на сайте нашей компании
http://www.plasterers-spb.ru - https://a.radikal.ru/a18/1803/c0/cca05a6ff9d8.jpg

2018-02-06 08:23:34
DinaTrons
—ахарный диабет - это бол€чка, при котором уровень глюкозы (сахара) в крови слишком большой. √люкоза в тело поступает из еды, которые вы едите. »нсулин - это гормон, который помогает сахару пробиватьс€ в клетки, чтобы дать им энергию. ѕри диабете 1 вида организм перестает вырабатывать гормон. ѕри сахарном диабете 2 вида, который €вл€етс€ более попул€рным заболеванием, тело нездорового слабо примен€ет инсулин. —о временем излишек сахара в крови возможно повредит зрение, почки и нервы. ‘изические упражнени€ и соблюдение индивидуального плана питани€ могут помочь вам регулировать сахарный диабет. ¬ы также должны регул€рно контролировать уровень сахара в крови и принимать лекарство, если это предписано доктором.
<a href=http://endocrin-patient.com/lekarstva-ot-diabeta/>http://endocrin-patient.com/lekarstva-ot-diabeta/</a>

2018-01-25 12:35:39
CraigVet
ѕриобрести можно на веб-сайте http://tedsjkpb.bestseller-super.ru

’отим предложить нашим покупател€м потр€сающее средство дл€ похудени€ Mangoosteen. — его помощью возможно сбросить около 15 килограмм за 14 суток.

–астение мангустин растет в “аиланде. ѕлоды этого дерева имеют замечательные свойства. ¬ баночке содержитс€ более 20 плодов данного замечательного дерева. ѕлоды с дерева гарцини€ помогают убрать лишнюю жировую ткань. ј также замечательно вли€ют на организм в целом. —пецифика производства препарата, и уникальна€ упаковка позвол€ют сберечь все удивительные свойства плодов.

√лавным компонентом сиропа ћангустина €вл€ютс€ фрукты с растени€ мангкут, в них имеетс€ огромное количество питательных элементов. Ѕлагодар€ компоненту ксантону, которое в громадных количествах имеетс€ в плодах, сильно замедл€ютс€ окислительные процессы в организме. ќкись дифениленкетона считаетс€ одним из самых мощных антиоксидантов. ¬ плоде дерева мангостан вдобавок есть разнообразные витамины и микроэлементы. ѕриобрести сироп ћансустина возможно на сайте http://tedsjkpb.bestseller-super.ru.


2018-01-22 23:34:41
WalterPem
јЋ ќ¬≈–»Ќ ј “»¬»–”≈“ –≈∆»ћ јЋ ќ√ќЋ№Ќќ√ќ ќ““ќ–∆≈Ќ»я
— ALCOVIRIN выпить ѕ–ќ—“ќ Ќ≈ ”ƒј—“—я!

Ёто первый биогенный растительный комплекс, способствующий выработке непереносимости алкогол€ при совместном приеме капель и спиртных напитков, вызыва€ тошноту и его полное отторжение организмом!

 роме того, он оказывает мощное оздоровительное действие, устран€€ алкогольную интоксикацию и способству€ восстановлению правильной работы органов и систем.

ќфициальный сайт: http://alcovirin.bxox.info

2018-01-22 11:51:10
CraigVet
ѕриобрести можно на веб-сайте http://tedsjkpb.bestseller-super.ru

–ады предложить вам удивительное средство дл€ снижени€ веса сироп ћангустина. — его помощью можно сжечь около 10 килограмм за 2 недели.

–астение мангостан растет в ћалайзии. ѕлоды данного растени€ обладают замечательными свойствами, которые были положены в основу средства ћангустина. ¬о флаконе содержитс€ более 20 плодов данного замечательного дерева. ѕлоды с растени€ мангостин помогают растопить лишнюю жировую ткань. “акже отлично вли€ют на человека в комплексе. “ехнологи€ производства средства, и специализированна€ упаковка позвол€ют сберечь все полезные свойства дерева.

√лавным действующим компонентом сиропа ћангустина €вл€ютс€ фрукты с дерева мангостин, в них содержитс€ большое число полезных микроэлементов. Ѕлагодар€ веществу ксантону, которое в огромных дозах содержатс€ в плоде, сильно замедл€ютс€ процессы окислени€ в теле.  сантон €вл€етс€ одним из наиболее сильных антиокислителей. ¬ плоде дерева гарцини€ вдобавок имеютс€ разнообразные группы витаминов и микроэлементы. ѕриобрести сироп Mangoosteen можно на веб-сайте http://tedsjkpb.bestseller-super.ru.


2018-01-07 10:55:24
ManyMody
¬ сети немало позновательных статей о беременности и роддомах, но они какие-то бестолковые. Ќе имеетс€ наименований перинатальных центров, адресов, рекомендаций реальных докторов. ј желательно бы посмотреть последнюю речь, актуальную в этом году Ц с новыми технологи€ми, ценами и новинками.
»деально, чтобы вдобавок и нужна€ инфа дл€ будущих и насто€щих мам. ¬се это обнаружила собственно тут. “очно, конкретно, с образцами из реалистичной жизни, рассказами специалистов. «ачастую загл€дываю на интернет-сайт, если малыш хворает.
<a href=http://mamatam.ru/kak-samostoyatelno-opredelit-pol-rebyonka-po-obnovleniyu-krovi>посчитать пол ребенка по обновлению крови</a>

2017-09-13 06:55:24
Robertbix
гостина€ –оза
http://bigwork.info/

----------

2017-07-03 17:13:32
Donaldgiz
 рем от псориаза "Anti Psori Nano" - псориаз можно вылечить!

Anti Psori Nanoї может использоватьс€
при любых видах и формах псориаза,
в том числе и т€желых!

 Ћ»Ќ»„≈— » ”—“јЌќ¬Ћ≈Ќќ, „“ќ ѕќћ»ћќ ѕ—ќ–»ј«ј ЂANTI PSORI NANOї
ѕќћќ√ј≈“ ѕ–» Ћ≈„≈Ќ»» “ј »’ «јЅќЋ≈¬јЌ»…  ќ∆»,  ј 

ƒерматофитоз
ќнихомикоз
 андидозна€ паронихи€
ћикозы кожи и ногтей, вызванные дерматофитами и/или дрожжами
–азноцветный лишай
‘олликулит
“рихофитии
 ожный лейшманиоз
—еборейный дерматит
√рибковый сепсис
Ёкзема
√ерпес
”грева€ сыпь

ј если ЂAnti Psori Nanoї помогает другим, значит, она поможет и вам!

–Т –љ–∞—З–∞–ї—М–љ–Њ–є —Б—В–∞–і–Є–Є –Ј–∞–±–Њ–ї–µ–≤–∞–љ–Є–µ –њ—А–Њ—П–≤–ї—П–µ—В—Б—П –Ї–∞–Ї –Ї—А–∞—Б–љ–Њ–≤–∞—В–Њ-—А–Њ–Ј–Њ–≤—Л–µ –њ—П—В–љ–∞, –Ї–Њ—В–Њ—А—Л–µ –Ј–∞—В–µ–Љ —А–∞—Б—В—Г—В –Є —Г–≤–µ–ї–Є—З–Є–≤–∞—О—В—Б—П –≤ —А–∞–Ј–Љ–µ—А–∞—Е. –Ш –њ—А–Є–≤—Л–Ї–∞–љ–Є—П –Ї –љ–µ–Љ—Г –љ–µ —А–∞–Ј–≤–Є–≤–∞–µ—В—Б—П, –Ї–∞–Ї —А–∞–љ—М—И–µ —Г –Љ–µ–љ—П –њ–Њ–ї—Г—З–Є–ї–Њ—Б—М. –Я–Њ–љ–Є–Љ–∞–љ–Є–µ —И–Є–Ј–Њ—Д—А–µ–љ–Є—З–µ—Б–Ї–Њ–є –њ–∞—А–∞–љ–Њ–є–Є –Ї–∞–Ї –њ—А–Њ—Ж–µ—Б—Б–∞ –њ–µ—А–µ—З–µ—А–Ї–Є–≤–∞–µ—В –њ–Њ–њ—Л—В–Ї—Г –ї–Њ–≥–Є—З–µ—Б–Ї–Њ–≥–Њ –Њ–±—К—П—Б–љ–µ–љ–Є—П –≤–Њ–Ј–љ–Є–Ї–љ–Њ–≤–µ–љ–Є—П –±—А–µ–і–∞ –Є –Љ–∞—Б–Ї–Є –і–ї—П –ї–Є—Ж–∞ –Љ–µ–і –µ–≥–Њ –≤–Њ–Ј–љ–Є–Ї–љ–Њ–≤–µ–љ–Є–µ –ї–Њ–≥–Є—З–µ—Б–Ї–Є –љ–µ –Њ–±—К—П—Б–љ–Є–Љ—Л–Љ –Є –ї–Є—И—М –Ї–∞—Г–Ј–∞–ї—М–љ–Њ –≤—Л–≤–Њ–і–Є–Љ—Л–Љ –Є–Ј —И–Є–Ј–Њ—Д—А–µ–љ–Є—З–µ—Б–Ї–Њ–≥–Њ –њ—А–Њ—Ж–µ—Б—Б–∞. –£–≥–Њ–ї—М–љ–∞—П —Б–Љ–Њ–ї–∞ –Љ–Њ–ґ–µ—В —Б–і–µ–ї–∞—В—М –Ї–Њ–ґ—Г –±–Њ–ї–µ–µ —З—Г–≤—Б—В–≤–Є—В–µ–ї—М–љ–Њ–є –Ї –£–§ —Б–≤–µ—В—Г, –њ–Њ—Н—В–Њ–Љ—Г —В—А–µ–±—Г–µ—В—Б—П —З—А–µ–Ј–≤—Л—З–∞–є–љ–∞—П –Њ—Б—В–Њ—А–Њ–ґ–љ–Њ—Б—В—М –њ—А–Є —А–µ–Ї–Њ–Љ–µ–љ–і–∞—Ж–Є–Є —Г–≥–Њ–ї—М–љ–Њ–є —Б–Љ–Њ–ї—Л –≤ –Ї–Њ–Љ–±–Є–љ–∞—Ж–Є–Є —Б –£–§ —В–µ—А–∞–њ–Є–µ–є (–Є–ї–Є —Б —Б–Њ–ї–љ–µ—З–љ—Л–Љ –Њ–±–ї—Г—З–µ–љ–Є–µ–Љ), —З—В–Њ–±—Л –Є–Ј–±–µ–ґ–∞—В—М –≤–Њ–Ј–љ–Є–Ї–љ–Њ–≤–µ–љ–Є—П —Б–µ—А—М–µ–Ј–љ—Л—Е –Њ–ґ–Њ–≥–Њ–≤. –Я–Њ—Н—В–Њ–Љ—Г –њ–Њ–і–±–Њ—А –і–µ—А–Љ–∞—В–Њ–ї–Њ–≥–Њ–Љ –љ–∞–Є–±–Њ–ї–µ–µ –њ–Њ–і—Е–Њ–і—П—Й–µ–≥–Њ –Љ–µ—В–Њ–і–∞ –ї–µ—З–µ–љ–Є—П –њ—Б–Њ—А–Є–∞–Ј–∞ –і–ї—П –Ї–Њ–љ–Ї—А–µ—В–љ–Њ–≥–Њ –±–Њ–ї—М–љ–Њ–≥–Њ, –Њ–±—Л—З–љ–Њ –њ—А–µ–і—Б—В–∞–≤–ї—П–µ—В —Б–Њ–±–Њ–є –і–ї–Є—В–µ–ї—М–љ—Л–є –њ—А–Њ—Ж–µ—Б—Б –≤—Л–±–Њ—А–∞ –Љ–µ—В–Њ–і–Њ–Љ –њ—А–Њ–± –Є –Њ—И–Є–±–Њ–Ї. –Я–Њ—Н—В–Њ–Љ—Г –љ–∞—Е–Њ–і–Ї–∞ –њ–Њ–і—Е–Њ–і—П—Й–µ–≥–Њ –њ—А–µ–њ–∞—А–∞—В–∞ —Б—Г—Й–µ—Б—В–≤–µ–љ–љ–Њ –±—Л —Г–ї—Г—З—И–Є–ї–∞ —Б–Є—В—Г–∞—Ж–Є—О. –Ъ–Є—И–µ—З–љ–∞—П —Н—В–Є–Њ–ї–Њ–≥–Є—П –њ—А–Є –њ—Б–Њ—А–Є–∞–Ј–µ –љ–µ –Њ–±—К—П—Б–љ—П–µ—В –≤—Б–µ —А–∞–Ј–ї–Є—З–љ—Л–µ –њ—А–Њ—П–≤–ї–µ–љ–Є—П –±–Њ–ї–µ–Ј–љ–Є, –љ–Њ –і–∞–µ—В –≤–Њ–Ј–Љ–Њ–ґ–љ–Њ—Б—В—М –Є–љ—В–µ–≥—А–∞—Ж–Є–Є —А–∞–Ј–ї–Є—З–љ—Л—Е –Є—Б—Б–ї–µ–і–Њ–≤–∞–љ–Є–є –Є –Ї–ї–Є–љ–Є—З–µ—Б–Ї–Њ–є –Є–љ—Д–Њ—А–Љ–∞—Ж–Є–Є. –Ь–∞—Б–ї–Њ –Є –Ї–∞–њ–ї–Є –Є–Љ–µ—О—В –≤—Б–µ –і–Њ–Ї—Г–Љ–µ–љ—В—Л –Њ –њ—А–Њ—И–µ–і—И–µ–є —А–µ–≥–Є—Б—В—А–∞—Ж–Є–Є –Є —Б–µ—А—В–Є—Д–Є–Ї–∞—В –Ї–∞—З–µ—Б—В–≤–∞. –≠—В–Њ —В–∞–Ї–Њ–µ —Б—З–∞—Б—В—М–µ вАУ –≤–Є–і–µ—В—М, –Ї–∞–Ї –Ї–Њ–ґ–∞ –≤–Њ—Б—Б—В–∞–љ–∞–≤–ї–Є–≤–∞–µ—В –Ј–і–Њ—А–Њ–≤—Л–є –≤–Є–і, –Є —З—Г–≤—Б—В–≤–Њ–≤–∞—В—М, –Ї–∞–Ї –њ—А–Њ—Е–Њ–і–Є—В –Ј—Г–і!


¬от что говор€т о Anti Psori Nano
в программе ≈лены ћалышевой "«доровье" на ѕервом: http://antipsori1.pomogishop.com
¬аше им€: *
“екст записи: *
»м€:

ѕароль:



–егистраци€

„то вы думаете о девушках -программистах?
Ќи разу таких не встречал
24% (89)
ќчень любопытное зрелище
10% (36)
ћне все равно
3% (12)
Ёто очень сексуально!
6% (21)
я и есть девушка -программист
11% (40)
”важаю таких
9% (33)
—читаю это бесмысленным
6% (22)
√де бы мне найти такую?
13% (46)
я их боюсь :)
6% (22)
—читаю, что это нормально
12% (45)

ѕроголосовало: 366
ёниксов развелось - виндовсу упасть негде...
–ейтинг: 1/10 (1)
ѕосмотреть все анекдоты