С Новым годом! Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 2
Регистрация: 03.12.2015
Сообщений: 25

Разработка CGI-сценария, выдает ошибку, нужен совет

13.06.2016, 01:34. Показов 1643. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты,очень срочно нужен ваш совет.
Суть проблемы такова, в Apache не работает CGI сценарий,написанный на языке c++, выбивает ошибку "Internal Server Error", в логах пишет такое "Premature end of script headers: c:/program files (x86)/apache group/apache/cgi-bin/lab_cgi!.exe", прошу вашей помощи, это очень срочно, уже сегодня нужно сдавать эту лабораторную, осталось 8 часов).
Задание(может нужно кому):
Кликните здесь для просмотра всего текста
1. Разработать единый CGI-сценарий для обработки запросов, приходящих при заполнении форм по методам GET и POST, возвращающий пользователю ответы в кодировке Win или KOI-8 в виде:
- текстового документа;
- документа в формате HTML;
- переадресации ссылки с ответом пользователю.
Для программирования скриптов применять нескриптовые языки: С, С++, Visual C, Delphi, TPascal и др.
2. CGI-программа должна вначале генерировать форму для заполнения, а потом произвести обработку данных формы.
3. Проверку работы скрипта производить с применением кириллицы.

Прикрепляю вам C++ код, httpd.conf, а так же HTML код страницы:
С++ (сценарий):
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
        char szName[1024];
        char comment[75];
        GetEnvironmentVariable("QUERY_STRING",comment,75); //Ïðèíèìàåì äàííûå
        if(comment[8] == '1')
        {
            cout<<"Content-type: text/html\n\n";
            cout<<"<!DOCTYPE html><html><head><title>Ñ++ CGI</title></head>\n";
            cout<<"<body>\n";
            cout<<"<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n";
            cout<<"<p style='line-height:100%; margin-left:10%;' align='center'>Cgi-ñêðèïò íà Ñ++.</p>\n";
            cout<<"<p style='line-height:100%; margin-left:10%;'>Âû ââåëè:" << endl;
            for(int i = 0; i < 75; i++){
                if(comment[i] == '+'){cout << ' ';}
                else if(comment[i] == '&'){cout << "<br>";}
                else {cout << comment[i];}
            }
            cout<<"</p>\n";
            cout<<"</body></html>\n";
        }
        else if(comment[8] == '2')
        {
            cout<<"Content-type: text/html\n\n";
            cout<<"<!DOCTYPE html><html><head><title>Ñ++ CGI</title></head>\n";
            cout<<"<body style='background-color:black; color:white;'>\n";
            cout<<"<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n";
            cout<<"<h2>Èíôîðìàöèÿ î ïîëüçîâàòåëè</h1><br>Âû ââåëè:<br>" << endl;
            cout<<"<span style='line-height:100%; color:#ccc; margin-left:10%;'>";
            for(int i = 0; i < 75; i++){
                if(comment[i] == '+'){cout << ' ';}
                else if(comment[i] == '&'){cout << "</span><br><span style='line-height:100%; color:#ccc; margin-left:10%;'>";}
                else {cout << comment[i];}
            }
            cout<<"</p>\n";
            cout<<"</body></html>\n";
        }
        else if(comment[8] == '3')
        {
            cout<<"Location: ../lab1/answer.htm\n\n";
        }
        return 0;
}

HTML страница:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<html>
<head><title> CGI + C </title></head>
<script language=JavaScript>
function OnSubmit()
{document.form.method=document.form.method[0].checked?'post':'get';}
</script>
 
<body bgcolor="#2f2f4f" text="#ffffff" link="#ffff00" vlink="#80ff00" alink="#ff0000">
<font face="Times New Roman" color=blue>
<h1 align=center><strong>Анкетные данные</strong></h1>
</font>
<HR SIZE=7>
 
