Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Рекомендуемые сообщения

написал 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;}

я давно занимаюсь веб программированием, но на си недавно. Может кто-то поможет? Интересует с програмной точки зрения, а не с веб!

Ссылка на комментарий
Поделиться на другие сайты

Cкорее всего дело в том, что ты компилируешь программу для Windows или даже DOS, а на сервере установлена UNIX или Linux. А может быть ты ее вообще не компилируешь...

Ссылка на комментарий
Поделиться на другие сайты

программа корректно откомпилирована с Borland C, а сервер используемый для cgi - Apache/2.0.54 (Win32)

cgi-bin гарантированно активирован! ;)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

программа корректно откомпилирована с 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';

Ссылка на комментарий
Поделиться на другие сайты

ну нельзя, никак нельзя запуливать в цикле шапку страницы

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:

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");

...

Ссылка на комментарий
Поделиться на другие сайты

Gray Angel: посмотри внимательно в код!

for(i=0;i<n;i++)

{

input_ch = getchar(); }

input_ch = '\000';

цикл завершенный.

вначале в цикле извлекается набор параметров, потом отправляются заголовки, и потом страница :D

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...