Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 10-28-2020, 01:24 PM
Dr.CustUmz's Avatar
Dr.CustUmz Dr.CustUmz is offline
 
Join Date: Aug 2013
Location: USA
Posts: 647
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Pulling a GPC variable

I am working on a product, building from previously existing products, this is a page within the admincp.
I am wondering why sometimes I am able to pull a GPC variable and other times I am not, I am having this issue in multiple spots but this is just the smallest one to give the example.

I am able to pull the productid with:
PHP Code:
$vbulletin->GPC['productid'
But I cant get the catid to pull:
PHP Code:
$vbulletin->GPC['catid'
This is the complete page in question, Just a simple confirmation page.
PHP Code:
$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']); 
A way I get around this is to use a query, but since I can pull the productid, I just dont understand why I cant pull the catid, when they were both submitted through the same form.

This is how I currently solve this problem:
PHP Code:
$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'], ''2$vbphrase['no']); 
Reply With Quote
  #2  
Old 10-29-2020, 07:49 PM
x iJailBreak x's Avatar
x iJailBreak x x iJailBreak x is offline
 
Join Date: Jan 2011
Location: United Kingdom
Posts: 88
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dr.CustUmz View Post
I am working on a product, building from previously existing products, this is a page within the admincp.
I am wondering why sometimes I am able to pull a GPC variable and other times I am not, I am having this issue in multiple spots but this is just the smallest one to give the example.

I am able to pull the productid with:
PHP Code:
$vbulletin->GPC['productid'
But I cant get the catid to pull:
PHP Code:
$vbulletin->GPC['catid'
This is the complete page in question, Just a simple confirmation page.
PHP Code:
$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']); 
A way I get around this is to use a query, but since I can pull the productid, I just dont understand why I cant pull the catid, when they were both submitted through the same form.

This is how I currently solve this problem:
PHP Code:
$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'], ''2$vbphrase['no']); 
Out of curiosity, if you var_dump($vbulletin->GPC); what does it return? And is it definitely present on var_dump($_REQUEST);?
Reply With Quote
Благодарность от:
Dr.CustUmz
  #3  
Old 10-29-2020, 08:49 PM
Dr.CustUmz's Avatar
Dr.CustUmz Dr.CustUmz is offline
 
Join Date: Aug 2013
Location: USA
Posts: 647
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

var_dump($_REQUEST);
PHP Code:
C:\wamp\www\admincp\digigacpacp.php:445:
array (
size=6)
  
'do' => string 'editproduct' (length=11)
  
'productid' => int 1
  
'explain' => int 0
  
's' => string '' (length=0)
  
'styleid' => int 0
  
'langid' => int 0 
var_dump($vbulletin->GPC);
PHP Code:
C:\wamp\www\admincp\digigacpacp.php:444:
array (
size=17)
  
'explain' => int 0
  
'vbulletin_collapse' => string 'thanks_postbit_64993
cybchatbox
drc_registration_booster
file_templates
shat_zodiac
g_answer_forums
ajax_live_box
ckeditor_edit
forumtitle
extra_threadfields
c_news_letter
g_forumhome_tabs
toplist
invitation
ico_content
livetopic
smnlikquick
gntb
thread_listing_bgcolors
vbclassified
data_interactivehome
throttle_posts
sqrtboyvbttv30
auto_close_threads
blackcat_download_images
latest_posts_blackthorn
chgtpowner38
threadprefix_changeinline
vox_close_threads
rellect_closed_prefix
hideimg_guests
lastest_thread_'
... (length=1091)
  
'devreferrerid' => int 0
  
'devuserid' => int 1
  
'devpassword' => string 'd13a309e18a79b8af634fb0477fbc687' (length=32)
  
'devlastvisit' => int 1603165768
  
'devlastactivity' => int 0
  
'devthreadedmode' => string '' (length=0)
  
'devsessionhash' => string '6106f9e943c802d63d795c67ff4d9649' (length=32)
  
'devstyleid' => int 2
  
'devlanguageid' => int 0
  
's' => string '' (length=0)
  
'styleid' => int 0
  
'langid' => int 0
  
'adminhash' => string '' (length=0)
  
'devcpsession' => string '16618cfe2c0626479f03c1f80d7abab7' (length=32)
  
'productid' => int 1 
I am a bit baffled why there are references to products I have not installed on this fresh install, The only product I have installed is the product I am working on.

This is the portion in my page where the productid and catid are added, I have stripped a majority of this page but kept what should be relevant.

PHP Code:
if ($_REQUEST['do'] == 'doaddproduct')
{
    
$vbulletin->input->clean_array_gpc('r', array(
        
'catid' => TYPE_UINT,
    
'productid' => TYPE_UINT
    
));

    
$db->query_write("INSERT INTO " TABLE_PREFIX "products
        (catid)
        VALUES
            (
                " 
intval($vbulletin->GPC['catid']) . "
            )
    "
);

    
$db->query_write("UPDATE " TABLE_PREFIX "categories
        SET products = products + 1
        WHERE catid = " 
intval($vbulletin->GPC['catid']) . "
    "
);

    
print_table_start();
    
print_table_header($vbphrase['digigacpacp']);
    
print_description_row('<strong>' $vbphrase['done'] . '</strong>');
    
print_table_footer();

    
print_cp_redirect("digigacpacp.php?" $vbulletin->session->vars['sessionurl'] . "do=viewproducts&amp;catid=" $vbulletin->GPC['catid'], 2);

I guess I should be asking is, how is a GPC variable even created? Because I know I can use productid on numerous pages, although I am unable to use catid on these pages.
Reply With Quote
  #4  
Old 10-30-2020, 12:28 PM
x iJailBreak x's Avatar
x iJailBreak x x iJailBreak x is offline
 
Join Date: Jan 2011
Location: United Kingdom
Posts: 88
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dr.CustUmz View Post
var_dump($_REQUEST);
PHP Code:
C:\wamp\www\admincp\digigacpacp.php:445:
array (
size=6)
  
'do' => string 'editproduct' (length=11)
  
'productid' => int 1
  
'explain' => int 0
  
's' => string '' (length=0)
  
'styleid' => int 0
  
'langid' => int 0 
var_dump($vbulletin->GPC);
PHP Code:
C:\wamp\www\admincp\digigacpacp.php:444:
array (
size=17)
  
'explain' => int 0
  
'vbulletin_collapse' => string 'thanks_postbit_64993
cybchatbox
drc_registration_booster
file_templates
shat_zodiac
g_answer_forums
ajax_live_box
ckeditor_edit
forumtitle
extra_threadfields
c_news_letter
g_forumhome_tabs
toplist
invitation
ico_content
livetopic
smnlikquick
gntb
thread_listing_bgcolors
vbclassified
data_interactivehome
throttle_posts
sqrtboyvbttv30
auto_close_threads
blackcat_download_images
latest_posts_blackthorn
chgtpowner38
threadprefix_changeinline
vox_close_threads
rellect_closed_prefix
hideimg_guests
lastest_thread_'
... (length=1091)
  
'devreferrerid' => int 0
  
'devuserid' => int 1
  
'devpassword' => string 'd13a309e18a79b8af634fb0477fbc687' (length=32)
  
'devlastvisit' => int 1603165768
  
'devlastactivity' => int 0
  
'devthreadedmode' => string '' (length=0)
  
'devsessionhash' => string '6106f9e943c802d63d795c67ff4d9649' (length=32)
  
'devstyleid' => int 2
  
'devlanguageid' => int 0
  
's' => string '' (length=0)
  
'styleid' => int 0
  
'langid' => int 0
  
'adminhash' => string '' (length=0)
  
'devcpsession' => string '16618cfe2c0626479f03c1f80d7abab7' (length=32)
  
'productid' => int 1 
I am a bit baffled why there are references to products I have not installed on this fresh install, The only product I have installed is the product I am working on.

This is the portion in my page where the productid and catid are added, I have stripped a majority of this page but kept what should be relevant.

PHP Code:
if ($_REQUEST['do'] == 'doaddproduct')
{
    
$vbulletin->input->clean_array_gpc('r', array(
        
'catid' => TYPE_UINT,
    
'productid' => TYPE_UINT
    
));

    
$db->query_write("INSERT INTO " TABLE_PREFIX "products
        (catid)
        VALUES
            (
                " 
intval($vbulletin->GPC['catid']) . "
            )
    "
);

    
$db->query_write("UPDATE " TABLE_PREFIX "categories
        SET products = products + 1
        WHERE catid = " 
intval($vbulletin->GPC['catid']) . "
    "
);

    
print_table_start();
    
print_table_header($vbphrase['digigacpacp']);
    
print_description_row('<strong>' $vbphrase['done'] . '</strong>');
    
print_table_footer();

    
print_cp_redirect("digigacpacp.php?" $vbulletin->session->vars['sessionurl'] . "do=viewproducts&amp;catid=" $vbulletin->GPC['catid'], 2);

I guess I should be asking is, how is a GPC variable even created? Because I know I can use productid on numerous pages, although I am unable to use catid on these pages.
Interesting to note catid does not get passed even in $_REQUEST.. it definitely has a named field?

It'll only get registered in $vbulletin->GPC if it's first registered in $_REQUEST before your call to $vbulletin->input->clean_array_gpc();

In regards to it referencing plugins you don't have activated, I assume they are being passed in via $_COOKIE (which clean_gpc/clean_array_gpc will also run on).
Reply With Quote
Благодарность от:
Dr.CustUmz
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 03:18 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03837 seconds
  • Memory Usage 2,326KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (14)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (2)post_thanks_box_bit
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete