Action disabled: source
software:whmcs:session-upw
Table of Contents
WHMCS - How to generate the upw session variable
Version 5.1.2 or newer
As of version 5.1.2 WHMCS added an extra salt bit to the UPW hash and also uses sha1 for the hash. The salt is taken from the CC encryption hash.
<?php
// WHMCS configuration file
require_once('path/to/whmcs/configuration.php');
// DB connection
$dbh = mysql_connect($db_host,$db_username,$db_password) or die('MySQL connection failed');
mysql_select_db($db_name, $dbh) or die('Failed to select whmcs_dbname database');
// Get user info (in this case user id 1)
$query = sprintf("SELECT * FROM `tblclients` WHERE userid = %d", 1);
$result = mysql_query($query, $dbh);
if($result === FALSE) die("Query Failed: " . mysql_error());
$userRow = mysql_fetch_assoc($result);
// Start a session if one hasnt already been started
if(!session_id()) session_start();
// Set Session data
$_SESSION['uid'] = $userRow['id'];
$_SESSION['upw'] = sha1($userRow['id'] . $userRow['password'] . $_SERVER['REMOTE_ADDR'] . substr(sha1($cc_encryption_hash),0,20));
?>
Version 5.0.3 and older
Below is code showing how the upw session variable is generated on a WHMCS install
<?php
// DB connection
$dbh = mysql_connect('localhost','user','pass') or die('MySQL connection failed');
mysql_select_db('whmcs_dbname', $dbh) or die('Failed to select whmcs_dbname database');
// Get user info (in this case user id 1)
$query = sprintf("SELECT * FROM `tblclients` WHERE userid = %d", 1);
$result = mysql_query($query, $dbh);
if($result === FALSE) die("Query Failed: " . mysql_error());
$userRow = mysql_fetch_assoc($result);
// Start a session if one hasnt already been started
if(!session_id()) session_start();
// Set Session data
$_SESSION['uid'] = $userRow['id'];
$_SESSION['upw'] = md5($userRow['id'] . $userRow['password'] . $_SERVER['REMOTE_ADDR']);
?>
software/whmcs/session-upw.txt · Last modified: by shaun.reitan
