通过vBulletin输入清理器提取变量

问题描述

我正在使用先前存在的产品构建产品,这是admincp中的页面。 我想知道为什么有时候我可以提取一个GPC变量,而有时候却不能,我在多个地方都遇到了这个问题,但这只是示例中的最小问题。

我可以通过以下方式拉动productid$vbulletin->GPC['productid']

但是我无法拉catid$vbulletin->GPC['catid']

这是有问题的完整页面,只是一个简单的确认页面

$vbulletin->input->clean_array_gpc('r',array(
  'productid' => TYPE_UINT,'catid' => TYPE_UINT
));

print_form_header('digigacp','dodeleteproduct');

construct_hidden_code('s',$vbulletin->session->vars['sessionhash']);
construct_hidden_code('adminhash',ADMINHASH);
construct_hidden_code('productid',$vbulletin->GPC['productid']);
construct_hidden_code('catid',$vbulletin->GPC['catid']);

print_table_header($vbphrase['confirm']);
print_description_row($vbphrase['are_you_sure']);
print_description_row('Product ID: ' . intval($vbulletin->GPC['productid']));
print_description_row('Category: ' . intval($vbulletin->GPC['catid']));
print_submit_row($vbphrase['yes'],'',2,$vbphrase['no']);

解决这个问题的一种方法是使用查询,但是由于我可以拉productid,所以我不明白为什么当他们都通过提交时无法拉catid相同的形式。

这是我目前解决此问题的方式:

$vbulletin->input->clean_array_gpc('r',array(
        'productid' => TYPE_UINT,'catid' => TYPE_UINT
    ));
  
  $info = $db->query_first("SELECT catid
    FROM " . TABLE_PREFIX . "products
    WHERE productid = " . intval($vbulletin->GPC['productid']) . "
  ");

    print_form_header('digigacp','dodeleteproduct');
    construct_hidden_code('s',$vbulletin->session->vars['sessionhash']);
    construct_hidden_code('adminhash',ADMINHASH);

    construct_hidden_code('productid',$vbulletin->GPC['productid']);
    construct_hidden_code('catid',$vbulletin->GPC['catid']);
    print_table_header($vbphrase['confirm']);
    print_description_row($vbphrase['are_you_sure']);
  print_description_row('Product ID: ' . intval($vbulletin->GPC['productid']));
  print_description_row('Category: ' . $info['catid']);
    print_submit_row($vbphrase['yes'],$vbphrase['no']);

我也在vBulletin论坛上问过(它不再是一个蓬勃发展的社区),并且还阅读了我能找到的有关THIS PAGE最有用的任何页面

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)