register.php

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

PHP
1,948 行
字号
			$form_errors['email'][] = $this->ipsclass->lang['err_invalid_email'];		}				//-----------------------------------------		// Test email address		//-----------------------------------------				$this->ipsclass->input['EmailAddress_two'] = strtolower( trim($this->ipsclass->input['EmailAddress_two']) );		$this->ipsclass->input['EmailAddress']     = strtolower( trim($this->ipsclass->input['EmailAddress']) );				if ( $in_email AND $this->ipsclass->input['EmailAddress_two'] != $in_email)		{			$form_errors['email'][] = $this->ipsclass->lang['reg_error_email_nm'];		}				//-----------------------------------------		// More unicode..		//-----------------------------------------				$len_u = preg_replace("/&#([0-9]+);/", "-", $in_username );		$len_p = preg_replace("/&#([0-9]+);/", "-", $in_password );		$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 for errors in the input.		//-----------------------------------------				if ( ! $in_username OR strlen($len_u) < 3  OR strlen($len_u) > 32 )		{			$form_errors['username'][] = $this->ipsclass->lang['reg_error_username_none'];		}				if (! $in_password OR strlen($len_p) < 3  OR strlen($len_p) > 32 )		{			$form_errors['password'][] = $this->ipsclass->lang['reg_error_no_pass'];		}				if ($this->ipsclass->input['PassWord_Check'] != $in_password)		{			$form_errors['password'][] = $this->ipsclass->lang['reg_error_pass_nm'];		}				//-----------------------------------------		// CHECK 1: Any errors (missing fields, etc)?		//-----------------------------------------				if ( count( $form_errors ) )		{			$this->show_reg_form( $form_errors );			return;		}				//-----------------------------------------		// USERNAME: Is this name already taken?		//-----------------------------------------				$this->ipsclass->DB->cache_add_query( 'login_getmember', array( 'username' => strtolower($in_username) ) );		$this->ipsclass->DB->cache_exec_query();				$name_check = $this->ipsclass->DB->fetch_row();				if ( $name_check['id'] )		{			$form_errors['username'][] = $this->ipsclass->lang['reg_error_username_taken'];		}				//-----------------------------------------		// USERNAME: Special chars?		//-----------------------------------------				if ( $unicode_name != $in_username )		{			$this->ipsclass->DB->cache_add_query( 'login_getmember', array( 'username' => $this->ipsclass->DB->add_slashes(strtolower($unicode_name) ) ));			$this->ipsclass->DB->cache_exec_query();						$name_check = $this->ipsclass->DB->fetch_row();						if ($name_check['id'])			{				$form_errors['username'][] = $this->ipsclass->lang['reg_error_username_taken'];			}		}				//-----------------------------------------		// USERNAME: GUEST		//-----------------------------------------				if (strtolower($in_username) == 'guest')		{			$form_errors['username'][] = $this->ipsclass->lang['reg_error_username_taken'];		}				//-----------------------------------------		// USERNAME: 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", $in_username ) )				{					$form_errors['username'][] = $this->ipsclass->lang['reg_error_username_taken'];					break;				}			}		}				//-----------------------------------------		// DNAME		//-----------------------------------------				if ( $this->ipsclass->vars['auth_allow_dnames'] )		{			//-----------------------------------------			// Illegal characters			//-----------------------------------------						if ( preg_match( "#[\[\];,\|]#", str_replace('&#39;', "'", str_replace('&amp;', '&', $unicode_dname) ) ) )			{				$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'] )			{				$form_errors['dname'][] = $this->ipsclass->lang['reg_error_taken'];			}						//-----------------------------------------			// DNAME: Check for existing LOG IN name.			//-----------------------------------------						if ( $this->ipsclass->vars['auth_dnames_nologinname'] )			{				$this->ipsclass->DB->build_query( array( 'select' => "members_display_name, id",														 'from'   => 'members',														 'where'  => "LOWER(name)='".strtolower($members_display_name)."'",														 'limit'  => array( 0,1 ) ) );													 				$this->ipsclass->DB->exec_query();								if ( $this->ipsclass->DB->get_num_rows() )				{					$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'] )				{					$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??		//-----------------------------------------				if ( $this->ipsclass->converge->converge_check_for_member_by_email( $in_email ) == TRUE )		{			$form_errors['email'][] = $this->ipsclass->lang['reg_error_email_taken'];		}				//-----------------------------------------		// Are they banned [IP]?		//-----------------------------------------				if ( is_array( $banfilters['ip'] ) and count( $banfilters['ip'] ) )		{			foreach ($banfilters['ip'] as $ip)			{				$ip = str_replace( '\*', '.*', preg_quote($ip, "/") );								if ( preg_match( "/^$ip/", $this->ipsclass->input['IP_ADDRESS'] ) )				{					$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'you_are_banned', 'INIT' => 1 ) );				}			}		}				//-----------------------------------------		// Are they banned [EMAIL]?		//-----------------------------------------				if ( is_array( $banfilters['email'] ) and count( $banfilters['email'] ) )		{			foreach ( $banfilters['email'] as $email )			{				$email = str_replace( "\*", '.*' , preg_quote($email, "/") );								if ( preg_match( "/$email/", $in_email ) )				{					$form_errors['email'][] = $this->ipsclass->lang['reg_error_email_ban'];					break;				}			}		}				//-----------------------------------------		// Check the reg_code		//-----------------------------------------				if ($this->ipsclass->vars['bot_antispam'])		{			if ( $this->ipsclass->input['regid'] == "" )			{				$form_errors['general'][] = $this->ipsclass->lang['err_reg_code'];			}						$this->ipsclass->DB->simple_construct( array( 'select' => '*',														  'from'   => 'reg_antispam',														  'where'  => "regid='".trim(addslashes($this->ipsclass->input['regid']))."'"												 )      );								 			$this->ipsclass->DB->simple_exec();						if ( ! $row = $this->ipsclass->DB->fetch_row() )			{				$form_errors['general'][] = $this->ipsclass->lang['err_reg_code'];			}						if ( trim( intval($this->ipsclass->input['reg_code']) ) != $row['regcode'] )			{				$form_errors['general'][] = $this->ipsclass->lang['err_reg_code'];			}						$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'reg_antispam', 'where' => "regid='".trim(addslashes($this->ipsclass->input['regid']))."'" ) );		}				//-----------------------------------------		// CHECK 2: Any errors (duplicate names, etc)?		//-----------------------------------------				if ( count( $form_errors ) )		{			$this->show_reg_form( $form_errors );			return;		}				//-----------------------------------------		// Build up the hashes		//-----------------------------------------				$mem_group = $this->ipsclass->vars['member_group'];				//-----------------------------------------		// Are we asking the member or admin to preview?		//-----------------------------------------				if ( $this->ipsclass->vars['reg_auth_type'] )		{			$mem_group = $this->ipsclass->vars['auth_group'];		}		else if ($coppa == 1)		{			$mem_group = $this->ipsclass->vars['auth_group'];		}		else if ( $this->ipsclass->vars['subsm_enforce'] )		{			$mem_group = $this->ipsclass->vars['subsm_nopkg_group'];		}				$member = array(						 'name'                 => $in_username,						 'members_display_name' => $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username,						 'member_login_key'     => $this->ipsclass->converge->generate_auto_log_in_key(),						 'email'                => $in_email,						 'mgroup'               => $mem_group,						 'posts'                => 0,						 'joined'               => time(),						 'ip_address'           => $this->ipsclass->input['IP_ADDRESS'],						 'time_offset'          => $this->ipsclass->input['time_offset'],						 'view_sigs'            => 1,						 'email_pm'             => 1,						 'view_img'             => 1,						 'view_avs'             => 1,						 'restrict_post'        => 0,						 'view_pop'             => 1,						 'msg_total'            => 0,						 'new_msg'              => 0,						 'coppa_user'           => $coppa,						 'language'             => $this->ipsclass->vars['default_language'],						 'members_auto_dst'     => 1,						 'allow_admin_mails'    => intval( $this->ipsclass->input['allow_admin_mail'] ),						 'hide_email'           => $this->ipsclass->input['allow_member_mail'] ? 0 : 1,						 'subs_pkg_chosen'      => intval( $this->ipsclass->input['subspackage'] )					   );				//-----------------------------------------		// Insert: CONVERGE		//-----------------------------------------				$salt     = $this->ipsclass->converge->generate_password_salt(5);		$passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, md5($in_password) );					   		$converge = array( 'converge_email'     => $in_email,						   'converge_joined'    => time(),						   'converge_pass_hash' => $passhash,						   'converge_pass_salt' => str_replace( '\\', "\\\\", $salt )						 );					   		$this->ipsclass->DB->do_insert( 'members_converge', $converge );				//-----------------------------------------		// Get converges auto_increment user_id		//-----------------------------------------				$member_id    = $this->ipsclass->DB->get_insert_id();		$member['id'] = $member_id;				//-----------------------------------------		// Insert: MEMBERS		//-----------------------------------------				$this->ipsclass->DB->force_data_type = array( 'name' => 'string' );									  		$this->ipsclass->DB->do_insert( 'members', $member );				//-----------------------------------------		// Insert: MEMBER EXTRA		//-----------------------------------------				$this->ipsclass->DB->do_insert( 'member_extra', array( 'id' => $member_id, 'vdirs' => 'in:Inbox|sent:Sent Items' ) );				//-----------------------------------------		// Insert into the custom profile fields DB		//--------------------------------------

⌨️ 快捷键说明

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