写了一个input filter 用来得到所有用户输入的post请求,filter内代码如下:if( r->method_number==M_POST ){if(ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK) == OK ){if( 1 == ap_should_client_block(r)){while ((nbytes = ap_get_client_block(r, cbuf, sizeof(cbuf))) > 0){cbuf[nbytes]='\0';ap_log_rerror(APLOG_MARK, APLOG_ERR,0,r,"get query string: %s ",cbuf); //输出到error文件里}}}rv= ap_get_brigade(f->next,bb,mode,block,readbytes); //传给下一个filterreturn rv;} }}}rv= ap_get_brigade(f->next,bb,mode,block,readbytes); //传给下一个filterreturn rv;}但error文件中始终显示exit signal Segmentation fault(11)无法读到post。用的是Linux下的apache2.2麻烦大牛们帮忙改下代码,或者解释下原因也行,谢了~
2 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
我感觉你这句有问题nbytes = ap_get_client_block(r, cbuf, sizeof(cbuf)),你没有读的时候sizeof(cbuf)是空,就读不到数据,我是这样写的,nbytes = ap_get_client_block(r, cbuf, HUGE_STRING_LEN),这样就可以读到post数据了
万千封印
TA贡献1891条经验 获得超3个赞
问题在于使用了ap_get_client_block函数,如果你想获取POST参数同时不影响网站的正常运行,应该用一个input filter,同时放弃ap_get_client_block这个函数,靠自己手写来从brigade和buck中读取数据。我试过,自己手写之后是可以运行的
添加回答
举报
0/150
提交
取消