ru en uk

  авторизація

(044) 362 48 16   (098) 294 41 60


   Ціни

Приклад 1


Щоб зрозуміти як працює CGI створимо два примітивних прикладу, які запустимо на Віндовзе. Для початку переконаємося що Апач розуміє CGI, для цього знайдемо приблизно такі рядки, і якщо їх немає, то створимо:
ScriptAlias / cgi-bin / "C: / apache / www/ cgi-bin / "
<Directory "C:/apache/www/cgi-bin">
AllowOverride None
Options None
Order allow, deny
Allow from all
</ Directory>

Потім запустимо Борланд Паскаль і напишемо таку програмку:
uses dos;
var i: integer;
begin
writeln ( 'Content-type: text / html');
writeln;
writeln ( 'This is an example of CGI program.');
writeln ( 'Here is list of environment variables available for you');
writeln ( '<pre>');
For I: = 1 To EnvCount Do WriteLn (EnvStr (I));
writeln ( '</ pre>');
end.

Скомпіліруем її (Alt + F9 або Ctrl + F9) і розмістимо файл *. exe в папку C: / apache / www / cgi-bin /. Потім відкриємо броузер і введемо адреса
http://localhost/cgi-bin/example.exe?var1=value1&var1=value2

З'явиться список доступних зміннихх оточення. Теоретично навіть на Паскаль можна писати програми будь-якої складності, але для цього проекту його інструментарій явно захудалый.

Приклад 2


Створимо командний файл run.bat
@ echo off
echo Location: / cgi-bin/example.exe

http://localhost/cgi-bin/run.bat

то все, що він виведе - це редирект на програму з прикладу 1.

Підсумки


Отже, ми побачили, що CGI програма може запускатися веб-сервером (Апач, IIS) двома способами:

  • Це різних (пакетний) файл, запускається асоційована з ним програма і, в якості параметрів, - пакетний файл.Таким способом працюють PHP і Perl, якщо встановлені як CGI.

Звідки веб-сервер знає як запускати програму


Це сильно відрізняється на Вінд і * ніксах.

  • На Вінд веб-сервер дивиться розширення файлу (це звичайно всі останні символидо першої точки з кінця). Якщо це *. exe або *. com то файл запускається як виконуваний. Якщо це *. bat (і *. cmd на WinNT) то запускається командної інтерпретатор DOS command.com (cmd.exe на WinNT) з файлом у якості параметра. Якщо веб-сервер IIS, то можна також запускати та *. dll програми. Якщо файл має інші розширення, то веб-сервер спочатку дивиться в свою конфігурацію (httpd.conf etc) нету ли там зареєстрованих розширень. Якщо немає, то далі він дивиться в реєстр Віндоуз. Apache робить це тільки в разі, якщо встановлена директива
    <b> ScriptInterpreterSource & lt; / b> registry

    Якщо вищевказаний параметр не виставлений (за замовчуванням він стоїть в
    <b> ScriptInterpreterSource </ b> script

    ), То він робить спробу прочитати перший рядок файлу і знайти там т. зв. вступний рядок (shebang line):
    #! c: / program files / perl / perl
    що вказує ніж потрібно обробляти файл.
    Якщо нічого не знайдено, виводиться помилка.
  • На сервер * nix виконуються файли як правило починаються з символів. ELF Такі файли можуть відразу оброблятись ядром ОС. У протиному випадку розширення файлу шукається в настройках сервера (httpd.conf,. htaccess). Якщо його там немає, шукається вводная рядок як і на виндах. Якщо на виндах є тільки один вбудований інтерпретатор (command.com), який не дуже підходить для написання веб-додатків, то * nix'и пропонують широкий вибор Шеллі (сімейство shells): Bourne-shells, C-shells, Korn-shells з усіма їх послідовниками.

На WinNT і * nix, крім того, що виконуються файли повинні бути позначені як такі, тобто поточний користувач повинен мати права на виконання (chmod 700 etc).

 
Постранічний висновок результату
29.05.2007
Постранічний висновок результату
29.05.2007
Блокування файлів
29.05.2007