免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2385 | 回复: 2
打印 上一主题 下一主题

[Web] 求教boa服务器!!!!!????? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-19 18:49 |只看该作者 |倒序浏览
我在uclinux中用了boa服务器,为什么用post没有反映,文件系统是romfs,在/var下有ext2(ramdisk),帮帮我,怎么改好

我在boa上编写cgi程序,用到了post,如下
title>密码保护</title>
<center>
<H1>美丽宝岛站</H1>
<HR>
<FORM METHOD="OST" "ACTION="/home/web/cgi-bin/password">
会员姓名<input type="text" name="name"><p>
输入密码<input type="password" name="passwd" value="********"><p>
<input type="submit" value="输入">
<input type="reset" value="清除">
</FROM>
</center>

在按输入时没有响应,网页上地址还是192.168.111.100(原来的),怎么回事,boa不支持post吗?

cgi程序
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

typedef struct
{
char *name;
char *val;
}input;

char *ReadStdin(FILE *f,char stop,int *len);
void AddToSpace(char *str);
void Convert(char *url);
char *ReadData(char *line,char stop);
char ConvertToHex(char *change);

main()
{
input inputs[10];
int i,m=0;
int len;
FILE *fp;
char s[255];

printf("Content-type:text/html\n\n";
len=atoi(getenv("CONTENT_LENGTH");
for(i=0;len&&(!feof(stdin));i++)
{
m=i;
inputs[i].val=ReadStdin(stdin,'&',&len);
AddToSpace(inputs[i].val);
Convert(inputs[i].val);
inputs[i].name=ReadData(inputs[i].val,'=');
}

if(strcmp(inputs[0].val,"qq"==0&&strcmp(inputs[1].val,"aa"==0)
{
printf("<title>netword</title>\n";
printf("<H1>welcome %s</H1>\n",inputs[0].val);
fp=fopen("/home/web/html/wecome.html","r";
if(fp==NULL)
exit(1);
while((fgets(s,255,fp))!=NULL)
printf("%s\n",s);
}
else
{
printf("<title>error</title>\n";
printf("<H1>error</H1>\n";
printf("<H1>restart</H1>\n";
}
}


char *ReadStdin(FILE *f,char stop,int *len)
{
int wsize;
char *word;
int x;
wsize=2048;
x=0;
word=(char*)malloc(sizeof(char)*(wsize+1));
while(1)
{
word[x]=(char)fgetc(f);
if(x==wsize)
{
word[x+1]='\0';
wsize+=2048;
word=(char*)realloc(word,sizeof(char)*(wsize+1));
}
--(*len);
if((word[x]==stop)||(feof(f))||(!(*len)))
{
if(word[x]!=stop)
x++;
word[x]='\0';
return word;
}
++x;
}
}


char *ReadData(char *line,char stop)
{
int i=0,j;
char *word;

word=(char*)malloc(sizeof(char)*(strlen(line)+1));
for(i=0;(line[i]&&(line[i]!=stop));i++)
word[i]=line[i];
word[i]='\0';
if(line[i])
i++;
j=0;
while(line[j++]=line[i++]);
return word;
}

char ConvertToHex(char *change)
{
char hexdigit;
hexdigit=(change[0]>='A'?((change[0]&0xdf)-'A')+10change[1]-'0'));
hexdigit*=16;
hexdigit+=(change[1]>='A'?((change[1]&0xdf)-'A')+10change[1]-'0'));
return hexdigit;
}

void Convert(char *data)
{
int i,j;
for(i=0,j=0;data[j];++i,++j)
{
if((data[i]=data[j])=='%')
{
data[i]=ConvertToHex(&data[j+1]);
j+=2;
}
}
data[i]='\0';
}

void AddToSpace(char *str)
{
int i;
for(i=0;str[i];i++)
if(str[i]=='+')
str[i]=' ';
}

论坛徽章:
0
2 [报告]
发表于 2007-03-20 08:54 |只看该作者
问题原因:
boa 对 post 数据需要以在临时目标打开一个临时文件,
确认下你文件系统是不是有临时目录, 是否可写.

c 写 cgi 试下 CSP/eybuild
http://www.eybuild.com
白石 该用户已被删除
3 [报告]
发表于 2007-03-20 16:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP