View Single Post
  #11  
Old 11-12-2014, 04:34 PM
KGodel's Avatar
KGodel KGodel is offline
 
Join Date: May 2011
Location: Indiana
Posts: 332
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Alright. Here is my final code. It seems to be working, but I want to make sure I didn't leave any space for an injection.

PHP Code:
// Get the UserID of the Staff member accessing the page
$staffid $vbulletin->userinfo['userid'];

print_cp_header();
echo 
"<div class='pagetitle'>In Game Activity System</div>";

//Possible Point Values
$pointreasons = array("Attended a Gamenight (+10)""Attended a Gamenight (+15)""Attended a Gamenight (+20)""Attended a Contest/Torunament (+30)");

// Get Divisions //
$sql "SELECT gamename, ingamename, profilefield FROM " TABLE_PREFIX "gamelist ORDER BY gamename ASC";
$result $db->query_read_slave($sql);
$divisions = array();
while ( 
$a mysql_fetch_array($result) ) {
    
$divisions[] = $a;
    
$divnames[] = $a[0];
}

/////////////////////// front page
if ( empty($_POST['do']) ) {
    
    
////////////////////// add points via division
    
print_form_header($this_script'div');
    
print_table_header('Add Points via Division');
    
print_label_row('Notice:''Select the division you are entering activity for.');
    
print_select_row('Divisions''division'$divnames);
    
print_submit_row('Select Division');
    
    
////////////////////// add points text area
    
print_form_header($this_script'add');
    
print_table_header('Add Points');
    
print_label_row('Notice:''Select the point value based on the event.');
    
print_select_row('Points''points'$pointreasons);
    
print_label_row('Users:''Input the usernames of all the users you wish to give the above points to. You must separate names using a semicolon (;).');
    
print_textarea_row('Users''users','',12,100,false,false);
    
print_submit_row('Add Points');
    
    
////////////////////// edit points
    
print_form_header($this_script'edit');
    
print_table_header('Edit Points');
    
print_label_row('Username:''Enter the username of who you want to edit the points value of.');
    
print_input_row('Username''username');
    
print_submit_row('Edit Points');
}

