prefix; while ($checkPreExists) { $prelength = rand(3,5); $newPrefix = substr(md5(rand()), rand(0, (32 - $prelength)), $prelength) . '_'; $checkPreExists = $wpdb->get_results('SHOW TABLES LIKE "' . $newPrefix . '%";', ARRAY_N); } $tables = $wpdb->get_results('SHOW TABLES LIKE "' . $wpdb->prefix . '%"', ARRAY_N); if ($tables) { $tablesCopied = array(); foreach ($tables as $table) { $table = substr($table[0], strlen($wpdb->prefix), strlen($table[0])); $sql = 'CREATE TABLE `' . $newPrefix . $table . '`LIKE `' . $wpdb->prefix . $table . '`;'; $createTable = $wpdb->query($sql); if ($createTable === false) { if (!$errorHandler) { $errorHandler = new WP_Error(); } $errorHandler->add("2", __("Could not create table.", 'better-wp-security')); } else { $sql = 'INSERT INTO `' . $newPrefix . $table . '` SELECT * FROM `' . $wpdb->prefix . $table . '`;'; $popTable = $wpdb->query($sql); if ($popTable === false) { if (!$errorHandler) { $errorHandler = new WP_Error(); } $errorHandler->add("2", __("Could not copy table.", 'better-wp-security')); } else { $tablesCopied[] = $table; } } } if (count($tablesCopied) == count($tables)) { $sql = 'UPDATE `' . $newPrefix . 'options` SET `option_name` = "' . $newPrefix . 'user_roles" WHERE `option_name` = "' . $wpdb->prefix . 'user_roles" LIMIT 1;'; $upOpts = $wpdb->query($sql); if ($upOpts === FALSE) { if (!$errorHandler) { $errorHandler = new WP_Error(); } $errorHandler->add("2", __("Could not update prefix refences in options table.", 'better-wp-security')); } else { $fields = array( 'user_level', 'capabilities', 'autosave_draft_ids' ); foreach ($fields as $field) { $sql = 'UPDATE `' . $newPrefix . 'usermeta` SET `meta_key` = "' . $newPrefix . 'capabilities" WHERE `meta_key` = "' . $wpdb->prefix . 'capabilities" LIMIT 1;'; $upMeta = $wpdb->query($sql); if ($upMetar === FALSE) { if (!$errorHandler) { $errorHandler = new WP_Error(); } $errorHandler->add("2", __("Could not update prefix refences in usermeta table.", 'better-wp-security')); } } } } } $tables = $wpdb->get_results('SHOW TABLES LIKE "' . $wpdb->prefix . '%"', ARRAY_N); if ($tables) { $tablesDropped = array(); foreach ($tables as $table) { $table = $table[0]; $dropTable = $wpdb->query('DROP TABLE `' . $table . '`;'); if ($dropTabler === FALSE) { if (!$errorHandler) { $errorHandler = new WP_Error(); } $errorHandler->add("2", __("Could not drop table.", 'better-wp-security')); } else { $tablesDropped[] = $table; } } } $conf_f = trailingslashit(ABSPATH).'/wp-config.php'; chmod($conf_f, 0755); $handle = @fopen($conf_f, "r+"); if ($handle) { while (!feof($handle)) { $lines[] = fgets($handle, 4096); } fclose($handle); $handle = @fopen($conf_f, "w+"); foreach ($lines as $line) { if (strpos($line, $wpdb->prefix)) { $line = str_replace($wpdb->prefix, $newPrefix, $line); } fwrite($handle, $line); } fclose($handle); } if (isset($errorHandler)) { echo '
' . $errorHandler->get_error_message() . '
' . __('Database Prefix Changed.', 'better-wp-security') . '
wp_.
prefix; } ?>