openwrt C cgi脚本
openwrt C cgi script
我们正在开发openwrt。
Web 服务器使用 lighttpd。
cgi是用C语言开发的。
在html表单中,在form标签中设置action为cgi,执行C开发的cgi。
我把脚本放在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;
}
在Chrome中运行ning cgi后,脚本不会运行。
这是我在网页上看到的。
net.bridge.bridge-nf-call-custom = 0
错误 运行ning 命令
好的
好的
好的
内容类型:text/plain;字符集=utf-8
<HTML>
<head>
<script
type='text/javascript'>document.location.href='../wireless_setting.shtml';
</script>
</head>
</HTML>
我没有转到我想要的页面。
因为你执行了这行:
printf("Content-type: text/html%c%c\n\n",10,10);
上一行之后的任何内容都不会执行,而是打印在屏幕上。问题出在这个脚本的流程中。只有在完成所有其他操作后,您才必须开始打印页面。
我们正在开发openwrt。 Web 服务器使用 lighttpd。 cgi是用C语言开发的。 在html表单中,在form标签中设置action为cgi,执行C开发的cgi。 我把脚本放在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;
}
在Chrome中运行ning cgi后,脚本不会运行。 这是我在网页上看到的。 net.bridge.bridge-nf-call-custom = 0 错误 运行ning 命令 好的 好的 好的 内容类型:text/plain;字符集=utf-8
<HTML>
<head>
<script
type='text/javascript'>document.location.href='../wireless_setting.shtml';
</script>
</head>
</HTML>
我没有转到我想要的页面。
因为你执行了这行:
printf("Content-type: text/html%c%c\n\n",10,10);
上一行之后的任何内容都不会执行,而是打印在屏幕上。问题出在这个脚本的流程中。只有在完成所有其他操作后,您才必须开始打印页面。