<!--
<form method=POST action="http://localhost/cgi-glob/LAB_CGI!.EXE"><br>
(Реальный путь - "C:\WebServers\home\cgi-glob\LAB_CGI!.EXE" )<br>
-->
 
<form method=POST action="http://localhost/cgi-bin/LAB_CGI!.EXE"><br>
(Реальный путь - "C:\WebServers\home\localhost\cgi-bin\LAB_CGI!.EXE" )<br>
 
<p>ФИО:<INPUT TYPE="text" NAME="Ф.И.О." MAXLENGTH=60> </p>
<p>Адрес:<INPUT TYPE="text" NAME="Адрес" MAXLENGTH=20></p>
<p>Е-mail:<INPUT TYPE="text" NAME="Email" VALUE= "mail@sddr" SIZE=20></p>
<p>Возраст:<INPUT TYPE="number" NAME="Возраст" VALUE="20" SIZE=7 MAXLENGTH=3>
 
<P>Пол:
<INPUT TYPE="radio" NAME="Пол" VALUE="Мужской" CHECKED> Мужской
<INPUT TYPE="radio" NAME="Пол" VALUE="Женский" > Женский
 
<HR>
<P>Образование:  <P>
<SELECT  NAME="Образование">
<OPTION> Высшее
<OPTION> Неполное высшее
<OPTION> Среднее
<SELECT>
 
 
<p>Какими языками владеете?<BR>
<SELECT  NAME="Языки" MULTIPLE  SIZE=3>
<OPTION> Английский
<OPTION> Немецкий
<OPTION> Французский
<OPTION> Итальянский
<SELECT>
 
<P>Ваши пожелания:  <P>
<TEXTAREA NAME="Пожелания"  ROWS=4 COLS=40 WRAP>
пожелания...
</TEXTAREA>
 
<P>Хобби:  <P>
<INPUT TYPE="checkbox" NAME="Хобби" VALUE="Музыка" CHECKED>  Музыка
<INPUT TYPE="checkbox" NAME="Хобби" VALUE="Спорт"> Спорт
<INPUT TYPE="checkbox" NAME="Хобби" VALUE="Театр"> Театр
<INPUT TYPE="checkbox" NAME="Хобби" VALUE="Кино"> Кино <p>иное
<INPUT TYPE="text" NAME="другое" VALUE= "бокс" SIZE=20>
 
<HR>
<P>Результат:
<INPUT TYPE="radio" NAME="Результат" VALUE="HTML" CHECKED> HTML
<INPUT TYPE="radio" NAME="Результат" VALUE="TEXT" > TEXT <P>
<P>Передача параметров
<INPUT TYPE="radio" NAME="method" VALUE="POST" CHECKED> POST
<INPUT TYPE="radio" NAME="method" VALUE="GET" > GET <P>
<HR SIZE=7>
<INPUT TYPE="reset" NAME="reset" VALUE= "Сброс значений" >
<INPUT TYPE="submit" NAME="submit" VALUE= "Отправить" >
 
</form>
</body>
</html>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2016, 01:34
Ответы с готовыми решениями:

Нужен совет пожалуйста со скриптом. Выдает ошибку .interHTML
Всем привет. Я новенький в этом деле, помогите пожалуйста со скриптом. Как можно заменить или сделать что-либо. Выдает ошибку :...

Создание сценария cgi
Добрый вечер, уважаемые гуру программирования. Решилась я сесть за изучение php. И тут же столкнулась с проблемой. Я учу php по книге...

Разработка приложения. Есть скрипт , но выдаёт ошибку
Создаю приложения, но т.к я в программировании всё ещё чайник, то столкнулся с Двумя ошибками в скрипте, с которыми уже 2 дня мучаюсь. ...

2
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
13.06.2016, 07:26
Лучший ответ Сообщение было отмечено Zordaxo как решение

Решение

Zordaxo, строки 14 и 30. на сколько я помню, надо "Content-Type: text/html\n\n" - Type с большой буквы.

