function generateDerefererUrl ($url) {
// Don't de-refer our own links!
if (substr($url, 0, strlen(getUrl())) != getUrl()) {
- // De-refer this link
- $url = '{%url=modules.php?module=loader&url=' . encodeString(compileUriCode($url)) . '%}';
+ // Encode URL
+ $encodedUrl = encodeString(compileUriCode($url));
+
+ // Log plain URL
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url);
+
+ // De-refer this URL
+ $url = '{%url=modules.php?module=loader&url=' . $encodedUrl . '&hash=' . encodeHashForCookie(generateHash($url)) . '%}';
} // END - if
// Return link
$len = $length;
} // END - if
- if ($len == '0') {
+ // Smaller 1 is not okay
+ if ($len < 1) {
+ // Fix it to 10
$len = 10;
} // END - if
// Call the multi-parameter call-back
$ret = call_user_func_array($filterFunction, $args);
+
+ // Is $ret 'true'?
+ if ($ret === true) {
+ // Test passed, so write direct value
+ $ret = $args;
+ } // END - if
} else {
// One parameter call
$ret = call_user_func($filterFunction, $value);
+
+ // Is $ret 'true'?
+ if ($ret === true) {
+ // Test passed, so write direct value
+ $ret = $value;
+ } // END - if
}
} // END - if
} // END - if
$str = str_replace('.', '', $str);
// Replace german commata with decimal dot and cast it
- $float = (float)str_replace(',', '.', $str);
+ $float = (float) str_replace(',', '.', $str);
break;
default: // US and so on
// Remove thousand commatas first and cast
- $float = (float)str_replace(',', '', $str);
+ $float = (float) str_replace(',', '', $str);
break;
} // END - switch
'ADMIN_CONFIG_ENTRY_MISSING' => "Konnte den Konfigurationseintrag %s nicht finden. Muss eventuell ein Erweitertungsupdate noch ausgeführt oder eine fehlende Erweiterung installiert werden?",
'ADMIN_ENTRY_ADDED' => "Der Eintrag wurde der Datenbank hinzugefügt.",
'ADMIN_ENTRY_NOT_ADDED' => "Der Eintrag wurde der Datenbank NICHT hinzugefügt.",
+ 'MEMBER_ENTRY_ADDED' => "Der Eintrag wurde soeben hinzugefügt.",
+ 'MEMBER_ENTRY_NOT_ADDED' => "Der Eintrag wurde NICHT hinzugefügt, da er vermutlich bereits existiert. Falls Sie der Meinung sind, dass dies ein Fehler ist, wenden Sie sich an den Support und teilen Sie mit, wie es zu dieser Meldung gekommen ist.",
'BONUS_EXTENSION_UPGRADE' => "Bitte aktualisieren Sie Ihre Bonus-Erweiterung auf Version <span class=\"data\">v0.2.2</span> oder neuer.",
'WHAT_IS_WELCOME' => "Willkommen",
'_ON' => "an",
'MEMBER_YOUR_REFID_IS' => "Sie wurden geworben von",
'ADMIN_CONFIG_ADMIN_MENU_NOTICE' => "Das Menüsystem mit "logischen Bereichen" ist noch nicht fertig und führt zu Fehlern. Bitte dieses nur im Template aktivieren, wenn Sie daran mitprogrammieren wollen.",
'UNKNOWN_ERROR_CODE' => "Unbekannter Fehlercode <span class=\"data\">0x{%%pipe,getHexErrorCode=%s%%}</span> erkannt.",
+ 'LOADER_SECURITY_HASH_MISMATCH' => "Der Sicherheitshash für den Dereferrer stimmt nicht mit der URL überein.",
// Time units
'TIME_UNIT' => "Zeiteinheit",
'ADMIN_AJAX_MENU_IS_LOADING' => "Das Adminmenü wird geladen, bitte etwas Geduld . . .",
'ADMIN_AJAX_ERROR_TITLE' => "AJAX-Abfrage im Adminmenü fehlgeschlagen",
'ADMIN_AJAX_WARNING_TITLE' => "Warnung: Es sind ungespeicherte Änderungen vorhanden",
+
+ // Member - submit buttons
+ 'MEMBER_ACTION_EDIT_SUBMIT' => "Editieren",
+ 'MEMBER_ACTION_DELETE_SUBMIT' => "Löschen",
));
// Description of all months
'ADMIN_ADD_TESTER_USER_BIRTHDAY' => "Geburtstag:",
'ADMIN_ADD_TESTER_USER_COUNTRY' => "Land auswählen:",
- // Success/error messages
+ // Admin - success/error messages
'ADMIN_TESTER_USER_ACCOUNT_CREATION_DONE' => "Es wurde ein Testbenutzeraccount angelegt und sofort freigeschaltet.",
'ADMIN_MAXIMUM_USER_TESTER_REACHED' => "Sie haben die maximale Anzahl an Testbenutzer angelegt. Entweder sollten Sie wieder welche löschen oder die maximale Anzahl erhöhen (hartkodiertes Maximum ist jedoch 100.000 (99.999+0=100.000).",
'ADMIN_TESTER_USER_ACCOUNT_CREATION_FAILED' => "Das Anlegen eines Testbenuters ist fehlgeschlagen.",
+
+ // Member - sub ids
+ 'MEMBER_USER_SUBIDS_404' => "Sie haben noch keine Sub-Ids angelegt.",
+ 'MEMBER_ADD_SUBID_TITLE' => "Neue Sub-Id anlegen",
+ 'MEMBER_ADD_SUBID_SUBMIT' => "Sub-Id hinzufügen",
+ 'MEMBER_ENTER_SUBID' => "Geben Sie eine Sub-Id ein:",
+ 'MEMBER_ADD_SUBID_LEGEND' => "Daten zur Sub-Id",
+ 'MEMBER_ADD_SUBID_NOTICE' => "<strong>Hinweise:</strong>Mit Sub-Ids haben Sie die Möglichkeit, die Aufrufe Ihres Referral-Linkes noch genauer zu verfolgen. Zum Beispiel können Sie jedem Besuchertausch oder fremden Paidmailer eine eigene Sub-Id vergeben, indem Sie diese hier zuerst eingeben und dann am Ende des Referral-Linkes mit <strong>&subid=<em>Ihre Sub-Id</em></strong> anhängen. Bewerben Sie nun diesen erweiterten Link. Sobald Aufrufe auf diesen erfolgen, können Sie bei der jeweiligen Sub-Id auf "Aufruf-Statistik" klicken, um eine detailierte Statistik zu erhalten. Leerzeichen oder Bindestrichen werden automatisch in Unterstriche umgewandelt, es wurden nur Zeichen von A-Z (klein- und grossgeschrieben) und alle Zahlenzeichen sowie Unterstriche angenommen.",
+ 'MEMBER_SUBID_NO_SELECTIONS' => "Sie haben keine Auswahl getroffen! Bitte navigieren Sie zurück, wählen Sie mindestens eine Sub-Id aus und versuchen Sie es dann erneut.",
+ 'MEMBER_USER_SUBID_STATS_LINK' => "Aufrufstatistiken",
+ 'MEMBER_USER_SUBID_EDIT_DELETE_TITLE' => "Editieren und Löschen von Sub-Ids",
+
+ // Generic - subids
+ 'SUBID_VALUE' => "Sub-Id",
+ 'SUBID_ADDED' => "Hinzugefügt",
));
// [EOF]
} // END - if
// Is an URL specified?
-if (isGetRequestElementSet('url')) {
+if ((isGetRequestElementSet('url')) && (isGetRequestElementSet('hash'))) {
// Decode URL
- $url = decodeString(str_replace(' ', '+', compileUriCode(urldecode(getRequestElement('url')))));
+ $decodedUrl = decodeString(str_replace(' ', '+', compileUriCode(urldecode(getRequestElement('url')))));
- // Validate the URL
- if (isUrlValid($url)) {
+ // Generate hash for comparing it
+ $hash = encodeHashForCookie(generateHash($decodedUrl, getRequestElement('hash')));
+
+ // Validate the URL and hash
+ if ($hash != getRequestElement('hash')) {
+ // Hash doesn't match
+ displayMessage('{--LOADER_SECURITY_HASH_MISMATCH--}');
+
+ // Log this event
+ logDebugMessage(__FILE__, __LINE__, 'Hash ' . getRequestElement('hash') . ' does not match URL ' . $decodedUrl);
+ } elseif (isUrlValid($decodedUrl)) {
// Generate a JavaScript that redirects us
- loadTemplate('loader', false, $url);
+ loadTemplate('loader', false, $decodedUrl);
} else {
// URL invalid
redirectToUrl('modules.php?module=index');