在LR中动态拼接参数的问题
在很多时候系统是提供了多选并且组合提交的操作,这个时候请求就需要动态拼接了,这里举个参考的例子给大家,希望能够让大家明白怎么回事。
比如这里有一个ID列表,通过关联可以拿到对应的所有编号
注意这里的参数名叫做id,是一个参数数组,那么要发出的是这个数组所有元素的组合怎么办呢?
通过lr_save_string和lr_eval_string来动态拼接。
拼接代码
lr_save_string(lr_paramarr_idx("id",1),"temp1");
for(i=2;i<=lr_paramarr_len("id");i++)
{
lr_save_string(lr_paramarr_idx("id",i),"temp");
lr_save_string(lr_eval_string("{temp1}_{temp}"),"temp1");
}
整个POC代码
int i;
web_reg_save_param("id",
"LB=id=\"normalthread_",
"RB=\"",
"Ord=ALL",
"Search=NoResource",
LAST);
web_url("test","URL=http://127.0.0.1/discuzx1.5/forum.php?mod=forumdisplay&fid=2",LAST);
lr_save_string(lr_paramarr_idx("id",1),"temp1");
for(i=2;i<=lr_paramarr_len("id");i++)
{
lr_save_string(lr_paramarr_idx("id",i),"temp");
lr_save_string(lr_eval_string("{temp1}_{temp}"),"temp1");
}
实现原理就是通过参数数组遍历获取每一个值,然后累加即可,如果大家需要修改自己的拼接机制,只需要修改
lr_save_string(lr_eval_string("{temp1}_{temp}"),"temp1");
这里的连接符_下划线即可。