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(''', "'", str_replace('&', '&', $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 + -
显示快捷键?