View Single Post
  #1  
Old 07-26-2014, 07:02 PM
Dax IX Dax IX is offline
 
Join Date: Jul 2005
Posts: 153
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Custom Page: Permission based on age?

Please forgive me, I'm very new to PHP and vB programming.

For a custom page I'm creating, I'm trying to create access permissions based on a user's age.

For a function that I've placed in an external functions_*.php file, I've done what I *think* calculates the logged in user's age, but now I'm not so sure, because my access permissions aren't working. I've borrowed code from memberlist.php to calculate the user's age and return either their age or false.

PHP Code:
function calculate_age($userinfo)
{
    
    global 
$vbulletin;
    
    if (!isset(
$userinfo['birthday']))
    {
        return 
false;        
    } else {
        
        
$today_year vbdate('Y'TIMENOWfalsefalse);
        
$today_month vbdate('n'TIMENOWfalsefalse);
        
$today_day vbdate('j'TIMENOWfalsefalse);

        
$bday explode('-'$userinfo['birthday']);
        
        if (
date('Y') > $bday[2] AND $bday[2] > 1901 AND $bday[2] != '0000')
        {
            if (
$today_year $bday[2] AND $bday[2] != '0000')
            {
                
$userinfo['age'] = $today_year $bday[2];
                if (
$bday[0] > $today_month)
                {
                    
$userinfo['age']--;
                }
                else if (
$bday[0] == $today_month AND $today_day $bday[1])
                {
                    
$userinfo['age']--;
                }
            }
            else
            {
                return 
false;
            }
            
            if (!
$userinfo['age'] AND ($userinfo['age'] < 18))
            {
                return 
false;
            } else {
                return 
$userinfo['age'];
            }
        } else {
            return 
false;
        }
    }

Then, after including the function file, to try to calculate permissions based on the calculate_age() function, I used this:

PHP Code:
$age calculate_age($userinfo);

// access permissions
if ((!is_member_of($vbulletin->userinfo567)) OR ((!isset($age)) AND ($age != '$nbsp;')) OR ($age 18))  
{
// give no permission unless in usergroup x, y, or z
        
print_no_permission();

But, no matter what I do, I don't have permission to view this page's content.

Would anyone mind giving me some pointers as to where I'm going wrong?

Thanks!
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01255 seconds
  • Memory Usage 1,801KB
  • 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
  • (2)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