/////////////////////// div selected
if ( $_POST['do'] == 'div' ) {
   
    if ( !isset(
$_POST['division']) ) { rpm_print_stop_back('Please select a division.'); }
   
    
$vbulletin->input->clean_array_gpc('p', array(
        
'division'         => TYPE_UNIT
        
));
    
    
// Division Name //
    
$n $vbulletin->GPC['division'];
    
$divname $divisions[$n][0];
    
$divign $divisions[$n][1];
    
$divfield $divisions[$n][2];
    $+++++
eck 1<<$n;
    
    
// Get Main Members
    
$mainusers $db->query_read_slave("SELECT user.userid, user.username, userfield. " $divfield ." FROM " TABLE_PREFIX "user AS user LEFT JOIN " TABLE_PREFIX "userfield as userfield ON (userfield.userid = user.userid) WHERE (userfield.field5='" $divname "') AND (user.username != '') AND (user.usergroupid NOT IN (1,3,4,7,8,20,21,23,45)) ORDER BY username");
    if (!
$mainusers){ die('Invalid query: ' mysql_error()); }
    
// Set the Users Array
    
$maingameusers = array();
    while (
$user mysql_fetch_array($mainusers)) {
        if (
$user[2] == null) { $ign "N/A"; } else { $ign $user[2]; }
        
$maingameusers[$user[0]] = $user[1] . "  -  " $divign ": " $ign;
    }

    
// Get Other Game Members
    
$otherusers $db->query_read_slave("SELECT user.userid, user.username, userfield. " $divfield " FROM " TABLE_PREFIX "user AS user LEFT JOIN " TABLE_PREFIX "userfield as userfield ON (userfield.userid = user.userid) WHERE (userfield.field5 != '" $divname "') AND (userfield.field6 & " . $+++++eck ") AND (user.username != '') AND (user.usergroupid NOT IN (1,3,4,7,8,20,21,23,45)) ORDER BY username");
    if (!
$otherusers){ die('Invalid query: ' mysql_error()); }
    
// Set the Users Aray
    
$othergameusers = array();
    while (
$user mysql_fetch_array($otherusers)) {
        if (
$user[2] == null) { $ign "N/A"; } else { $ign $user[2]; }
        
$othergameusers[$user[0]] = $user[1] . "  -  " $divign ": " $ign;
    }
    
    
////////////////////// select users to get points
    
print_form_header($this_script'divadd');
    
print_table_header('Add Points to ' $divname ' Members');
    
print_label_row('Event Type:''Select the event type (and point value) to give.');
    
print_select_row('Points''points'$pointreasons);
    
print_label_row('Main Users:''Select the Main-Game users who attended the event.');
    
print_select_row('Main Users''mainusers[]'$maingameusers,null,false,10,true);
    
print_label_row('Other Users:''Select the Other-Game users who attended the event.');
    
print_select_row('Other Users''otherusers[]'$othergameusers,null,false,10,true);
    
print_label_row('Note:''Hold the control key while clicking to select multiple names.');
    
print_submit_row('Add Points to Selected Users','Reset');
    


/////////////////////// add
if ( $_POST['do'] == 'add' ) {
   
    if ( !isset(
$_POST['points']) OR empty($_POST['users']) ) { rpm_print_stop_back('Please be sure every required field is filled out before submitting.'); }
   
    
$vbulletin->input->clean_array_gpc('p', array(
        
'points'         => TYPE_UNIT,
        
'users'          => TYPE_STR
        
));
    
    
$apoints $vbulletin->GPC['points'];
    if (
$apoints == 0) { $addpoints 10; }
    if (
$apoints == 1) { $addpoints 15; }
    if (
$apoints == 2) { $addpoints 20; }
    if (
$apoints == 3) { $addpoints 30; }
    
$ausers $db->escape_string($vbulletin->GPC['users']);
    
$addusers explode(";",$ausers);
    
$allusers "";
    
//$adate = date("Y-m-d");
    
    
foreach ($addusers as &$u) {
        
$user trim($u);
        
$sql "UPDATE " TABLE_PREFIX "user SET iga_points = iga_points + $addpoints, iga_lastpointsdate = NOW() WHERE username='$user'";
        
$db->query_write($sql);
        
$allusers .= "'$user',";
    }
    
    
// Get the userIDs
    
$allusers rtrim($allusers,",");
    
$alluserids $db->query_read_slave("SELECT userid FROM " TABLE_PREFIX "user WHERE username IN ($allusers)");
    if (!
$alluserids){ die('Invalid query: ' mysql_error()); }
    
    while (
$u mysql_fetch_array($alluserids)) {
        
$userids[] = $u[0];
    }
    
    
$allids serialize($userids);
    
    
// Add the Log
    
$sql "INSERT INTO " TABLE_PREFIX "igpointslog (date,staffid,type,points,userids) VALUES (NOW(),'$staffid','add',$addpoints,'$allids')";
    
$db->query_write($sql);
   
    
define('CP_REDIRECT''iga_points.php');
    
print_stop_message('iga_points_added');
}  

/////////////////////// add via division
if ( $_POST['do'] == 'divadd' ) {
   
    if ( !isset(
$_POST['points']) OR empty($_POST['mainusers']) ) { rpm_print_stop_back('Please be sure every required field is filled out before submitting.'); }
   
    
$vbulletin->input->clean_array_gpc('p', array(
        
'points'         => TYPE_UNIT,
        
'mainusers'      => TYPE_ARRAY,
        
'otherusers'     => TYPE_ARRAY
        
));
    
    
$apoints $vbulletin->GPC['points'];
    if (
$apoints == 0) { $addpoints 10; }
    if (
$apoints == 1) { $addpoints 15; }
    if (
$apoints == 2) { $addpoints 20; }
    if (
$apoints == 3) { $addpoints 30; }
    
$addmain $addother = array();
    
$addmain $vbulletin->GPC['mainusers'];
    
$addother $vbulletin->GPC['otherusers'];
    
$allusers serialize(array_merge($addmain,$addother));
    
//$adate = date("Y-m-d");
    
    // Main Gamers
    
foreach ($addmain as &$u) {
        
$sql "UPDATE " TABLE_PREFIX "user SET iga_points = iga_points + $addpoints, iga_lastpointsdate = NOW() WHERE userid=$u";
        
$db->query_write($sql);
    }
    
    
// Other Gamers
    
foreach ($addother as &$u) {
        
$sql "UPDATE " TABLE_PREFIX "user SET iga_points = iga_points + $addpoints, iga_lastpointsdate = NOW() WHERE userid=$u";
        
$db->query_write($sql);
    }
    
    
//Log the Entry
    
$sql "INSERT INTO " TABLE_PREFIX "igpointslog (date,staffid,type,points,userids) VALUES (NOW(),'$staffid','add',$addpoints,'$allusers')";
    
$db->query_write($sql);
   
    
define('CP_REDIRECT''iga_points.php');
    
print_stop_message('iga_points_added');
}  

/////////////////////// edit
if ( $_POST['do'] == 'edit' ) {
   
    if ( !isset(
$_POST['username']) ) { rpm_print_stop_back('Please be sure every required field is filled out before submitting.'); }
    
   
    
$vbulletin->input->clean_array_gpc('p', array(
        
'username'      => TYPE_STR
        
));
    
    
$edituser $db->escape_string($vbulletin->GPC['username']);
    
    
$sql "SELECT iga_points FROM " TABLE_PREFIX "user WHERE username = '$edituser'";
    
$result $db->query_read_slave($sql);
    
$cpoints mysql_result($result,0);
    
    
print_form_header($this_script'update');
    
print_table_header("Update ".$edituser."'s Points");
    echo 
"<input type='hidden' name='username' value='$edituser'>";
    
print_label_row('Note:''Points must be between 0 and 400.');
    
print_input_row('Points''points'$cpoints);
    
print_submit_row('Update Points');
}

/////////////////////// Update
if ( $_POST['do'] == 'update' ) {
   
    if ( empty(
$_POST['username']) OR !isset($_POST['points']) ) { rpm_print_stop_back('Please be sure every required field is filled out before submitting.'); }
   
    
$vbulletin->input->clean_array_gpc('p', array(
        
'username'  => TYPE_STR,
        
'points'    => TYPE_UNIT
        
));
    
    
$uuser $db->escape_string($vbulletin->GPC['username']);
    
$upoints $vbulletin->GPC['points'];
    
    
//$udate = date("Y-m-d");
    
    
if ($upoints or $upoints 400) {
        
define('CP_REDIRECT''iga_points.php');
        
print_stop_message('iga_points_val_error');
    } else {
        
$sql "UPDATE " TABLE_PREFIX "user SET iga_points=$upoints, iga_lastpointsdate=NOW() WHERE username = '$uuser'";
        
$db->query_write($sql);
        
        
//Get the UserID
        
$idquery $db->query_read_slave("SELECT userid FROM " TABLE_PREFIX "user WHERE username = '$uuser' limit 1");
        if (!
$idquery){ die('Invalid query: ' mysql_error()); }
        
$userid[] = mysql_result($idquery,0);
        
$editid serialize($userid);
        
        
//Log the Entry
        
$sql "INSERT INTO " TABLE_PREFIX "igpointslog (date,staffid,type,points,userids) VALUES (NOW(),'$staffid','edit',$upoints,'$editid')";
        
$db->query_write($sql);
        
        
define('CP_REDIRECT''iga_points.php');
        
print_stop_message('iga_points_updated'); 
    }
    

Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01254 seconds
  • Memory Usage 1,985KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete