LifeOnNet Опубликовано 16 ноября, 2005 Жалоба Поделиться Опубликовано 16 ноября, 2005 написал cgi программу на Си, залил на сервер, просто для теста, а она выдает Internal Server Error 500! Кто-то может обьяснить, с чем проблема? #include <stdlib.h>#include <sys/types.h>#include <stdio.h>int main(){ long i,n,uid; char input_ch[1024]; char *env; env= getenv("CONTENT_LENGTH"); sscanf(env, "%d", &n); for(i=0;i<n;i++) { input_ch[i] = getchar(); } input_ch[i] = '\000'; printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); uid = -1; sscanf(input_ch, "uid=%1d", &uid); printf("Input Number:%1d.<br><hr>", uid); return 0;} я давно занимаюсь веб программированием, но на си недавно. Может кто-то поможет? Интересует с програмной точки зрения, а не с веб! Ссылка на комментарий Поделиться на другие сайты Поделиться
Ray Опубликовано 16 ноября, 2005 Жалоба Поделиться Опубликовано 16 ноября, 2005 Cкорее всего дело в том, что ты компилируешь программу для Windows или даже DOS, а на сервере установлена UNIX или Linux. А может быть ты ее вообще не компилируешь... Ссылка на комментарий Поделиться на другие сайты Поделиться
LifeOnNet Опубликовано 16 ноября, 2005 Автор Жалоба Поделиться Опубликовано 16 ноября, 2005 программа корректно откомпилирована с Borland C, а сервер используемый для cgi - Apache/2.0.54 (Win32) cgi-bin гарантированно активирован! ;) Ссылка на комментарий Поделиться на другие сайты Поделиться
roman kovrigin Опубликовано 5 декабря, 2005 Жалоба Поделиться Опубликовано 5 декабря, 2005 программа корректно откомпилирована с Borland C, а сервер используемый для cgi - Apache/2.0.54 (Win32) cgi-bin гарантированно активирован! :D ну нельзя, никак нельзя запуливать в цикле шапку страницы for(i=0;i<n;i++) { input_ch = getchar(); } input_ch = '\000'; printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); перепиши на printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); for(i=0;i<n;i++) { input_ch = getchar(); } input_ch = '\000'; Ссылка на комментарий Поделиться на другие сайты Поделиться
LifeOnNet Опубликовано 5 декабря, 2005 Автор Жалоба Поделиться Опубликовано 5 декабря, 2005 ну нельзя, никак нельзя запуливать в цикле шапку страницы for(i=0;i<n;i++) { input_ch = getchar(); } input_ch = '\000'; printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); перепиши на printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); for(i=0;i<n;i++) { input_ch = getchar(); } input_ch = '\000'; не совсем понял смысл изменения. вначале необходимо получить параметры конфига, а потом уже выводит ответ включая заголовки. или я что-то не понял? Ссылка на комментарий Поделиться на другие сайты Поделиться
Gray Angel Опубликовано 5 декабря, 2005 Жалоба Поделиться Опубликовано 5 декабря, 2005 LifeOnNet: printf("Content-type: text/html\n\n"); //выводит заголовок printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); //выводит html код Правила HTTP такие, что сначала идут все заголовки, и только потом хтмл код, после хтмл не должно быть заголовков, а втвоем коде получается, что printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); выводится n раз, то есть: printf("Content-type: text/html\n\n"); printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); printf("Content-type: text/html\n\n"); //вот здесь и происходит ошибка!!! printf("<title> C-cgi script. (example#1)</title>\n"); printf("<h3><i> Russian Research Center </i></h3>\n"); ... Ссылка на комментарий Поделиться на другие сайты Поделиться
LifeOnNet Опубликовано 10 декабря, 2005 Автор Жалоба Поделиться Опубликовано 10 декабря, 2005 Gray Angel: посмотри внимательно в код! for(i=0;i<n;i++) { input_ch = getchar(); } input_ch = '\000'; цикл завершенный. вначале в цикле извлекается набор параметров, потом отправляются заголовки, и потом страница :D Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти