// Init random number/cache buster
function FILTER_INIT_RANDOM_NUMBER () {
// Is the extension ext-sql_patches installed and at least 0.3.6?
- if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (isExtensionInstalledAndNewer('other', '0.2.5'))) {
+ if (isSessionVariableSet('random_number')) {
+ // Then set it
+ setConfigEntry('RAND_NUMBER', getSession('random_number'));
+ } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (isExtensionInstalledAndNewer('other', '0.2.5'))) {
// Generate random number
setConfigEntry('RAND_NUMBER', generateRandomCode(10, mt_rand(10000, 99999), getMemberId(), ''));
} else {
setConfigEntry('RAND_NUMBER', mt_rand(1000000, 9999999));
}
+ // Set it in session for faster script execusion
+ setSession('random_number', getConfig('RAND_NUMBER'));
+
// Copy it to CACHE_BUSTER
setConfigEntry('CACHE_BUSTER', getConfig('RAND_NUMBER'));
}
// Encode URL
$encodedUrl = encodeString(compileUriCode($url));
- // Log plain URL
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url);
+ // Generate hash
+ $hash = generateHash($url . getSiteKey() . getDateKey());
+
+ // Log plain URL and hash
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url . ',hash=' . $hash . '(' . strlen($hash) . ')');
// De-refer this URL
- $url = '{%url=modules.php?module=loader&url=' . $encodedUrl . '&hash=' . encodeHashForCookie(generateHash($url . getSiteKey() . getDateKey())) . '%}';
+ $url = '{%url=modules.php?module=loader&url=' . $encodedUrl . '&hash=' . encodeHashForCookie($hash) . '&salt=' . substr($hash, 0, getSaltLength()) . '%}';
} // END - if
// Return link
} // END - if
// Is an URL specified?
-if ((isGetRequestElementSet('url')) && (isGetRequestElementSet('hash'))) {
+if ((isGetRequestElementSet('url')) && (isGetRequestElementSet('hash')) && (isGetRequestElementSet('salt'))) {
// Decode URL
$decodedUrl = decodeString(str_replace(' ', '+', compileUriCode(urldecode(getRequestElement('url')))));
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'decodedUrl=' . $decodedUrl . ',hash=' . getRequestElement('hash'));
// Generate hash for comparing it
- $hash = encodeHashForCookie(generateHash($decodedUrl . getSiteKey() . getDateKey(), getRequestElement('hash')));
+ $hash = encodeHashForCookie(generateHash($decodedUrl . getSiteKey() . getDateKey(), getRequestElement('salt')));
// Debug message
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'decodedUrl=' . $decodedUrl . ',hash=' . $hash);