Ответы пользователя по тегу CGI
  • Какая есть литература по С++, в которой описывается работа с cgi и sql?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    литература по работе С++ c sql ищется в гугле за 5 секунд.
    Литературы по С++ с использованием CGI нет, потому что CGI это не часть С++, это просто возможность запускать внешние любые программы через веб-сервер.

    То есть вы пишете обычное консольное приложение на С++, которое что-то берет из базы данных и выводит вам в консоль текст в виде HTML страницы, и настраиваете веб-сервер, чтобы вызывать ваше приложение через CGI.
    Ответ написан
    2 комментария
  • Как работает веб-сервер и cgi скрипт?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Веб сервер запускает CGI программу и передает в нее переменные окружения с данными, которые в HTTP запросе передавал клиент.
    В зависимости от того, на чем написан CGI это можно извлекать.
    Клиенту отправляется инфа просто - CGI скрипт ее просто пишет в stdout, веб сервер отправляет клиенту.

    Например для скриптов на perl, данные от клиента доступны через $ENV{'VAR_NAME'}, где VAR_NAME имя определенной переменной. Список можно глянуть www.oreilly.com/openbook/cgi/ch02_02.html

    Вывод скрипта должен начинаться с content-type, если вы выводите html-контент, то например
    print "Content-type: text/html\n\n";
    Затем обычный html.
    Ответ написан
    Комментировать
  • Почему исходный код cgi-скрипта при запросе отображается в браузере, но сам скрипт не выводит html-разметку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Скрипт надо хендлить. То есть веб-сервер должен понимать, что это скрипт и выполнять его, а не отображать как страничку.
    Убедитесь, что выполнение скриптов разрешено в вашей папке
    <Directory "/var/www/htdocs/somedir">
        Options +ExecCGI
    </Directory>


    Убедитесь, что расширение файла прописано в хендлере
    AddHandler cgi-script .cgi .pl

    Можно даже указать хендлер конкретно для этой папки:
    <Directory "/home/*/public_html">
        Options +ExecCGI
        AddHandler cgi-script .cgi
    </Directory>
    Ответ написан
    2 комментария