OpenWRT C CGI скрипт - PullRequest
       6

OpenWRT C CGI скрипт

0 голосов
/ 06 ноября 2018

Мы разрабатываем openwrt. Веб-сервер использует lighttpd. CGI был разработан на языке Си. В html-форме действие устанавливается как cgi в теге формы, и выполняется cgi, разработанный в C. Я поставил скрипт в cgi.

int main(int argc, char *argv[]){
char *form, *inStr;
long inLen;

printf("Content-type: text/html%c%c\n\n",10,10);
printf("<HTML>\n");
printf("<head>\n");
inLen = strtol(getenv("CONTENT_LENGTH"), NULL, 10) + 1;
inStr = malloc(inLen);
memset(inStr, 0, inLen);
fgets(inStr, inLen+1, stdin);
form = web_get("page", inStr, 0);
 if (!strcmp(form, "reboot")) {
    set_reboot(inStr);




 printf("scriptype='text/javascript'>document.location.href='../index.shtml';/script>\n"); 
   }else if (!strcmp(form,"lan"))
         {
    set_lan(inStr);
   }
   free(inStr);
printf("</head>\n");
printf("</HTML>");
return 0;

}

После запуска cgi в Chrome скрипт не запустится. Это то, что я вижу на веб-странице. net.bridge.bridge-nf-call-custom = 0 Ошибка при выполнении команды Хорошо Хорошо Хорошо Тип контента: текстовый / простой; кодировка = UTF-8

<HTML>
<head>
<script 
type='text/javascript'>document.location.href='../wireless_setting.shtml'; 
</script>
</head>
</HTML>

Я не захожу на страницу, которую хочу.

1 Ответ

0 голосов
/ 08 ноября 2018

Это потому, что вы выполняете эту строку:

printf("Content-type: text/html%c%c\n\n",10,10);

Все, что расположено после указанной выше строки, не будет выполнено, а вместо этого будет напечатано на экране. Проблема в потоке этого скрипта. Вы должны начать печатать страницу только после того, как все другие операции будут выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...