Добавлено через 1 час 54 минуты
Не в этом причина, однако)
У вас не при всех вариантах заголовки отправляются...
Нет варианта, когда программа вызывается без строки запроса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
 
int main()
{
    char szName[1024];
    string comment = getenv("QUERY_STRING");
 
    char c = comment.length() > 8 ?  comment[8] : 0;
 
    switch(c) {
        case '1':
        {
            cout<<"Content-type: text/html\n\n";
            cout<<"<!DOCTYPE html><html><head><title>Г‘++ CGI</title></head>\n";
            cout<<"<body>\n";
            cout<<"<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n";
            cout<<"<p style='line-height:100%; margin-left:10%;' align='center'>Cgi-ñêðèïò Г*Г* Г‘++.</p>\n";
            cout<<"<p style='line-height:100%; margin-left:10%;'>Âû ââåëè:" << endl;
            for(int i = 0; i < 75; i++){
                if(comment[i] == '+'){cout << ' ';}
                else if(comment[i] == '&'){cout << "<br>";}
                else {cout << comment[i];}
            }
            cout<<"</p>\n";
            cout<<"</body></html>\n";
        }
        break;
        case '2':
        {
            cout<<"Content-type: text/html\n\n";
            cout<<"<!DOCTYPE html><html><head><title>Г‘++ CGI</title></head>\n";
            cout<<"<body style='background-color:black; color:white;'>\n";
            cout<<"<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n";
            cout<<"<h2>Г€Г*ôîðìГ*Г¶ГЁГї Г® ïîëüçîâГ*òåëè</h1><br>Âû ââåëè:<br>" << endl;
            cout<<"<span style='line-height:100%; color:#ccc; margin-left:10%;'>";
            for(int i = 0; i < 75; i++){
                if(comment[i] == '+'){cout << ' ';}
                else if(comment[i] == '&'){cout << "</span><br><span style='line-height:100%; color:#ccc; margin-left:10%;'>";}
                else {cout << comment[i];}
            }
            cout<<"</p>\n";
            cout<<"</body></html>\n";
        }
        break;
        case '3':
        {
            cout<<"Location: ../lab1/answer.htm\n\n";
        }
        break;
        default:
        {
            cout<<"Content-type: text/html\n\n";
            cout<<"<!DOCTYPE html><html><head><title>Г‘++ CGI</title></head>\n";
            cout<<"<body style='background-color:black; color:white;'>\n";
            cout<<"<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n";
            cout<<"<h2>default page</h2>" << endl;
            cout<<"</body></html>\n";
        }
    }
    return 0;
}
1
 Аватар для svsw
336 / 319 / 18
Регистрация: 25.10.2012
Сообщений: 1,070
13.06.2016, 14:54
apache cgi exe windows
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2016, 14:54
Помогаю со студенческими работами здесь

Не могу найти ошибку, нужен совет. Строки
Осваиваю перегрузки. Цель состоит в том, чтобы суммировать два объекта. Числовые значения без проблем суммировались, а вот с текстом...

Мой код выдает ошибку, нужен обновляемый запрос. Как избавиться?
Вот мой файлик, который должен только добавлять в базу данные &lt;%@ LAnguage=VBScript %&gt; &lt;% Dim conn, strSQL, tel, fio, street,...

СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку
Hansa PG5510A412 s/n 04454930213108 отработала 2 месяца на этом же месте, магазин где брали закрылся. После нескольких минут работы на...

не запускаеться (CGI вместе с MySQL) под Apache: Premature end of script headers: c:/www/cgi-bin/catalog.cgi
такая трабла: вот что пишет Apache в Log: Premature end of script headers: c:/www/cgi-bin/catalog.cgi main::ltimestr()...

ASP код всегда вызывает ошибку сценария.
Срочно нужна помощь начинающему. Есть код на ASP, но при запуске он весь пропускается или выполняется некорректно. Выдает ошибку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru