function create_account($username, $password, $email) { $member = array( 'name' => $username, 'members_l_username' => $username, 'members_display_name' => $username, 'members_l_display_name' => $username, 'member_login_key' => generate_auto_log_in_key(), 'email' => $email, 'mgroup' => 3, 'posts' => 0, 'joined' => time(), 'ip_address' => get_user_ip(), 'time_offset' => 0, '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' => 0, 'language' => "ru", 'members_auto_dst' => 1, 'members_editor_choice' => "std", 'allow_admin_mails' => 1, 'hide_email' => 0, 'subs_pkg_chosen' => 0 ); $salt = generate_password_salt(5); $passhash = generate_compiled_passhash( $salt, md5($password) ); $converge = array( 'converge_email' => $email, 'converge_joined' => time(), 'converge_pass_hash' => $passhash, 'converge_pass_salt' => str_replace( '\\', "\\\\", $salt ) ); mysql_qw("INSERT INTO exlim_forum.ibf_members_converge SET converge_email = ?, converge_joined = ?, converge_pass_hash = ?, converge_pass_salt = ?", $email, time(), $passhash, str_replace( '\\', "\\\\", $salt ) ) or die(mysql_error()); $member['id'] = mysql_insert_id(); mysql_qw('INSERT INTO exlim_forum.ibf_members SET id = ?, name = ?, member_login_key = ?, email = ?, mgroup = ?, joined =?, members_l_display_name = ?, members_l_username = ?, members_display_name = ?', $member['id'], $member['name'], $member['member_login_key'], $member['email'], $member['mgroup'], $member['joined'], $member['members_display_name'], $member['members_l_username'], $member['members_display_name'] ) or die(mysql_error()); $result = mysql_qw("SELECT cs_value FROM exlim_forum.ibf_cache_store WHERE cs_key='stats'") or die(mysql_error()); $data = mysql_fetch_array($result); $cache = unserialize($data['cs_value']); $cache['last_mem_name'] = $member['name']; $cache['last_mem_id'] = $member['id']; $cache['mem_count'] += 1; mysql_qw("REPLACE INTO exlim_forum.ibf_cache_store SET cs_key='stats', cs_value='" . serialize($cache) . "', cs_array = 1") or die(mysql_error()); /*$validate_key = md5( make_password() . time() ); $time = time(); mysql_qw('INSERT INTO ibf_validating SET vid = ?, member_id = ?, real_group = ?, temp_group = ?, entry_date = ?, coppa_user = ?, new_reg = ?, ip_address = ?', $validate_key, $member['id'], 3, 3, $time, 0, 1, $_SERVER['REMOTE_ADDR'] ) or die(mysql_error()); */ return $member['id']; } function generate_compiled_passhash($salt, $md5_once_password) { return md5( md5( $salt ) . $md5_once_password ); } function generate_password_salt($len=5) { $salt = ''; for ( $i = 0; $i < $len; $i++ ) { $num = rand(33, 126); if ( $num == '92' ) { $num = 93; } $salt .= chr( $num ); } return $salt; } function generate_auto_log_in_key($len=60) { $pass = generate_password_salt( $len ); return md5($pass); } function make_password() { $pass = ""; $unique_id = uniqid( mt_rand(), TRUE ); $prefix = generate_password_salt(); $unique_id .= md5( $prefix ); usleep( mt_rand(15000,1000000) ); mt_srand( (double)microtime()*1000000 ); $new_uniqueid = uniqid( mt_rand(), TRUE ); $final_rand = md5( $unique_id.$new_uniqueid ); mt_srand(); // Wipe out the seed for ($i = 0; $i < 15; $i++) { $pass .= $final_rand{ mt_rand(0, 31) }; } return $pass; } |