Somebody said I could pay to get an export list of my Joomla users. I said Joomla is a FREE OpenSource system, why?
Why?
I want to move a client's list of Joomla users to a new system which allows the passwords to be in MD5. All I want is a quick bit of code to get all the users out of a Joomla CMS.
How?
I could just type a query on the database and get the same result, but this script was more fun. Simply create a text file with the following code and upload it to the root of your Joomla website. Access the page from a browser and you should get all your users listed... For security reasons, delete the file after you have used it.
IT IS A SERIOUSLY BAD IDEA TO LEAVE THIS FILE ON YOUR WEBSITE FOR ANYONE TO ACCESS!!! DELETE IT AFTER USE.
<?php
// init Joomla Framework
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__) )); // print this out or observe errors to see which directory you should be in (this is two subfolders in)
define( 'DS', '/' );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_CONFIGURATION .DS.'configuration.php' );
require_once ( JPATH_LIBRARIES .DS.'joomla'.DS.'database'.DS.'database.php' );
require_once ( JPATH_LIBRARIES .DS.'joomla'.DS.'access'.DS.'access.php' );
require_once ( JPATH_LIBRARIES .DS.'import.php' );
// DB Connection
$Config = new JConfig();
$db_driver = $Config->dbtype; // Database driver name
$db_host = $Config->host; // Database host name
$db_user = $Config->user; // User for database authentication
$db_pass = $Config->password; // Password for database authentication
$db_name = $Config->db; // Database name
$db_prefix = $Config->dbprefix; // Database prefix (may be empty)
// Database prefix (if empty then remove prefixing double underscore)
$db_prefix = (trim($db_prefix)=='') ? '':$db_prefix;
// Connect to the database
$db_link = mysqli_connect($db_host,$db_user,$db_pass,$db_name) or die('Error connecting to the database' . mysqli_error($db_link));
// Create a query
$list_this_many = 100;
$userlist_query = 'SELECT `id` FROM `'.$db_prefix.'users` ORDER BY `registerDate` LIMIT 0, '.$list_this_many;
$output = '<html>
<head>
<title>Joes Joomla Users script</title>
<style>
body{font-family:Verdana;font-size:75%;}
table{width:100%;}
th{text-align:left;padding:2px;font-size:75%;}
td{white-space:nowrap;padding:2px;font-size:75%;}
div{font-weight:700;}
.even{background-color:#eee;}
</style>
</head><body>';
$output .= '<h1>Users in `'.$db_prefix.'users`</h1><table>';
$output .= '<tr><th>Name</th><th>Username</th><th>Password</th><th>Salt</th><th>E-mail</th><th>Created</th><th>Usergroups</th><th>Blocked</th><th>Reset Count</th></tr>';
$user_count = 0;
// Execute the query
if ($userlist_result = mysqli_query($db_link, $userlist_query)){
// Return results
while($user_row = mysqli_fetch_array($userlist_result)) {
// single this user out
$this_user_id = $user_row['id'] * 1;
// change background for alternating rows
$bg_class=($bg_class=='')?' class="even"':'';
// use Joomla library to get user details
$selected_user = JFactory::getUser($this_user_id);
// split the joomla password to recover the MD5
$password_salt = explode(':', $selected_user->password);
$pass = $password_salt[0];
$salt = $password_salt[1];
// add the record to our output
$output .=
'<tr'.$bg_class.'><td>'.
$selected_user->name.'</td><td>'.
$selected_user->username.'</td><td>'.
$pass.'</td><td>'.
$salt.'</td><td>'.
$selected_user->email.'</td><td>'.
$selected_user->registerDate.'</td><td>'.
'['.implode('][', $selected_user->groups).']</td><td>'.
$selected_user->block.'</td><td>'.
$selected_user->resetCount.'</td></tr>';
// for auditing purposes (displays at bottom of page)
$user_count++;
}
}
// close off output
$output .= '</table><br />';
$output .= '<div>Total User(s): '.$user_count.'</div>';
$output .= '</body></html>';
// print out output
echo $output;
// free up results
mysqli_free_result($userlist_result);
?>
Category: Joomla :: Article: 550



Add comment