为了账号安全,请及时绑定邮箱和手机立即绑定

文件中显示 exit signal Segmentation fault(11) 无法读到post?

文件中显示 exit signal Segmentation fault(11) 无法读到post?

慕运维8079593 2023-04-01 13:09:16
写了一个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数据了

查看完整回答
反对 回复 2023-04-03
?
万千封印

TA贡献1891条经验 获得超3个赞

问题在于使用了ap_get_client_block函数,如果你想获取POST参数同时不影响网站的正常运行,应该用一个input filter,同时放弃ap_get_client_block这个函数,靠自己手写来从brigade和buck中读取数据。我试过,自己手写之后是可以运行的

查看完整回答
反对 回复 2023-04-03

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号