Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 08-06-2006, 04:07 AM
aggiefan aggiefan is offline
 
Join Date: Apr 2005
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Input Cleaner Question (do i need it)?

I'm working on porting my product over to 3.6 and I know that there are now input cleaners for $_get and other commands.

Basically, what I'm trying to do is use the url the person is on to capture a value. So, if they're on the following real url, I want to grab the contest and week values.

http://www.aggiefans.com/forums/vbco...t=TESTA&week=1
(if you visit, ignore the mysql errors. It's because I haven't finished coding the % of votes for the other 14 games).

Then when they submit, I want to record the contest name (TESTA) and the week # (1) to the database (these values are in the url address bar only).

I found that using $contestname = $_GET['contest']; and $week = $_GET['week']; pull the information from the url correctly as I can use it to query. I've pulled out the array using the following ($contestkey is simply "$contestname$week"):

Code:
$contestnameresult = $db->query_first("SELECT contestname from " . TABLE_PREFIX . "vbcontest_matchups WHERE contest_key='$contestkey'");
$contestname1 = $contestnameresult[contestname];
$weekresult = $db->query_first("SELECT weekid from " . TABLE_PREFIX . "vbcontest_matchups where contest_key='$contestkey'");
$week1 = $weekresult[weekid];
If I do a print "$contestname1" it prints TESTA at the top of my page (you can see it on the link above). However, when I put write to db for $contestname1, it comes across blank. Help would be appreciated.

And to clarify, this is my values being written to the database. Every value is being recorded (17 others, except the first two).

Code:
$db->query_write ("INSERT INTO " . TABLE_PREFIX . "vbcontest_picks (contestname, weekid, username, userid, game1, game2, game3, game4, game5, game6, game7, game8, game9, game10, game11, game12, game13, game14, game15)

         VALUES ('$contestname1', '$week1', '$yourname', '$yourid', '$radioanswer1', '$radioanswer2', '$radioanswer3', '$radioanswer4', '$radioanswer5', '$radioanswer6', '$radioanswer7', '$radioanswer8', '$radioanswer9', '$radioanswer10', '$radioanswer11', '$radioanswer12', '$radioanswer13', '$radioanswer14', '$radioanswer15')");
Reply With Quote
  #2  
Old 08-06-2006, 11:45 AM
pyro.699 pyro.699 is offline
 
Join Date: Sep 2005
Location: Fredericton, New Brunswic
Posts: 261
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I dont understand your question. But, as for input cleaners, i use it on every $_POST (except $_POST['do']). There is no real reason to have it for a $_GET value, because its being submitted by your own site? right?
Reply With Quote
  #3  
Old 08-06-2006, 11:49 AM
Guest190829
Guest
 
Posts: n/a
Default

Yes, you need to use the input cleaners to avoid SQL Injections and other security exploits.
Reply With Quote
  #4  
Old 08-06-2006, 06:23 PM
aggiefan aggiefan is offline
 
Join Date: Apr 2005
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by pyro.699
I dont understand your question. But, as for input cleaners, i use it on every $_POST (except $_POST['do']). There is no real reason to have it for a $_GET value, because its being submitted by your own site? right?
I'm not sure, and one reason I'm asking for help. This code worked on vbulletin 3.0, and I'm pretty sure on 3.5, but now it's not. What would I put to pull those values in the URL to writable variables in the database?

Again, if I navigate to http://www.aggiefans.com/forums/vbco...t=TESTA&week=1 I would want the variable $contestname1 to write TESTA and $week1 to write 1 to the database.

If they navigate and submit the form from http://www.aggiefans.com/forums/vbco...grocks&week=34 I would want $contestname1 to write vbulletinorgrocks and $week1 to write 34 to the database.

I'm available on Yahoo IM at vlyrockaf if you think it'll be easier to clarify and resolve the problem.

Thanks again for the replies so far.
Reply With Quote
  #5  
Old 08-08-2006, 03:14 PM
aggiefan aggiefan is offline
 
Join Date: Apr 2005
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

anybody?
Reply With Quote
  #6  
Old 08-08-2006, 04:39 PM
Sean S's Avatar
Sean S Sean S is offline
 
Join Date: Jan 2004
Location: Chicago
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't know, but can't you just use $_REQUEST instead of $_GET? Maybe something like this would work?

Code:
$vbulletin->input->clean_array_gpc('r', array('action' => TYPE_INT));
$action = $vbulletin->GPC['action'];
Reply With Quote
  #7  
Old 08-10-2006, 02:32 AM
aggiefan aggiefan is offline
 
Join Date: Apr 2005
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just so everybody knows I finally got this to work. The $_get works just as fine as the variable above, but i used the above statement anyways. However, that didn't write it to the database.

So, what I did to make it work was pass the output of the input cleaner through the template (but hidden so the user can't touch or change):

The input cleaners:
Code:
$vbulletin->input->clean_array_gpc('g', array('contest' => TYPE_STR));
$contestname = $vbulletin->GPC['contest'];

$vbulletin->input->clean_array_gpc('g', array('week' => TYPE_STR));
$week = $vbulletin->GPC['week'];
The template
Code:
<input type="hidden" value="$contestname" name="contestname" />
<input type="hidden" value="$week" name="getweek" />
You have to clean that through the form in the PHP file
Code:
$vbulletin->input->clean_array_gpc('p', array( 
'contestname' => STR,
'getweek' => STR,
(more array cleaning here...)
));

$contestname1 = $vbulletin->GPC['contestname'];
$currentweek = $vbulletin->GPC['getweek'];
The write to db code:
Code:
$db->query_write ("INSERT INTO " . TABLE_PREFIX . "xxx (............)
         VALUES ('$contestname1', '$currentweek')
So basically, pass the input cleaner through the template to submit it as part as the form (when they hit submit)...

Even though the posts above didn't directly help, they got me thinking -- so thanks to all who posted. Hope the above makes sense and helps somebody.
Reply With Quote
  #8  
Old 08-10-2006, 05:17 PM
Sean S's Avatar
Sean S Sean S is offline
 
Join Date: Jan 2004
Location: Chicago
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

nice job aggiefan
Reply With Quote
  #9  
Old 08-10-2006, 10:31 PM
aggiefan aggiefan is offline
 
Join Date: Apr 2005
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just hope somebody finds it useful.
Reply With Quote
Reply


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:06 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08995 seconds
  • Memory Usage 2,241KB
  • 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
  • (7)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (8)postbit_onlinestatus
  • (9)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_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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete