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 + -
显示快捷键?