echo create_account("new", "1", "asd@bdf.ru"); 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' => "127.0.0.1", '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 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 ibf_members SET id = ?, name = ?, member_login_key = ?, email = ?, mgroup = ?, joined =?, members_display_name = ?', $member['id'], $member['name'], $member['member_login_key'], $member['email'], $member['mgroup'], $member['joined'], $member['members_display_name'] ) 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']; } /*-------------------------------------------------------------------------*/ // Generate password /*-------------------------------------------------------------------------*/ /** * Generates a compiled passhash * * Returns a new MD5 hash of the supplied salt and MD5 hash of the password * * @param string User's salt (5 random chars) * @param string User's MD5 hash of their password * @return string MD5 hash of compiled salted password */ function generate_compiled_passhash($salt, $md5_once_password) { return md5( md5( $salt ) . $md5_once_password ); } /*-------------------------------------------------------------------------*/ // Generate SALT /*-------------------------------------------------------------------------*/ /** * Generates a password salt * * Returns n length string of any char except backslash * * @param integer Length of desired salt, 5 by default * @return string n character random string */ function generate_password_salt($len=5) { $salt = ''; //srand( (double)microtime() * 1000000 ); // PHP 4.3 is now required ^ not needed for ( $i = 0; $i < $len; $i++ ) { $num = rand(33, 126); if ( $num == '92' ) { $num = 93; } $salt .= chr( $num ); } return $salt; } /*-------------------------------------------------------------------------*/ // Generate auto log in key (MD5 hash of random 60 char string /*-------------------------------------------------------------------------*/ /** * Generates a log in key * * @param integer Length of desired random chars to MD5 * @return string MD5 hash of random characters */ function generate_auto_log_in_key($len=60) { $pass = generate_password_salt( $len ); return md5($pass); } function make_password() { $pass = ""; // Want it random you say, eh? // (enter evil laugh) $unique_id = uniqid( mt_rand(), TRUE ); $prefix = generate_password_salt(); $unique_id .= md5( $prefix ); usleep( mt_rand(15000,1000000) ); // Hmm, wonder how long we slept for 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; } |