慕運(yùn)維8079593
2023-04-01 13:09:16
寫(xiě)了一個(gè)input filter 用來(lái)得到所有用戶(hù)輸入的post請(qǐng)求,filter內(nèi)代碼如下: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); //傳給下一個(gè)filterreturn rv;} }}}rv= ap_get_brigade(f->next,bb,mode,block,readbytes); //傳給下一個(gè)filterreturn rv;}但error文件中始終顯示exit signal Segmentation fault(11)無(wú)法讀到post。用的是Linux下的apache2.2麻煩大牛們幫忙改下代碼,或者解釋下原因也行,謝了~
2 回答

尚方寶劍之說(shuō)
TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
我感覺(jué)你這句有問(wèn)題nbytes = ap_get_client_block(r, cbuf, sizeof(cbuf)),你沒(méi)有讀的時(shí)候sizeof(cbuf)是空,就讀不到數(shù)據(jù),我是這樣寫(xiě)的,nbytes = ap_get_client_block(r, cbuf, HUGE_STRING_LEN),這樣就可以讀到post數(shù)據(jù)了

萬(wàn)千封印
TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
問(wèn)題在于使用了ap_get_client_block函數(shù),如果你想獲取POST參數(shù)同時(shí)不影響網(wǎng)站的正常運(yùn)行,應(yīng)該用一個(gè)input filter,同時(shí)放棄ap_get_client_block這個(gè)函數(shù),靠自己手寫(xiě)來(lái)從brigade和buck中讀取數(shù)據(jù)。我試過(guò),自己手寫(xiě)之后是可以運(yùn)行的
添加回答
舉報(bào)
0/150
提交
取消