register.php

来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 1,948 行 · 第 1/5 页

PHP
1,948
字号
<?php/*+--------------------------------------------------------------------------|   Invision Power Board v2.1.5|   =============================================|   by Matthew Mecham|   (c) 2001 - 2005 Invision Power Services, Inc.|   |   =============================================|   Web: |   Time: Wed, 01 Mar 2006 19:11:27 GMT|   Release: |   Licence Info: +---------------------------------------------------------------------------|   > $Date: 2006-01-12 17:57:22 +0000 (Thu, 12 Jan 2006) $|   > $Revision: 124 $|   > $Author: bfarber $+---------------------------------------------------------------------------||   > Registration functions|   > Module written by Matt Mecham|   > Date started: 16th February 2002||	> Module Version Number: 1.0.0|   > Quality Checked: Wed 15 Sept. 2004+--------------------------------------------------------------------------*/if ( ! defined( 'IN_IPB' ) ){	print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";	exit();}class register {    var $output     = "";    var $page_title = "";    var $nav        = array();    var $html       = "";    var $email      = "";    var $modules    = "";        function auto_run()    {		//-----------------------------------------    	// Require the HTML and language modules    	//-----------------------------------------    			$this->ipsclass->load_language('lang_register');    	$this->ipsclass->load_template('skin_register');    	    	$this->base_url        = $this->ipsclass->base_url;    	$this->base_url_nosess = "{$this->ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}";    	    	//-----------------------------------------    	// Get the emailer module		//-----------------------------------------				require ROOT_PATH."sources/classes/class_email.php";				$this->email = new emailer();		$this->email->ipsclass =& $this->ipsclass;		$this->email->email_init();				if ( USE_MODULES == 1 )		{			require ROOT_PATH."modules/ipb_member_sync.php";						$this->modules = new ipb_member_sync();			$this->modules->ipsclass =& $this->ipsclass;		}				//-----------------------------------------		// Board offline?		//-----------------------------------------				if ($this->ipsclass->vars['board_offline'] == 1)		{			if ($this->ipsclass->member['g_access_offline'] != 1)			{				$this->ipsclass->vars['no_reg'] = 1;			}		}    	    	//-----------------------------------------    	// What to do?    	//-----------------------------------------    	    	switch($this->ipsclass->input['CODE'])    	{    		case '02':    			$this->create_account();    			break;    			    		case '03':    			$this->validate_user();    			break;    		case '05':    			$this->show_manual_form();    			break;    			    		case '06':    			$this->show_manual_form('lostpass');    			break;    			    		case 'lostpassform':    			$this->show_manual_form('lostpass');    			break;    			    		case '07':    			$this->show_manual_form('newemail');    			break;    			    		case '10':    			$this->lost_password_start();    			break;    		case '11':    			$this->lost_password_end();    			break;    			    		case '12':    			$this->coppa_perms_form();    			break;    			    		case 'coppa_two':    			$this->coppa_two();    			break;    			    		case 'image':    			$this->show_image();    			break;    			    		case 'reval':    			$this->revalidate_one();    			break;    			    		case 'reval2':    			$this->revalidate_two();    			break;						case 'complete_login':				$this->complete_login_form();				break;			case 'complete_login_do':				$this->complete_login_save();				break;				    		default:    			if ($this->ipsclass->vars['use_coppa'] == 1 and $this->ipsclass->input['coppa_pass'] != 1)    			{    				$this->coppa_start();    			}    			else    			{    				$this->show_reg_form();    			}    			break;    	}    	    	//-----------------------------------------    	// If we have any HTML to print, do so...    	//-----------------------------------------    	    	$this->ipsclass->print->add_output("$this->output");        $this->ipsclass->print->do_output( array( 'TITLE' => $this->page_title, 'JS' => 0, NAV => $this->nav ) ); 	} 	 	/*-------------------------------------------------------------------------*/	// Save login information	/*-------------------------------------------------------------------------*/		function complete_login_save()	{		//-----------------------------------------		// INIT		//-----------------------------------------				$mid                  = intval( $this->ipsclass->input['mid'] );		$key                  = intval( $this->ipsclass->input['key'] );		$in_email             = strtolower( trim($this->ipsclass->input['EmailAddress']) );		$banfilters           = array();		$form_errors          = array();		$members_display_name = trim( $this->ipsclass->input['members_display_name'] );		$poss_session_id      = "";				//-----------------------------------------		// Get DB row		//-----------------------------------------				$reg        = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members_partial', 'where' => "partial_member_id={$mid} AND partial_date={$key}" ) );		$tmp_member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members', 'where' => "id={$mid}" ) );				//-----------------------------------------		// Got it?		//-----------------------------------------				if ( ! $reg['partial_id'] OR ! $tmp_member['id'] )		{			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'data_incorrect' ) );		}				//-----------------------------------------		// Load ban filters		//-----------------------------------------				$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'banfilters' ) );		$this->ipsclass->DB->simple_exec();				while( $r = $this->ipsclass->DB->fetch_row() )		{			$banfilters[ $r['ban_type'] ][] = $r['ban_content'];		}				//-----------------------------------------		// Check		//-----------------------------------------				if ($this->ipsclass->vars['no_reg'] == 1)    	{    		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'reg_off' ) );    	}    			//-----------------------------------------		// Custom profile field stuff		//-----------------------------------------				require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );    	$fields = new custom_fields( $this->ipsclass->DB );        	$fields->cache_data  = $this->ipsclass->cache['profilefields'];    	    	$fields->init_data();    	$fields->parse_to_save( 1 );				//-----------------------------------------		// Check...		//-----------------------------------------				if ( count( $fields->error_fields['empty'] ) )		{			$form_errors['general'][] = $this->ipsclass->lang['err_complete_form'];		}				if ( count( $fields->error_fields['invalid'] ) )		{			$form_errors['general'][] = $this->ipsclass->lang['err_invalid'];		}				if ( count( $fields->error_fields['toobig'] ) )		{			$form_errors['general'][] = $this->ipsclass->lang['err_cf_to_long'];		}				//-----------------------------------------		// Remove 'sneaky' spaces		//-----------------------------------------				if ( $this->ipsclass->vars['strip_space_chr'] )    	{			$members_display_name = str_replace( chr(160), ' ', $members_display_name );			$members_display_name = str_replace( chr(173), ' ', $members_display_name );		}				//-----------------------------------------		// Test unicode name too		//-----------------------------------------				$unicode_dname = preg_replace('/&#([0-9]+);/esi', "chr('\\1')", $members_display_name);				//-----------------------------------------		// Check the email address		//-----------------------------------------				$in_email = $this->ipsclass->clean_email($in_email);				//-----------------------------------------		// Test email address		//-----------------------------------------				$this->ipsclass->input['EmailAddress_two'] = strtolower( trim($this->ipsclass->input['EmailAddress_two']) );				if ($this->ipsclass->input['EmailAddress_two'] != $in_email)		{			$form_errors['email'][] = $this->ipsclass->lang['reg_error_email_nm'];		}				//-----------------------------------------		// More unicode..		//-----------------------------------------			$len_d = preg_replace("/&#([0-9]+);/", "-", $members_display_name );				//-----------------------------------------		// Test dname		//-----------------------------------------				if ( $this->ipsclass->vars['auth_allow_dnames'] )		{			if ( ! $members_display_name OR strlen($len_d) < 2  OR strlen($len_d) > 32 )			{				$form_errors['dname'][] = $this->ipsclass->lang['reg_error_no_name'];			}		}				//-----------------------------------------		// CHECK 1: Any errors (missing fields, etc)?		//-----------------------------------------				if ( count( $form_errors ) )		{			$this->complete_login_form( $form_errors );			return;		}				if ( $this->ipsclass->vars['auth_allow_dnames'] )		{			//-----------------------------------------			// DNAME: Illegal characters			//-----------------------------------------						if ( preg_match( "#[\[\];,\|]#", $members_display_name ) )			{				$form_errors['dname'][] = $this->ipsclass->lang['reg_error_chars'];			}					//-----------------------------------------			// DNAME: Is this name already taken?			//-----------------------------------------						$this->ipsclass->DB->cache_add_query( 'general_get_by_display_name', array( 'members_display_name' => strtolower($members_display_name) ) );			$this->ipsclass->DB->cache_exec_query();						$name_check = $this->ipsclass->DB->fetch_row();						if ( $name_check['id'] AND $name_check['id'] != $mid )			{				$form_errors['dname'][] = $this->ipsclass->lang['reg_error_taken'];			}						//-----------------------------------------			// DNAME: Special chars?			//-----------------------------------------						if ( $unicode_dname != $members_display_name )			{				$this->ipsclass->DB->cache_add_query( 'general_get_by_display_name', array( 'members_display_name' => $this->ipsclass->DB->add_slashes(strtolower($unicode_dname) ) ));				$this->ipsclass->DB->cache_exec_query();								$name_check = $this->ipsclass->DB->fetch_row();								if ( $name_check['id'] AND $name_check['id'] != $mid )				{					$form_errors['dname'][] = $this->ipsclass->lang['reg_error_taken'];				}			}						//-----------------------------------------			// DNAME: Banned?			//-----------------------------------------						if ( is_array( $banfilters['name'] ) and count( $banfilters['name'] ) )			{				foreach ( $banfilters['name'] as $n )				{					$n = preg_replace( "/\*/", '.*' ,  preg_quote($n, "/") );										if ( $n AND preg_match( "/$n/i", $members_display_name ) )					{						$form_errors['dname'][] = $this->ipsclass->lang['reg_error_taken'];						break;					}				}			}						//-----------------------------------------			// DNAME: GUEST			//-----------------------------------------						if (strtolower($members_display_name) == 'guest')			{				$form_errors['dname'][] = $this->ipsclass->lang['reg_error_taken'];			}		}				//-----------------------------------------		// Is this email addy taken? CONVERGE THIS??		//-----------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?