From dbeb4ef1dc2e59d0c6bfab9d9666cdfa515f58e7 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Wed, 1 Oct 2008 01:05:48 +0000
Subject: [PATCH] Anonymity/privacy extension 'removeip' added

---
 .gitattributes                                |   7 +
 beg.php                                       |   4 +-
 doubler.php                                   |   4 +-
 inc/databases.php                             |   2 +-
 inc/extensions.php                            |  31 ++--
 inc/extensions/ext-                           |   3 -
 inc/extensions/ext-removeip.php               |  98 ++++++++++
 inc/functions.php                             |  96 +++++++---
 inc/language/de.php                           |   2 +-
 inc/language/removeip_de.php                  |  63 +++++++
 inc/libs/cache_functions.php                  |  19 +-
 inc/libs/register_functions.php               |  11 +-
 inc/libs/removeip_functions.php               | 154 ++++++++++++++++
 inc/libs/sponsor_functions.php                |   6 +-
 inc/modules/admin.php                         |  11 +-
 inc/modules/admin/admin-inc.php               |  35 ++--
 inc/modules/admin/what-autopurge.php          |  30 +++-
 inc/modules/admin/what-config_admin.php       |   4 +-
 inc/modules/admin/what-config_autopurge.php   |   4 +-
 inc/modules/admin/what-config_beg.php         |  28 +--
 inc/modules/admin/what-config_birthday.php    |   8 +-
 inc/modules/admin/what-config_bonus.php       |  40 ++---
 inc/modules/admin/what-config_cache.php       | 140 +++++++++++----
 inc/modules/admin/what-config_doubler.php     |  16 +-
 inc/modules/admin/what-config_extensions.php  |  11 +-
 inc/modules/admin/what-config_holiday.php     |   8 +-
 inc/modules/admin/what-config_order.php       |  16 +-
 inc/modules/admin/what-config_other.php       |  40 ++---
 inc/modules/admin/what-config_points.php      |   8 +-
 inc/modules/admin/what-config_removeip.php    | 168 ++++++++++++++++++
 inc/modules/admin/what-config_rewrite.php     |  27 +--
 inc/modules/admin/what-config_transfer.php    |  17 +-
 inc/modules/admin/what-edit_sponsor.php       |   6 +-
 inc/modules/admin/what-extensions.php         |   3 -
 inc/modules/guest/what-register.php           |   6 +-
 inc/modules/guest/what-sponsor_reg.php        |  10 +-
 inc/modules/member/what-categories.php        |   6 +-
 inc/modules/member/what-html_mail.php         |   4 +-
 inc/modules/member/what-transfer.php          |   4 +-
 inc/modules/sponsor/account.php               |   6 +-
 inc/modules/sponsor/settings.php              |  11 +-
 inc/mysql-connect.php                         |   1 -
 inc/mysql-manager.php                         |  15 +-
 inc/security.php                              |   2 +-
 inc/session.php                               |   6 +-
 .../de/html/admin/admin_config_removeip.tpl   | 117 ++++++++++++
 templates/de/html/ext/ext_removeip.tpl        |  16 ++
 templates/de/html/removeip_level.tpl          |  12 ++
 48 files changed, 1049 insertions(+), 287 deletions(-)
 create mode 100644 inc/extensions/ext-removeip.php
 create mode 100644 inc/language/removeip_de.php
 create mode 100644 inc/libs/removeip_functions.php
 create mode 100644 inc/modules/admin/what-config_removeip.php
 create mode 100644 templates/de/html/admin/admin_config_removeip.tpl
 create mode 100644 templates/de/html/ext/ext_removeip.tpl
 create mode 100644 templates/de/html/removeip_level.tpl

diff --git a/.gitattributes b/.gitattributes
index b825b35176..88c2b6112c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -128,6 +128,7 @@ inc/extensions/ext-profile.php -text
 inc/extensions/ext-rallye.php -text
 inc/extensions/ext-refback.php -text
 inc/extensions/ext-register.php -text
+inc/extensions/ext-removeip.php -text
 inc/extensions/ext-repair.php -text
 inc/extensions/ext-rewrite.php -text
 inc/extensions/ext-safe.php -text
@@ -183,6 +184,7 @@ inc/language/primera_de.php -text
 inc/language/rallye_de.php -text
 inc/language/refback_de.php -text
 inc/language/register_de.php -text
+inc/language/removeip_de.php -text
 inc/language/repair_de.php -text
 inc/language/rewrite_de.php -text
 inc/language/sponsor_de.php -text
@@ -213,6 +215,7 @@ inc/libs/primera_functions.php -text
 inc/libs/rallye_functions.php -text
 inc/libs/refback_functions.php -text
 inc/libs/register_functions.php -text
+inc/libs/removeip_functions.php -text
 inc/libs/rewrite_functions.php -text
 inc/libs/security_functions.php -text
 inc/libs/sponsor_functions.php -text
@@ -312,6 +315,7 @@ inc/modules/admin/what-config_refid.php -text
 inc/modules/admin/what-config_reg.php -text
 inc/modules/admin/what-config_register.php -text
 inc/modules/admin/what-config_register2.php -text
+inc/modules/admin/what-config_removeip.php -text
 inc/modules/admin/what-config_rewrite.php -text
 inc/modules/admin/what-config_secure.php -text
 inc/modules/admin/what-config_session.php -text
@@ -838,6 +842,7 @@ templates/de/html/admin/admin_config_refid.tpl -text
 templates/de/html/admin/admin_config_reg_pro.tpl -text
 templates/de/html/admin/admin_config_register.tpl -text
 templates/de/html/admin/admin_config_register2.tpl -text
+templates/de/html/admin/admin_config_removeip.tpl -text
 templates/de/html/admin/admin_config_rewrite.tpl -text
 templates/de/html/admin/admin_config_rewrite_rows.tpl -text
 templates/de/html/admin/admin_config_secure.tpl -text
@@ -1148,6 +1153,7 @@ templates/de/html/ext/ext_profile.tpl -text
 templates/de/html/ext/ext_rallye.tpl -text
 templates/de/html/ext/ext_refback.tpl -text
 templates/de/html/ext/ext_register.tpl -text
+templates/de/html/ext/ext_removeip.tpl -text
 templates/de/html/ext/ext_repair.tpl -text
 templates/de/html/ext/ext_rewrite.tpl -text
 templates/de/html/ext/ext_safe.tpl -text
@@ -1364,6 +1370,7 @@ templates/de/html/rallye/.htaccess -text
 templates/de/html/rallye/rallye_test.tpl -text
 templates/de/html/redirect_url.tpl -text
 templates/de/html/register_header.tpl -text
+templates/de/html/removeip_level.tpl -text
 templates/de/html/runtime_fatal_row.tpl -text
 templates/de/html/runtime_fatal_table.tpl -text
 templates/de/html/show_bonus.tpl -text
diff --git a/beg.php b/beg.php
index 168c5ad45e..d212731055 100644
--- a/beg.php
+++ b/beg.php
@@ -117,7 +117,7 @@ if (isBooleanConstantAndTrue('mxchange_installed')) {
 
 			// Check for last entry for userid w/o IP number
 			$result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_beg_ips WHERE (timeout > (UNIX_TIMESTAMP() - ".$_CONFIG['beg_timeout'].") OR (timeout > (UNIX_TIMESTAMP() - ".$_CONFIG['beg_uid_timeout'].") AND userid=%s)) AND remote_ip='%s' LIMIT 1",
-			 array($uid, getenv('REMOTE_ADDR')), __FILE__, __LINE__);
+			 array($uid, GET_REMOTE_ADDR()), __FILE__, __LINE__);
 			if ((SQL_NUMROWS($result) == 0) && ($points > 0) && (!$login)) {
 				// Free memory
 				SQL_FREERESULT($result);
@@ -127,7 +127,7 @@ if (isBooleanConstantAndTrue('mxchange_installed')) {
 					// but only when there is no admin begging.
 					// Admins shall be able to test it!
 					$result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_beg_ips (userid, remote_ip, timeout) VALUES('%s','%s', UNIX_TIMESTAMP())",
-					 array($uid, getenv('REMOTE_ADDR')), __FILE__, __LINE__);
+					 array($uid, GET_REMOTE_ADDR()), __FILE__, __LINE__);
 				}
 
 				// Set mode depending on how many mails the member has to confirm
diff --git a/doubler.php b/doubler.php
index 6470aae80d..ed96136bbc 100644
--- a/doubler.php
+++ b/doubler.php
@@ -124,7 +124,7 @@ if (isBooleanConstantAndTrue('mxchange_installed')) {
 				{
 					// Enough points are left so let's continue with the doubling process
 					// Create doubling "account" width *DOUBLED* points
-					$result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid, refid, points, remote_ip, timemark, completed, is_ref) VALUES ('%s','%s','%s','".$_SERVER['REMOTE_ADDR']."', UNIX_TIMESTAMP(), 'N','N')",
+					$result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid, refid, points, remote_ip, timemark, completed, is_ref) VALUES ('%s','%s','%s','".GET_REMOTE_ADDR()."', UNIX_TIMESTAMP(), 'N','N')",
 					 array($uid, bigintval($GLOBALS['refid']), bigintval($_POST['points'] * 2)), __FILE__, __LINE__);
 
 					// Subtract entered points
@@ -138,7 +138,7 @@ if (isBooleanConstantAndTrue('mxchange_installed')) {
 					// Add second line for the referral but only when uid != refid
 					if (($GLOBALS['refid'] > 0) && ($GLOBALS['refid'] != $uid)) {
 						// Okay add a refid line and apply refid percents
-						$result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid,refid,points,remote_ip,timemark,completed,is_ref) VALUES ('%s',0,'%s','".$_SERVER['REMOTE_ADDR']."',UNIX_TIMESTAMP(),'N','Y')",
+						$result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_doubler (userid,refid,points,remote_ip,timemark,completed,is_ref) VALUES ('%s',0,'%s','".GET_REMOTE_ADDR()."',UNIX_TIMESTAMP(),'N','Y')",
 							array(bigintval($GLOBALS['refid']), bigintval($_POST['points'] * 2 * $_CONFIG['doubler_ref'])), __FILE__, __LINE__);
 
 						// And that's why we dont't want to you more than one referral level of doubler-points. ^^^
diff --git a/inc/databases.php b/inc/databases.php
index 5261516ece..af6aaf6f1e 100644
--- a/inc/databases.php
+++ b/inc/databases.php
@@ -113,7 +113,7 @@ define('USAGE_BASE', "usage");
 define('SERVER_URL', "http://www.mxchange.org");
 
 // This current patch level
-define('CURR_SVN_REVISION', "428");
+define('CURR_SVN_REVISION', "429");
 
 // Take a prime number which is long (if you know a longer one please try it out!)
 define('_PRIME', 591623);
diff --git a/inc/extensions.php b/inc/extensions.php
index 64e4c48699..0b75f56d25 100644
--- a/inc/extensions.php
+++ b/inc/extensions.php
@@ -301,18 +301,6 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
 
 		//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):mode={$EXT_LOAD_MODE}<br />\n";
 
-		// Remove cache file(s) if extension is active
-		if (((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) && (((SQL_AFFECTEDROWS() == 1) && ($EXT_LOAD_MODE == "remove")) || ($sqlRan === true))) {
-			//* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
-			// Remove cache files
-			if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
-			if ($cacheInstance->cache_file("mod_reg", true))    $cacheInstance->cache_destroy();
-			if ($cacheInstance->cache_file("config", true))     $cacheInstance->cache_destroy();
-
-			// @TODO This causes the whole (!) menu cache being purged
-			CACHE_PURGE_ADMIN_MENU();
-		} // END - if
-
 		// Is this the sql_patches?
 		//* DEBUG: */ echo __LINE__.": {$id}/{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
 		if (($ext_name == "sql_patches") && (($EXT_LOAD_MODE == "register") || ($EXT_LOAD_MODE == "remove"))) {
@@ -321,6 +309,18 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
 			LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
 		} // END - if
 	} // END - if
+
+	// Remove cache file(s) if extension is active
+	if (((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) && (((SQL_AFFECTEDROWS() == 1)) || ($sqlRan === true) || ($EXT_LOAD_MODE == "activate") || ($EXT_LOAD_MODE == "deactivate"))) {
+		//* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
+		// Remove cache files
+		if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+		if ($cacheInstance->cache_file("mod_reg", true))    $cacheInstance->cache_destroy();
+		if ($cacheInstance->cache_file("config", true))     $cacheInstance->cache_destroy();
+
+		// @TODO This causes the whole (!) menu cache being purged
+		CACHE_PURGE_ADMIN_MENU();
+	} // END - if
 }
 // Check if given extension is active
 function EXT_IS_ACTIVE ($ext_name) {
@@ -349,11 +349,16 @@ function EXT_IS_ACTIVE ($ext_name) {
 			// Extension was not found!
 			return false;
 		}
+
+		// Load entry
 		list($active) = SQL_FETCHROW($result);
-		//* DEBUG: */ echo $ext_name."[DB]: {$active}<br />\n";
+
+		// Free result
 		SQL_FREERESULT($result);
 
+
 		// Write cache array
+		//* DEBUG: */ echo $ext_name."[DB]: {$active}<br />\n";
 		$cacheArray['extensions']['ext_active'][$ext_name] = $active;
 	} else {
 		// Extension not active!
diff --git a/inc/extensions/ext- b/inc/extensions/ext-
index 4b23438fb2..d5f3294ef3 100644
--- a/inc/extensions/ext-
+++ b/inc/extensions/ext-
@@ -86,8 +86,5 @@ default: // Do stuff when extension is loaded
 // Language file prefix
 $EXT_LANG_PREFIX = "xxx";
 
-// Extension is always active?
-$EXT_ALWAYS_ACTIVE = 'N';
-
 //
 ?>
diff --git a/inc/extensions/ext-removeip.php b/inc/extensions/ext-removeip.php
new file mode 100644
index 0000000000..977e676578
--- /dev/null
+++ b/inc/extensions/ext-removeip.php
@@ -0,0 +1,98 @@
+<?php
+/************************************************************************
+ * MXChange v0.2.1                                    Start: 09/30/2008 *
+ * ================                             Last change: 09/30/2008 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : ext-removeip.php                                 *
+ * -------------------------------------------------------------------- *
+ * Short description : Anonymizes the IP number of your visitors        *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Anomymiziert die IP-Nummer Ihrer Besucher        *
+ * -------------------------------------------------------------------- *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * For more information visit: http://www.mxchange.org                  *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+	$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+	require($INC);
+}
+
+// Version number
+$EXT_VERSION = "0.0";
+
+// Auto-set extension version
+if (empty($EXT_VER)) $EXT_VER = $EXT_VERSION;
+
+// Version history array (add more with , "0.1" and so on)
+$EXT_VER_HISTORY = array("0.0");
+
+switch ($EXT_LOAD_MODE)
+{
+case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
+	// SQL commands to run
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_anon_ip` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_anon_host` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_anon_ua` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_anon_ref` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_admin_show` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_guest_show` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_member_show` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `removeip_sponsor_show` ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+	$SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD `anonymous_ip` ENUM('127.0.0.1','0.0.0.0','RANDOM') NOT NULL DEFAULT '127.0.0.1'";
+	$SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (`action`,`what`,`title`,`descr`,`sort`) VALUES('setup','config_removeip','Anonymit&auml;t/Privatsph&auml;hre','Stellen Sie hier ein, ob die IP-Nummer, User-Agent und/oder Referer-Adresse anonymisiert im gesamten Script verwendet werden soll.',15)";
+	break;
+
+case "remove": // Do stuff when removing extension
+	// SQL commands to run
+	$SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE what='config_removeip' LIMIT 1";
+	break;
+
+case "activate": // Do stuff when admin activates this extension
+	// SQL commands to run
+	break;
+
+case "deactivate": // Do stuff when admin deactivates this extension
+	// SQL commands to run
+	break;
+
+case "update": // Update an extension
+	switch ($EXT_VER)
+	{
+	case "0.0.1": // SQL queries for v0.0.1
+		$SQLs[] = "";
+
+		// Update notes (these will be set as task text!)
+		$UPDATE_NOTES = "";
+		break;
+	}
+	break;
+
+default: // Do stuff when extension is loaded
+	break;
+}
+
+// Language file prefix
+$EXT_LANG_PREFIX = "removeip";
+
+//
+?>
diff --git a/inc/functions.php b/inc/functions.php
index 1c22981c1c..d356add7d7 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -709,8 +709,8 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
 	// No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
 
 	// Prepare IP number and User Agent
-	$REMOTE_ADDR     = getenv('REMOTE_ADDR');
-	$HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
+	$REMOTE_ADDR     = GET_REMOTE_ADDR();
+	$HTTP_USER_AGENT = GET_USER_AGENT();
 
 	// Default admin
 	$ADMIN = MAIN_TITLE;
@@ -881,7 +881,7 @@ function LOAD_URL($URL, $addUrlData=true) {
 	if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL);
 
 	// Probe for bot from search engine
-	if ((eregi("spider", getenv('HTTP_USER_AGENT'))) || (eregi("bot", getenv('HTTP_USER_AGENT'))) || (eregi("spider", getenv('HTTP_USER_AGENT')))) {
+	if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT())) || (eregi("spider", GET_USER_AGENT()))) {
 		// Search engine bot detected so let's rewrite many chars for the link
 		$URL = htmlentities(strip_tags($URL), ENT_QUOTES);
 
@@ -1167,7 +1167,7 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") {
 	if (!defined('_MAX')) define('_MAX', 15235);
 
 	// Build server string
-	$server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
+	$server = $_SERVER['PHP_SELF'].":".GET_USER_AGENT().":".getenv('SERVER_SOFTWARE').":".GET_REMOTE_ADDR().":".":".filemtime(PATH."inc/databases.php");
 
 	// Build key string
 	$keys   = SITE_KEY.":".DATE_KEY;
@@ -1960,7 +1960,7 @@ function generateHash ($plainText, $salt = "") {
 	// When the salt is empty build a new one, else use the first x configured characters as the salt
 	if (empty($salt)) {
 		// Build server string
-		$server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
+		$server = $_SERVER['PHP_SELF'].":".GET_USER_AGENT().":".getenv('SERVER_SOFTWARE').":".GET_REMOTE_ADDR().":".":".filemtime(PATH."inc/databases.php");
 
 		// Build key string
 		$keys   = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", bigintval($_CONFIG['patch_ctime'])).":".$_CONFIG['master_salt'];
@@ -2535,7 +2535,7 @@ function HANDLE_LOGIN_FAILTURES ($accessLevel) {
 }
 // Rebuild cache
 function REBUILD_CACHE ($cache, $inc="") {
-	global $cacheInstance;
+	global $cacheInstance, $_CONFIG, $CSS;
 
 	// Shall I remove the cache file?
 	if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
@@ -2543,21 +2543,21 @@ function REBUILD_CACHE ($cache, $inc="") {
 		if ($cacheInstance->cache_file($cache, true)) {
 			// Destroy it
 			$cacheInstance->cache_destroy();
+		} // END - if
 
-			// Include file given?
-			if (!empty($inc)) {
-				// Construct FQFN
-				$fqfn = sprintf("%sinc/loader/load_cache-%s.php", PATH, $inc);
-
-				// Is the include there?
-				if (FILE_READABLE($fqfn)) {
-					// And rebuild it from scratch
-					require_once($fqfn);
-				} else {
-					// Include not found!
-					DEBUG_LOG(__FUNCTION__.":Include {$inc} not found. cache={$cache}");
-				}
-			} // END - if
+		// Include file given?
+		if (!empty($inc)) {
+			// Construct FQFN
+			$fqfn = sprintf("%sinc/loader/load_cache-%s.php", PATH, $inc);
+
+			// Is the include there?
+			if (FILE_READABLE($fqfn)) {
+				// And rebuild it from scratch
+				require($fqfn);
+			} else {
+				// Include not found!
+				DEBUG_LOG(__FUNCTION__.":Include {$inc} not found. cache={$cache}");
+			}
 		} // END - if
 	} // END - if
 }
@@ -2598,6 +2598,62 @@ function TRANSLATE_POOL_TYPE ($type) {
 	// Return "translation"
 	return $translated;
 }
+// "Getter" for remote IP number
+function GET_REMOTE_ADDR () {
+	// Get remote ip from environment
+	$remoteAddr = getenv('REMOTE_ADDR');
+
+	// Is removeip installed?
+	if (EXT_IS_ACTIVE("removeip")) {
+		// Then anonymize it
+		$remoteAddr = GET_ANONYMOUS_REMOTE_ADDR($remoteAddr);
+	} // END - if
+
+	// Return it
+	return $remoteAddr;
+}
+// "Getter" for remote hostname
+function GET_REMOTE_HOST () {
+	// Get remote ip from environment
+	$remoteHost = getenv('REMOTE_HOST');
+
+	// Is removeip installed?
+	if (EXT_IS_ACTIVE("removeip")) {
+		// Then anonymize it
+		$remoteHost = GET_ANONYMOUS_REMOTE_HOST($remoteHost);
+	} // END - if
+
+	// Return it
+	return $remoteHost;
+}
+// "Getter" for user agent
+function GET_USER_AGENT () {
+	// Get remote ip from environment
+	$userAgent = getenv('HTTP_USER_AGENT');
+
+	// Is removeip installed?
+	if (EXT_IS_ACTIVE("removeip")) {
+		// Then anonymize it
+		$userAgent = GET_ANONYMOUS_USER_AGENT($userAgent);
+	} // END - if
+
+	// Return it
+	return $userAgent;
+}
+// "Getter" for referer
+function GET_REFERER () {
+	// Get remote ip from environment
+	$referer = getenv('HTTP_REFERER');
+
+	// Is removeip installed?
+	if (EXT_IS_ACTIVE("removeip")) {
+		// Then anonymize it
+		$referer = GET_ANONYMOUS_REFERER($referer);
+	} // END - if
+
+	// Return it
+	return $referer;
+}
 //
 //////////////////////////////////////////////////
 //                                              //
diff --git a/inc/language/de.php b/inc/language/de.php
index 0b084cc026..170057c841 100644
--- a/inc/language/de.php
+++ b/inc/language/de.php
@@ -845,7 +845,7 @@ define('SORT_NAVIGATION', "Sortieren");
 define('HIGHER', "H&ouml;her");
 define('LOWER', "Niedriger");
 define('MEMBER_SETTINGS_SAVED', "Einstellungen gespeichert.");
-define('REMOTE_ADDR_TIMEOUT', "Ein Mitglied ist mit Ihrer IP-Nummer <U>".getenv('REMOTE_ADDR')."</U> bereits registriert! Bitte kontaktieren Sie uns, wenn dies ein Fehler sein sollte!");
+define('REMOTE_ADDR_TIMEOUT', "Ein Mitglied ist mit Ihrer IP-Nummer <U>".GET_REMOTE_ADDR()."</U> bereits registriert! Bitte kontaktieren Sie uns, wenn dies ein Fehler sein sollte!");
 define('IP_TIMEOUT', "IP-Zeitsperre");
 define('ADMIN_PAYOUT_NOT_INSTALLED', "payout-Erweiterung nicht installiert!");
 define('ADMIN_WERNIS_NOT_INSTALLED', "wernis-Erweiterung nicht installiert!");
diff --git a/inc/language/removeip_de.php b/inc/language/removeip_de.php
new file mode 100644
index 0000000000..0e18706fe3
--- /dev/null
+++ b/inc/language/removeip_de.php
@@ -0,0 +1,63 @@
+<?php
+/************************************************************************
+ * MXChange v0.2.1                                    Start: 10/01/2008 *
+ * ===============                              Last change: 10/01/2008 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : removeip_de.php                                  *
+ * -------------------------------------------------------------------- *
+ * Short description : German langugage support                         *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Deutsche Sprachunterstuetzung                    *
+ * -------------------------------------------------------------------- *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * For more information visit: http://www.mxchange.org                  *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+	$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+	require($INC);
+}
+
+// Language definitions
+define('ADMIN_CONFIG_REMOVEIP_TITLE', "Konfiguration zur Anonymit&auml;t/Privatsph&auml;hre");
+define('ADMIN_CONFIG_REMOVEIP_ANON_IP', "IP-Nummer anonymisieren?<br /><span class=\"admin_note\">(Siehe dazu weiter unten)</span>");
+define('ADMIN_CONFIG_REMOVEIP_ANON_HOST', "Hostname anonymisieren?<br /><span class=\"admin_note\">(Dieser wird als <strong>localhost.localnet</strong> ausgegeben.)</span>");
+define('ADMIN_CONFIG_REMOVEIP_ANON_UA', "User-Agent anonymisieren?<br /><span class=\"admin_note\">(Dieser wird als Strich ausgegeben.)</span>");
+define('ADMIN_CONFIG_REMOVEIP_ANON_REF', "Referer anonymisieren?<br /><span class=\"admin_note\">(Dieser wird als Strich ausgegeben.)</span>");
+define('ADMIN_CONFIG_REMOVEIP_ANONYMOUS_IP', "Als was soll die anonymisierte IP-Nummer ausgegeben werden?");
+define('ADMIN_CONFIG_REMOVEIP_LOCAL', "127.0.0.1 (Lokal)");
+define('ADMIN_CONFIG_REMOVEIP_ZERO', "0.0.0.0 (Nicht existierend)");
+define('ADMIN_CONFIG_REMOVEIP_RANDOM', "???.???.???.??? (Pseudozufall)");
+define('ADMIN_CONFIG_REMOVEIP_ADMIN_SHOW', "Im Adminbereich Anonymit&auml;tslevel zeigen?");
+define('ADMIN_CONFIG_REMOVEIP_GUEST_SHOW', "Im Gastbereich Anonymit&auml;tslevel zeigen?");
+define('ADMIN_CONFIG_REMOVEIP_MEMBER_SHOW', "Im Mitgliedsbereich Anonymit&auml;tslevel zeigen?");
+define('ADMIN_CONFIG_REMOVEIP_SPONSOR_SHOW', "Im Sponsorbereich Anonymit&auml;tslevel zeigen?");
+
+// Anonymity levels
+define('REMOVEIP_UNKNOWN_LEVEL', "Unbekannte Anonymit&auml;tslevel <u>%s</u>");
+define('REMOVEIP_LEVEL_NONE', "Keine Anonymit&auml;t");
+define('REMOVEIP_LEVEL_LOW', "Niedrige Anonymit&auml;t");
+define('REMOVEIP_LEVEL_MEDIUM', "Mittlere Anonymit&auml;t");
+define('REMOVEIP_LEVEL_HIGH', "Hohe Anonymit&auml;t");
+
+//
+?>
diff --git a/inc/libs/cache_functions.php b/inc/libs/cache_functions.php
index 93af044caa..ba490d57c7 100644
--- a/inc/libs/cache_functions.php
+++ b/inc/libs/cache_functions.php
@@ -223,25 +223,20 @@ class mxchange_cache
 		}
 	}
 
-	function cache_destroy()
-	{
-		if (FILE_READABLE($this->cache_inc))
-		{
+	// Destroy an existing cache file
+	function cache_destroy() {
+		// Is the cache file there?
+		if (FILE_READABLE($this->cache_inc)) {
 			// Remove cache file from system
 			@unlink($this->cache_inc);
-			if (!FILE_READABLE($this->cache_inc))
-			{
+			if (!FILE_READABLE($this->cache_inc)) {
 				// Close cache automatically (we don't need it anymore!)
 				$this->cache_close();
-			}
-			else
-			{
+			} else {
 				// Not removed!
 				ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_CANNOT_UNLINK_1.$this->cache_inc.CACHE_CANNOT_UNLINK_2);
 			}
-		}
-		else
-		{
+		} else {
 			// Does not exist!
 			ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_CANNOT_UNLINK_1.$this->cache_inc.CACHE_CANNOT_UNLINK_2);
 		}
diff --git a/inc/libs/register_functions.php b/inc/libs/register_functions.php
index a80cddd54c..7a74af6a32 100644
--- a/inc/libs/register_functions.php
+++ b/inc/libs/register_functions.php
@@ -133,13 +133,10 @@ function REGISTER_ADD_CATEGORY_TABLE ($MODE, $return=false)
 				'id'    => $id,
 			);
 
-			if (($_POST['cat'][$id] == "Y") || (($_CONFIG['register_default'] == "Y") && (empty($_POST['cat'][$id]))))
-			{
-				$content['def_y'] = " checked";
-			}
-			 else
-			{
-				$content['def_n'] = " checked";
+			if (($_POST['cat'][$id] == "Y") || (($_CONFIG['register_default'] == "Y") && (empty($_POST['cat'][$id])))) {
+				$content['def_y'] = " checked=\"checked\"";
+			} else {
+				$content['def_n'] = " checked=\"checked\"";
 			}
 
 			// Load template and switch color
diff --git a/inc/libs/removeip_functions.php b/inc/libs/removeip_functions.php
new file mode 100644
index 0000000000..8965fbdd71
--- /dev/null
+++ b/inc/libs/removeip_functions.php
@@ -0,0 +1,154 @@
+<?php
+/************************************************************************
+ * MXChange v0.2.1                                    Start: 10/01/2008 *
+ * ===============                              Last change: 10/01/2008 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : removeip_functions.php                           *
+ * -------------------------------------------------------------------- *
+ * Short description : Special functions for removeip extension         *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Spezielle Funktion fuer removeip-Erweiterung     *
+ * -------------------------------------------------------------------- *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * For more information visit: http://www.mxchange.org                  *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+	$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+	require($INC);
+}
+
+// "Getter" for anonymous remote IP number
+function GET_ANONYMOUS_REMOTE_ADDR ($remoteAddr) {
+	global $_CONFIG;
+
+	// Is config enabled?
+	if ($_CONFIG['removeip_anon_ip'] == "Y") {
+		// Switch way do we like?
+		switch ($_CONFIG['anonymous_ip']) {
+			case "127.0.0.1": // mod_removeip style
+			case "0.0.0.0": // Some people may prefer this...
+				$remoteAddr = $_CONFIG['anonymous_ip'];
+				break;
+
+			case "RANDOM": // Pseudo-random IP number
+				$remoteAddr = mt_rand(1,254).".".mt_rand(0,254).".".mt_rand(0,254).".".mt_rand(1,254);
+				break;
+		} // END - switch
+	} // END - if
+
+	// Return it
+	return $remoteAddr;
+}
+// "Getter" for anonymous remote hostname
+function GET_ANONYMOUS_REMOTE_HOST ($remoteHost) {
+	global $_CONFIG;
+
+	// Is config enabled?
+	if ($_CONFIG['removeip_anon_host'] == "Y") {
+		// Set anon hostname
+		$remoteHost = "localhost.localnet";
+	} // END - if
+
+	// Return it
+	return $remoteHost;
+}
+// "Getter" for anonymous user agent
+function GET_ANONYMOUS_USER_AGENT ($userAgent) {
+	global $_CONFIG;
+
+	// Is config enabled?
+	if ($_CONFIG['removeip_anon_ua'] == "Y") {
+		// Set anon user agent
+		$userAgent = "-";
+	} // END - if
+
+	// Return it
+	return $userAgent;
+}
+// "Getter" for anonymous referer
+function GET_ANONYMOUS_REFERER ($referer) {
+	global $_CONFIG;
+
+	// Is config enabled?
+	if ($_CONFIG['removeip_anon_ref'] == "Y") {
+		// Set anon user agent
+		$referer = "-";
+	} // END - if
+
+	// Return it
+	return $referer;
+}
+// Adds informations about anonymity/privacy to the menu
+function REMOVEIP_ADD_INFOS () {
+	global $_CONFIG;
+
+	// "Base-privacy" is by default low (we add more later)
+	$anonymity = 0;
+
+	// Is some data anonymized?
+	if ($_CONFIG['removeip_anon_ip']   == "Y") $anonymity++;
+	if ($_CONFIG['removeip_anon_host'] == "Y") $anonymity++;
+	if ($_CONFIG['removeip_anon_ua']   == "Y") $anonymity++;
+	if ($_CONFIG['removeip_anon_ref']  == "Y") $anonymity++;
+
+	// Calculate anonymity level
+	$level = round($anonymity / 4 * 3);
+
+	// Set constant name suffix depending on that level
+	$suffix = "unsupported_{$level}";
+	switch ($level) {
+		case 0:
+			$suffix = "none";
+			break;
+
+		case 1:
+			$suffix = "low";
+			break;
+
+		case 2:
+			$suffix = "medium";
+			break;
+
+		case 3: // High level
+			$suffix = "high";
+			break;
+	} // END - while
+
+	// Construct constant name
+	$constantName = strtoupper(sprintf("REMOVEIP_LEVEL_%s", $suffix));
+
+	// Default message
+	$message = sprintf(REMOVEIP_UNKNOWN_LEVEL, $suffix);
+
+	// Is that constant there?
+	if (defined($constantName)) {
+		// Use that string
+		$message = constant($constantName);
+	} // END - if
+
+	// Output message in template
+	return LOAD_TEMPLATE("removeip_level", true, $message);
+}
+
+//
+?>
diff --git a/inc/libs/sponsor_functions.php b/inc/libs/sponsor_functions.php
index 31a7578e6e..3d2f171611 100644
--- a/inc/libs/sponsor_functions.php
+++ b/inc/libs/sponsor_functions.php
@@ -193,9 +193,9 @@ function SPONSOR_HANDLE_SPONSOR(&$POST, $NO_UPDATE=false, $MSGs=array(), $RET_ST
 
 				// Generate hash code
 				$DATA['keys'][] = "hash";
-				$DATA['values'][] = md5($_COOKIE['PHPSESSID'].":".$POST['email'].":".$_SERVER['REMOTE_ADDR'].":".$_SERVER['HTTP_USER_AGENT'].":".time());
+				$DATA['values'][] = md5($_COOKIE['PHPSESSID'].":".$POST['email'].":".GET_REMOTE_ADDR().":".GET_USER_AGENT().":".time());
 				$DATA['keys'][] = "remote_addr";
-				$DATA['values'][] = $_SERVER['REMOTE_ADDR'];
+				$DATA['values'][] = GET_REMOTE_ADDR();
 			}
 
 			// Implode all data into strings
@@ -524,7 +524,7 @@ function SPONSOR_SAVE_DATA($POST, $content)
 			$SQL .= " status='EMAIL', hash='%s',";
 
 			// Generate hash code
-			$HASH = md5($_COOKIE['PHPSESSID'].":".$POST['email'].":".$_SERVER['REMOTE_ADDR'].":".$_SERVER['HTTP_USER_AGENT'].":".time());
+			$HASH = md5($_COOKIE['PHPSESSID'].":".$POST['email'].":".GET_REMOTE_ADDR().":".GET_USER_AGENT().":".time());
 			$DATA[] = $HASH;
 		}
 	}
diff --git a/inc/modules/admin.php b/inc/modules/admin.php
index 06823fef11..515c745ee9 100644
--- a/inc/modules/admin.php
+++ b/inc/modules/admin.php
@@ -361,15 +361,15 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
 			if (empty($_CONFIG['admin_menu'])) $_CONFIG['admin_menu'] = "OLD";
 
 			// Check for version and switch between old menu system and new "intelligent menu system"
-			if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (FILE_READABLE(PATH."inc/modules/admin/la_sys-inc.php"))) {
+			if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (FILE_READABLE(PATH."inc/modules/admin/lasys-inc.php"))) {
 				// Default area is the entrance, of course
 				$area = "entrance";
 
 				// Check for similar URL variable
-				if (!empty($_GET['area'])) $area = $_GET['area'];
+				if (!empty($_GET['area'])) $area = SQL_ESCAPE($_GET['area']);
 
 				// Load "logical-area menu-system" file
-				require_once(PATH."inc/modules/admin/la_sys-inc.php");
+				require_once(PATH."inc/modules/admin/lasys-inc.php");
 
 				// Create new-style menu system will "logical areas"
 				ADMIN_LOGICAL_AREA_SYSTEM($area, $act, $GLOBALS['what']);
@@ -397,10 +397,5 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
 	}
 }
 
-if (isBooleanConstantAndTrue('admin_registered')) {
-	// Check config.php and inc directory for right access rights
-	// DEPRECATED: if (is_INCWritable("config"))     ADD_FATAL(FATAL_CONFIG_WRITABLE);
-	// DEPRECATED: if (is_INCWritable("dummy"))      ADD_FATAL(FATAL_INC_WRITABLE);
-}
 //
 ?>
diff --git a/inc/modules/admin/admin-inc.php b/inc/modules/admin/admin-inc.php
index 528da4a94a..8e583b6436 100644
--- a/inc/modules/admin/admin-inc.php
+++ b/inc/modules/admin/admin-inc.php
@@ -298,24 +298,20 @@ function admin_WriteData ($file, $comment, $prefix, $suffix, $DATA, $seek=0) {
 }
 
 //
-function ADMIN_DO_ACTION($wht)
-{
+function ADMIN_DO_ACTION($wht) {
 	global $menuDesription, $menuTitle, $_CONFIG, $cacheArray, $DATA, $DEPTH;
+
 	//* DEBUG: */ echo __LINE__."*".$wht."/".$GLOBALS['module']."/".$GLOBALS['action']."/".$GLOBALS['what']."*<br />\n";
-	if (EXT_IS_ACTIVE("cache"))
-	{
+	if (EXT_IS_ACTIVE("cache")) {
 		// Include cache instance
 		global $cacheInstance;
 	}
 
 	// Remove any spaces from variable
-	if (empty($wht))
-	{
+	if (empty($wht)) {
 		// Default admin action is the overview page
 		$wht = "overview";
-	}
-	 else
-	{
+	} else {
 		// Compile out some chars
 		$wht = COMPILE_CODE($wht, false, false, false);
 	}
@@ -340,29 +336,21 @@ function ADMIN_DO_ACTION($wht)
 	LOAD_TEMPLATE("admin_main_header");
 
 	// Check if action/what pair is valid
-	$result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_admin_menu
+	$result_action = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_admin_menu
 WHERE action='%s' AND ((what='%s' AND what != 'overview') OR ((what='' OR what IS NULL) AND '%s'='overview'))
 LIMIT 1", array($act, $wht, $wht), __FILE__, __LINE__);
-	if (SQL_NUMROWS($result) == 1)
-	{
-		// Free memory
-		SQL_FREERESULT($result);
+	if (SQL_NUMROWS($result_action) == 1) {
 
 		// Is valid but does the inlcude file exists?
 		$INC = sprintf("%sinc/modules/admin/action-%s.php", PATH, $act);
-		if ((FILE_READABLE($INC)) && (VALIDATE_MENU_ACTION("admin", $act, $wht)) && (__ACL_ALLOW == true))
-		{
+		if ((FILE_READABLE($INC)) && (VALIDATE_MENU_ACTION("admin", $act, $wht)) && (__ACL_ALLOW == true)) {
 			// Ok, we finally load the admin action module
 			include($INC);
-		}
-		 elseif (__ACL_ALLOW == false)
-		{
+		} elseif (__ACL_ALLOW == false) {
 			// Access denied
 			LOAD_TEMPLATE("admin_menu_failed", false, ADMINS_ACCESS_DENIED);
 			ADD_FATAL(ADMINS_ACCESS_DENIED);
-		}
-		 else
-		{
+		} else {
 			// Include file not found! :-(
 			LOAD_TEMPLATE("admin_menu_failed", false, ADMIN_404_ACTION);
 			ADD_FATAL(ADMIN_404_ACTION_1.$act.ADMIN_404_ACTION_2);
@@ -373,6 +361,9 @@ LIMIT 1", array($act, $wht, $wht), __FILE__, __LINE__);
 		ADD_FATAL(ADMIN_INVALID_ACTION_1.$act."/".$wht.ADMIN_INVALID_ACTION_2);
 	}
 
+	// Free memory
+	SQL_FREERESULT($result_action);
+
 	// Tableset footer
 	LOAD_TEMPLATE("admin_main_footer");
 }
diff --git a/inc/modules/admin/what-autopurge.php b/inc/modules/admin/what-autopurge.php
index 54d22e21a3..cc27e516e5 100644
--- a/inc/modules/admin/what-autopurge.php
+++ b/inc/modules/admin/what-autopurge.php
@@ -45,16 +45,30 @@ if (isset($_POST['ok'])) {
 	ADMIN_SAVE_SETTINGS($_POST);
 } else {
 	// Setup constants for the template
-	switch ($_CONFIG['autopurge_inactive'])
-	{
-		case 'Y': define('__YES_IN', " checked"); define('__NO_IN', "");         break;
-		case 'N': define('__YES_IN', "");         define('__NO_IN', " checked"); break;
+	switch ($_CONFIG['autopurge_inactive']) {
+		case 'Y':
+			define('__YES_IN', " checked=\"checked\"");
+			define('__NO_IN' , "");
+			break;
+
+		case 'N':
+			define('__YES_IN', "");
+			define('__NO_IN' , " checked=\"checked\"");
+			break;
 	}
-	switch ($_CONFIG['autopurge_unconfirmed'])
-	{
-		case 'Y': define('__YES_UN', " checked"); define('__NO_UN', "");         break;
-		case 'N': define('__YES_UN', "");         define('__NO_UN', " checked"); break;
+
+	switch ($_CONFIG['autopurge_unconfirmed']) {
+		case 'Y':
+			define('__YES_UN', " checked=\"checked\"");
+			define('__NO_UN' , "");
+			break;
+
+		case 'N':
+			define('__YES_UN', "");
+			define('__NO_UN' , " checked=\"checked\"");
+			break;
 	}
+
 	define('__AP_IN_SINCE', $_CONFIG['ap_inactive_since']);
 	define('__AP_IN_TIME' , $_CONFIG['ap_in_time']);
 	define('__AP_UN_TIME' , $_CONFIG['ap_un_time']);
diff --git a/inc/modules/admin/what-config_admin.php b/inc/modules/admin/what-config_admin.php
index f0a91040b9..8b78570c20 100644
--- a/inc/modules/admin/what-config_admin.php
+++ b/inc/modules/admin/what-config_admin.php
@@ -47,13 +47,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['admin_menu'])
 	{
 	case "NEW":
-		define('__ADMIN_MENU_NEW', " checked");
+		define('__ADMIN_MENU_NEW', " checked=\"checked\"");
 		define('__ADMIN_MENU_OLD'   , "");
 		break;
 
 	case "OLD":
 		define('__ADMIN_MENU_NEW', "");
-		define('__ADMIN_MENU_OLD'   , " checked");
+		define('__ADMIN_MENU_OLD'   , " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_autopurge.php b/inc/modules/admin/what-config_autopurge.php
index 686e6f3a8b..abbb29a589 100644
--- a/inc/modules/admin/what-config_autopurge.php
+++ b/inc/modules/admin/what-config_autopurge.php
@@ -66,11 +66,11 @@ if (isset($_POST['ok'])) {
 	// Mail confirmation links
 	define('_CFG_AUTO_PURGE', CREATE_TIME_SELECTIONS($_CONFIG['auto_purge'], "auto_purge", "MWD"));
 	if ($_CONFIG['auto_purge_active'] == "N") {
-		define('_CFG_AP_ACTIVE_N', " checked");
+		define('_CFG_AP_ACTIVE_N', " checked=\"checked\"");
 		define('_CFG_AP_ACTIVE_Y', "");
 	} else {
 		define('_CFG_AP_ACTIVE_N', "");
-		define('_CFG_AP_ACTIVE_Y', " checked");
+		define('_CFG_AP_ACTIVE_Y', " checked=\"checked\"");
 	}
 
 	// Output template
diff --git a/inc/modules/admin/what-config_beg.php b/inc/modules/admin/what-config_beg.php
index 05f92154a3..40d412e6b2 100644
--- a/inc/modules/admin/what-config_beg.php
+++ b/inc/modules/admin/what-config_beg.php
@@ -77,85 +77,85 @@ if (isset($_POST['ok']))
 	switch ($_CONFIG['beg_rallye'])
 	{
 	case 'Y':
-		define('__BEG_RALLYE_Y', " checked");
+		define('__BEG_RALLYE_Y', " checked=\"checked\"");
 		define('__BEG_RALLYE_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_RALLYE_Y', "");
-		define('__BEG_RALLYE_N', " checked");
+		define('__BEG_RALLYE_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_active'])
 	{
 	case 'Y':
-		define('__BEG_ACTIVE_Y', " checked");
+		define('__BEG_ACTIVE_Y', " checked=\"checked\"");
 		define('__BEG_ACTIVE_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_ACTIVE_Y', "");
-		define('__BEG_ACTIVE_N', " checked");
+		define('__BEG_ACTIVE_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_mode'])
 	{
 	case "DIRECT":
-		define('__BEG_MODE_DIRECT', " checked");
+		define('__BEG_MODE_DIRECT', " checked=\"checked\"");
 		define('__BEG_MODE_REF'   , "");
 		break;
 
 	case "REF":
 		define('__BEG_MODE_DIRECT', "");
-		define('__BEG_MODE_REF'   , " checked");
+		define('__BEG_MODE_REF'   , " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_ral_en_notify'])
 	{
 	case 'Y':
-		define('__BEG_RAL_EN_NOTIFY_Y', " checked");
+		define('__BEG_RAL_EN_NOTIFY_Y', " checked=\"checked\"");
 		define('__BEG_RAL_EN_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_RAL_EN_NOTIFY_Y', "");
-		define('__BEG_RAL_EN_NOTIFY_N', " checked");
+		define('__BEG_RAL_EN_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_ral_di_notify'])
 	{
 	case 'Y':
-		define('__BEG_RAL_DI_NOTIFY_Y', " checked");
+		define('__BEG_RAL_DI_NOTIFY_Y', " checked=\"checked\"");
 		define('__BEG_RAL_DI_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_RAL_DI_NOTIFY_Y', "");
-		define('__BEG_RAL_DI_NOTIFY_N', " checked");
+		define('__BEG_RAL_DI_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_new_mem_notify'])
 	{
 	case 'Y':
-		define('__BEG_NEW_MEMBER_NOTIFY_Y', " checked");
+		define('__BEG_NEW_MEMBER_NOTIFY_Y', " checked=\"checked\"");
 		define('__BEG_NEW_MEMBER_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_NEW_MEMBER_NOTIFY_Y', "");
-		define('__BEG_NEW_MEMBER_NOTIFY_N', " checked");
+		define('__BEG_NEW_MEMBER_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['beg_include_own'])
 	{
 	case 'Y':
-		define('__BEG_INCLUDE_OWN_Y', " checked");
+		define('__BEG_INCLUDE_OWN_Y', " checked=\"checked\"");
 		define('__BEG_INCLUDE_OWN_N', "");
 		break;
 
 	case 'N':
 		define('__BEG_INCLUDE_OWN_Y', "");
-		define('__BEG_INCLUDE_OWN_N', " checked");
+		define('__BEG_INCLUDE_OWN_N', " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_birthday.php b/inc/modules/admin/what-config_birthday.php
index 0eedd1e1a2..42a2b8ee75 100644
--- a/inc/modules/admin/what-config_birthday.php
+++ b/inc/modules/admin/what-config_birthday.php
@@ -49,25 +49,25 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['birthday_active'])
 	{
 	case 'Y':
-		define('__BIRTHDAY_ACTIVE_Y', " checked");
+		define('__BIRTHDAY_ACTIVE_Y', " checked=\"checked\"");
 		define('__BIRTHDAY_ACTIVE_N', "");
 		break;
 
 	case 'N':
 		define('__BIRTHDAY_ACTIVE_Y', "");
-		define('__BIRTHDAY_ACTIVE_N', " checked");
+		define('__BIRTHDAY_ACTIVE_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['birthday_mode'])
 	{
 	case "DIRECT":
-		define('__BIRTHDAY_MODE_DIRECT', " checked");
+		define('__BIRTHDAY_MODE_DIRECT', " checked=\"checked\"");
 		define('__BIRTHDAY_MODE_REF'   , "");
 		break;
 
 	case "REF":
 		define('__BIRTHDAY_MODE_DIRECT', "");
-		define('__BIRTHDAY_MODE_REF'   , " checked");
+		define('__BIRTHDAY_MODE_REF'   , " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_bonus.php b/inc/modules/admin/what-config_bonus.php
index f979a22360..e7a1bb2998 100644
--- a/inc/modules/admin/what-config_bonus.php
+++ b/inc/modules/admin/what-config_bonus.php
@@ -116,122 +116,122 @@ if (isset($_POST['ok']))
 	switch ($_CONFIG['bonus_active'])
 	{
 	case 'Y':
-		define('__BONUS_ACTIVE_Y', " checked");
+		define('__BONUS_ACTIVE_Y', " checked=\"checked\"");
 		define('__BONUS_ACTIVE_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_ACTIVE_Y', "");
-		define('__BONUS_ACTIVE_N', " checked");
+		define('__BONUS_ACTIVE_N', " checked=\"checked\"");
 		break;
 	}
 	// Other bonus to de-/activate
 	switch ($_CONFIG['bonus_login_yn'])
 	{
 	case 'Y':
-		define('__BONUS_LOGIN_Y', " checked");
+		define('__BONUS_LOGIN_Y', " checked=\"checked\"");
 		define('__BONUS_LOGIN_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_LOGIN_Y', "");
-		define('__BONUS_LOGIN_N', " checked");
+		define('__BONUS_LOGIN_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_stats_yn'])
 	{
 	case 'Y':
-		define('__BONUS_STATS_Y', " checked");
+		define('__BONUS_STATS_Y', " checked=\"checked\"");
 		define('__BONUS_STATS_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_STATS_Y', "");
-		define('__BONUS_STATS_N', " checked");
+		define('__BONUS_STATS_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_order_yn'])
 	{
 	case 'Y':
-		define('__BONUS_ORDER_Y', " checked");
+		define('__BONUS_ORDER_Y', " checked=\"checked\"");
 		define('__BONUS_ORDER_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_ORDER_Y', "");
-		define('__BONUS_ORDER_N', " checked");
+		define('__BONUS_ORDER_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_ref_yn'])
 	{
 	case 'Y':
-		define('__BONUS_REF_Y', " checked");
+		define('__BONUS_REF_Y', " checked=\"checked\"");
 		define('__BONUS_REF_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_REF_Y', "");
-		define('__BONUS_REF_N', " checked");
+		define('__BONUS_REF_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_click_yn'])
 	{
 	case 'Y':
-		define('__BONUS_CLICK_Y', " checked");
+		define('__BONUS_CLICK_Y', " checked=\"checked\"");
 		define('__BONUS_CLICK_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_CLICK_Y', "");
-		define('__BONUS_CLICK_N', " checked");
+		define('__BONUS_CLICK_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_en_notify'])
 	{
 	case 'Y':
-		define('__BONUS_EN_NOTIFY_Y', " checked");
+		define('__BONUS_EN_NOTIFY_Y', " checked=\"checked\"");
 		define('__BONUS_EN_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_EN_NOTIFY_Y', "");
-		define('__BONUS_EN_NOTIFY_N', " checked");
+		define('__BONUS_EN_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_di_notify'])
 	{
 	case 'Y':
-		define('__BONUS_DI_NOTIFY_Y', " checked");
+		define('__BONUS_DI_NOTIFY_Y', " checked=\"checked\"");
 		define('__BONUS_DI_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_DI_NOTIFY_Y', "");
-		define('__BONUS_DI_NOTIFY_N', " checked");
+		define('__BONUS_DI_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_new_mem_notify'])
 	{
 	case 'Y':
-		define('__BONUS_NEW_MEMBER_NOTIFY_Y', " checked");
+		define('__BONUS_NEW_MEMBER_NOTIFY_Y', " checked=\"checked\"");
 		define('__BONUS_NEW_MEMBER_NOTIFY_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_NEW_MEMBER_NOTIFY_Y', "");
-		define('__BONUS_NEW_MEMBER_NOTIFY_N', " checked");
+		define('__BONUS_NEW_MEMBER_NOTIFY_N', " checked=\"checked\"");
 		break;
 	}
 	switch ($_CONFIG['bonus_include_own'])
 	{
 	case 'Y':
-		define('__BONUS_INCLUDE_OWN_Y', " checked");
+		define('__BONUS_INCLUDE_OWN_Y', " checked=\"checked\"");
 		define('__BONUS_INCLUDE_OWN_N', "");
 		break;
 
 	case 'N':
 		define('__BONUS_INCLUDE_OWN_Y', "");
-		define('__BONUS_INCLUDE_OWN_N', " checked");
+		define('__BONUS_INCLUDE_OWN_N', " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_cache.php b/inc/modules/admin/what-config_cache.php
index 6f0a5f4a06..ddb518f55b 100644
--- a/inc/modules/admin/what-config_cache.php
+++ b/inc/modules/admin/what-config_cache.php
@@ -40,94 +40,156 @@ if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
 // Add description as navigation point
 ADD_DESCR("admin", basename(__FILE__));
 
-if (isset($_POST['ok']))
-{
+if (isset($_POST['ok'])) {
 	// Cache path has been not changed by default so don't test it again
 	$_POST['cache_tested'] = "N";
 
 	// Check if path has been changed
-	if ($_POST['cache_path'] != $_CONFIG['cache_path'])
-	{
+	if ($_POST['cache_path'] != $_CONFIG['cache_path']) {
 		// Okay, cache path has been altered so we have to test it again!
 		$_POST['cache_tested'] = "Y";
 	}
 
 	// Delete deactivated cache files
-	if (($_POST['cache_admins'] == "N") && ($cacheInstance->cache_file("admins", true)))
-	{
+	if (($_POST['cache_admins'] == "N") && ($cacheInstance->cache_file("admins", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_acls'] == "N") && ($cacheInstance->cache_file("acls", true)))
-	{
+	if (($_POST['cache_acls'] == "N") && ($cacheInstance->cache_file("acls", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_exts'] == "N") && ($cacheInstance->cache_file("extensions", true)))
-	{
+	if (($_POST['cache_exts'] == "N") && ($cacheInstance->cache_file("extensions", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_config'] == "N") && ($cacheInstance->cache_file("config", true)))
-	{
+	if (($_POST['cache_config'] == "N") && ($cacheInstance->cache_file("config", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_modreg'] == "N") && ($cacheInstance->cache_file("modreg", true)))
-	{
+	if (($_POST['cache_modreg'] == "N") && ($cacheInstance->cache_file("modreg", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_refdepth'] == "N") && ($cacheInstance->cache_file("refdepth", true)))
-	{
+	if (($_POST['cache_refdepth'] == "N") && ($cacheInstance->cache_file("refdepth", true))) {
 		$cacheInstance->cache_destroy();
 	}
-	if (($_POST['cache_refsys'] == "N") && ($cacheInstance->cache_file("refsys", true)))
-	{
+	if (($_POST['cache_refsys'] == "N") && ($cacheInstance->cache_file("refsys", true))) {
 		$cacheInstance->cache_destroy();
 	}
 
 	// Save configuration
 	ADMIN_SAVE_SETTINGS($_POST);
-}
- else
-{
+} else {
 	// Prepare data
 	switch ($_CONFIG['cache_admins']) {
-		case 'Y': define('__ADMINS_Y', " checked"); define('__ADMINS_N', "");         break;
-		case 'N': define('__ADMINS_Y', "");         define('__ADMINS_N', " checked"); break;
+		case 'Y':
+			define('__ADMINS_Y', " checked=\"checked\"");
+			define('__ADMINS_N', "");
+			break;
+
+		case 'N':
+			define('__ADMINS_Y', "");
+			define('__ADMINS_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_acls']) {
-		case 'Y': define('__ACLS_Y', " checked"); define('__ACLS_N', "");         break;
-		case 'N': define('__ACLS_Y', "");         define('__ACLS_N', " checked"); break;
+		case 'Y':
+			define('__ACLS_Y', " checked=\"checked\"");
+			define('__ACLS_N', "");
+			break;
+
+		case 'N':
+			define('__ACLS_Y', "");
+			define('__ACLS_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_exts']) {
-		case 'Y': define('__EXTS_Y', " checked"); define('__EXTS_N', "");         break;
-		case 'N': define('__EXTS_Y', "");         define('__EXTS_N', " checked"); break;
+		case 'Y':
+			define('__EXTS_Y', " checked=\"checked\"");
+			define('__EXTS_N', "");
+			break;
+
+		case 'N':
+			define('__EXTS_Y', "");
+			define('__EXTS_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_config']) {
-		case 'Y': define('__CONFIG_Y', " checked"); define('__CONFIG_N', "");         break;
-		case 'N': define('__CONFIG_Y', "");         define('__CONFIG_N', " checked"); break;
+		case 'Y':
+			define('__CONFIG_Y', " checked=\"checked\"");
+			define('__CONFIG_N', "");
+			break;
+
+		case 'N':
+			define('__CONFIG_Y', "");
+			define('__CONFIG_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_modreg']) {
-		case 'Y': define('__MODREG_Y', " checked"); define('__MODREG_N', "");         break;
-		case 'N': define('__MODREG_Y', "");         define('__MODREG_N', " checked"); break;
+		case 'Y':
+			define('__MODREG_Y', " checked=\"checked\"");
+			define('__MODREG_N', "");
+			break;
+
+		case 'N':
+			define('__MODREG_Y', "");
+			define('__MODREG_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_refdepth']) {
-		case 'Y': define('__REFDEPTH_Y', " checked"); define('__REFDEPTH_N', "");         break;
-		case 'N': define('__REFDEPTH_Y', "");         define('__REFDEPTH_N', " checked"); break;
+		case 'Y':
+			define('__REFDEPTH_Y', " checked=\"checked\"");
+			define('__REFDEPTH_N', "");
+			break;
+
+		case 'N':
+			define('__REFDEPTH_Y', "");
+			define('__REFDEPTH_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_refsys']) {
-		case 'Y': define('__REFSYS_Y', " checked"); define('__REFSYS_N', "");         break;
-		case 'N': define('__REFSYS_Y', "");         define('__REFSYS_N', " checked"); break;
+		case 'Y':
+			define('__REFSYS_Y', " checked=\"checked\"");
+			define('__REFSYS_N', "");
+			break;
+
+		case 'N':
+			define('__REFSYS_Y', "");
+			define('__REFSYS_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_themes']) {
-		case 'Y': define('__THEMES_Y', " checked"); define('__THEMES_N', "");         break;
-		case 'N': define('__THEMES_Y', "");         define('__THEMES_N', " checked"); break;
+		case 'Y':
+			define('__THEMES_Y', " checked=\"checked\"");
+			define('__THEMES_N', "");
+			break;
+
+		case 'N':
+			define('__THEMES_Y', "");
+			define('__THEMES_N', " checked=\"checked\"");
+			break;
 	}
+
 	switch ($_CONFIG['cache_admin_menu']) {
-		case 'Y': define('__ADMIN_MENU_Y', " checked"); define('__ADMIN_MENU_N', "");         break;
-		case 'N': define('__ADMIN_MENU_Y', "");         define('__ADMIN_MENU_N', " checked"); break;
+		case 'Y':
+			define('__ADMIN_MENU_Y', " checked=\"checked\"");
+			define('__ADMIN_MENU_N', "");
+			break;
+
+		case 'N':
+			define('__ADMIN_MENU_Y', "");
+			define('__ADMIN_MENU_N', " checked=\"checked\"");
+			break;
 	}
+
 	define('__PATH', $_CONFIG['cache_path']);
 
 	// Load template
 	LOAD_TEMPLATE("admin_config_cache");
 }
+
 //
 ?>
diff --git a/inc/modules/admin/what-config_doubler.php b/inc/modules/admin/what-config_doubler.php
index 88110e3935..42bbc12e74 100644
--- a/inc/modules/admin/what-config_doubler.php
+++ b/inc/modules/admin/what-config_doubler.php
@@ -71,13 +71,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['doubler_jackpot'])
 	{
 	case 'Y':
-		define('__DOUBLER_JACKPOT_Y', " checked");
+		define('__DOUBLER_JACKPOT_Y', " checked=\"checked\"");
 		define('__DOUBLER_JACKPOT_N', "");
 		break;
 
 	case 'N':
 		define('__DOUBLER_JACKPOT_Y', "");
-		define('__DOUBLER_JACKPOT_N', " checked");
+		define('__DOUBLER_JACKPOT_N', " checked=\"checked\"");
 		break;
 	}
 
@@ -85,13 +85,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['doubler_own'])
 	{
 	case 'Y':
-		define('__DOUBLER_OWN_Y', " checked");
+		define('__DOUBLER_OWN_Y', " checked=\"checked\"");
 		define('__DOUBLER_OWN_N', "");
 		break;
 
 	case 'N':
 		define('__DOUBLER_OWN_Y', "");
-		define('__DOUBLER_OWN_N', " checked");
+		define('__DOUBLER_OWN_N', " checked=\"checked\"");
 		break;
 	}
 
@@ -99,13 +99,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['doubler_send_mode'])
 	{
 	case "DIRECT":
-		define('__DOUBLER_SEND_DIRECT', " checked");
+		define('__DOUBLER_SEND_DIRECT', " checked=\"checked\"");
 		define('__DOUBLER_SEND_RESET' , "");
 		break;
 
 	case "RESET":
 		define('__DOUBLER_SEND_DIRECT', "");
-		define('__DOUBLER_SEND_RESET' , " checked");
+		define('__DOUBLER_SEND_RESET' , " checked=\"checked\"");
 		break;
 	}
 
@@ -113,13 +113,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['doubler_sent_all'])
 	{
 	case 'Y':
-		define('__DOUBLER_SENT_ALL_Y', " checked");
+		define('__DOUBLER_SENT_ALL_Y', " checked=\"checked\"");
 		define('__DOUBLER_SENT_ALL_N', "");
 		break;
 
 	case 'N':
 		define('__DOUBLER_SENT_ALL_Y', "");
-		define('__DOUBLER_SENT_ALL_N', " checked");
+		define('__DOUBLER_SENT_ALL_N', " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_extensions.php b/inc/modules/admin/what-config_extensions.php
index 2f457430ac..4c09b2b393 100644
--- a/inc/modules/admin/what-config_extensions.php
+++ b/inc/modules/admin/what-config_extensions.php
@@ -46,8 +46,15 @@ if (isset($_POST['ok'])) {
 } else {
 	// Prepare data
 	switch ($_CONFIG['verbose_sql']) {
-		case 'Y': define('__VERBOSE_Y', " checked"); define('__VERBOSE_N', "");         break;
-		case 'N': define('__VERBOSE_Y', "");         define('__VERBOSE_N', " checked"); break;
+		case 'Y':
+			define('__VERBOSE_Y', " checked=\"checked\"");
+			define('__VERBOSE_N', "");
+			break;
+
+		case 'N':
+			define('__VERBOSE_Y', "");
+			define('__VERBOSE_N', " checked=\"checked\"");
+			break;
 	}
 
 	// Load template
diff --git a/inc/modules/admin/what-config_holiday.php b/inc/modules/admin/what-config_holiday.php
index 51878d2fcc..ffb49497d7 100644
--- a/inc/modules/admin/what-config_holiday.php
+++ b/inc/modules/admin/what-config_holiday.php
@@ -50,16 +50,16 @@ if (isset($_POST['ok']))
 	// Prepare constants for the template
 	define('__MAX_VALUE', $_CONFIG['holiday_max']);
 	define('__LOCKED'   , CREATE_TIME_SELECTIONS($_CONFIG['holiday_lock']  , "holiday_lock"  , "WDh"));
-	switch ($_CONFIG['holiday_mode'])
-	{
+
+	switch ($_CONFIG['holiday_mode']) {
 	case "RESET":
-		define('__RESET_DEFAULT' , " checked");
+		define('__RESET_DEFAULT' , " checked=\"checked\"");
 		define('__DIRECT_DEFAULT', "");
 		break;
 
 	case "DIRECT":
 		define('__RESET_DEFAULT' , "");
-		define('__DIRECT_DEFAULT', " checked");
+		define('__DIRECT_DEFAULT', " checked=\"checked\"");
 		break;
 	}
 
diff --git a/inc/modules/admin/what-config_order.php b/inc/modules/admin/what-config_order.php
index d31fef9e92..e048a10066 100644
--- a/inc/modules/admin/what-config_order.php
+++ b/inc/modules/admin/what-config_order.php
@@ -48,13 +48,13 @@ if (isset($_POST['ok'])) {
 	switch ($_CONFIG['order_max_full'])
 	{
 	case "ORDER":
-		define('__ORDER_DEFAULT', " checked");
+		define('__ORDER_DEFAULT', " checked=\"checked\"");
 		define('__MAX_DEFAULT'  , "");
 		break;
 
 	case "MAX":
 		define('__ORDER_DEFAULT', "");
-		define('__MAX_DEFAULT'  , " checked");
+		define('__MAX_DEFAULT'  , " checked=\"checked\"");
 		break;
 	}
 
@@ -80,11 +80,11 @@ if (isset($_POST['ok'])) {
 	define('_CFG_MAX_TLENGTH'   , $_CONFIG['max_tlength']);
 
 	if ($_CONFIG['test_text'] == "N") {
-		define('_CFG_TEST_TEXT_N', " checked");
+		define('_CFG_TEST_TEXT_N', " checked=\"checked\"");
 		define('_CFG_TEST_TEXT_Y', "");
 	} else {
 		define('_CFG_TEST_TEXT_N', "");
-		define('_CFG_TEST_TEXT_Y', " checked");
+		define('_CFG_TEST_TEXT_Y', " checked=\"checked\"");
 	}
 
 	switch ($_CONFIG['repay_deleted_mails']) {
@@ -108,19 +108,19 @@ if (isset($_POST['ok'])) {
 	}
 
 	if ($_CONFIG['test_subj'] == "N") {
-		define('_CFG_TEST_SUBJ_N', " checked");
+		define('_CFG_TEST_SUBJ_N', " checked=\"checked\"");
 		define('_CFG_TEST_SUBJ_Y', "");
 	} else {
 		define('_CFG_TEST_SUBJ_N', "");
-		define('_CFG_TEST_SUBJ_Y', " checked");
+		define('_CFG_TEST_SUBJ_Y', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['url_blacklist'] == "N") {
-		define('_CFG_URL_BLIST_N', " checked");
+		define('_CFG_URL_BLIST_N', " checked=\"checked\"");
 		define('_CFG_URL_BLIST_Y', "");
 	} else {
 		define('_CFG_URL_BLIST_N', "");
-		define('_CFG_URL_BLIST_Y', " checked");
+		define('_CFG_URL_BLIST_Y', " checked=\"checked\"");
 	}
 
 	// Selection list
diff --git a/inc/modules/admin/what-config_other.php b/inc/modules/admin/what-config_other.php
index 0aaf2106de..c356122bd3 100644
--- a/inc/modules/admin/what-config_other.php
+++ b/inc/modules/admin/what-config_other.php
@@ -98,83 +98,83 @@ if (isset($_POST['ok'])) {
 	}
 
 	if ($_CONFIG['order_multi_page'] == "N") {
-		define('_CFG_ORDER_MULTI_N', " checked");
+		define('_CFG_ORDER_MULTI_N', " checked=\"checked\"");
 		define('_CFG_ORDER_MULTI_Y', "");
 	} else {
 		define('_CFG_ORDER_MULTI_N', "");
-		define('_CFG_ORDER_MULTI_Y', " checked");
+		define('_CFG_ORDER_MULTI_Y', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['autosend_active'] == "N") {
-		define('_CFG_AUTOSEND_ACTIVE_N', " checked");
+		define('_CFG_AUTOSEND_ACTIVE_N', " checked=\"checked\"");
 		define('_CFG_AUTOSEND_ACTIVE_Y', "");
 	} else {
 		define('_CFG_AUTOSEND_ACTIVE_N', "");
-		define('_CFG_AUTOSEND_ACTIVE_Y', " checked");
+		define('_CFG_AUTOSEND_ACTIVE_Y', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['send_prof_update'] == "N") {
-		define('_CFG_SEND_UPDATE_N', " checked");
+		define('_CFG_SEND_UPDATE_N', " checked=\"checked\"");
 		define('_CFG_SEND_UPDATE_Y', "");
 	} else {
 		define('_CFG_SEND_UPDATE_N', "");
-		define('_CFG_SEND_UPDATE_Y', " checked");
+		define('_CFG_SEND_UPDATE_Y', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['admin_notify'] == "N") {
-		define('_CFG_ADMIN_NOTIFY_N', " checked");
+		define('_CFG_ADMIN_NOTIFY_N', " checked=\"checked\"");
 		define('_CFG_ADMIN_NOTIFY_Y', "");
 	} else {
 		define('_CFG_ADMIN_NOTIFY_N', "");
-		define('_CFG_ADMIN_NOTIFY_Y', " checked");
+		define('_CFG_ADMIN_NOTIFY_Y', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['css_php'] == "DIRECT") {
-		define('_CFG_CSS_PHP_DIRECT', " checked");
+		define('_CFG_CSS_PHP_DIRECT', " checked=\"checked\"");
 		define('_CFG_CSS_PHP_FILE', "");
 	} else {
 		define('_CFG_CSS_PHP_DIRECT', "");
-		define('_CFG_CSS_PHP_FILE', " checked");
+		define('_CFG_CSS_PHP_FILE', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['guest_menu'] == "Y") {
-		define('_CFG_GUEST_MENU_ACTIVE', " checked");
+		define('_CFG_GUEST_MENU_ACTIVE', " checked=\"checked\"");
 		define('_CFG_GUEST_MENU_INACTIVE', "");
 	} else {
 		define('_CFG_GUEST_MENU_ACTIVE', "");
-		define('_CFG_GUEST_MENU_INACTIVE', " checked");
+		define('_CFG_GUEST_MENU_INACTIVE', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['member_menu'] == "Y") {
-		define('_CFG_MEMBER_MENU_ACTIVE', " checked");
+		define('_CFG_MEMBER_MENU_ACTIVE', " checked=\"checked\"");
 		define('_CFG_MEMBER_MENU_INACTIVE', "");
 	} else {
 		define('_CFG_MEMBER_MENU_ACTIVE', "");
-		define('_CFG_MEMBER_MENU_INACTIVE', " checked");
+		define('_CFG_MEMBER_MENU_INACTIVE', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['youre_here'] == "Y") {
-		define('_CFG_YOURE_HERE_ACTIVE', " checked");
+		define('_CFG_YOURE_HERE_ACTIVE', " checked=\"checked\"");
 		define('_CFG_YOURE_HERE_INACTIVE', "");
 	} else {
 		define('_CFG_YOURE_HERE_ACTIVE', "");
-		define('_CFG_YOURE_HERE_INACTIVE', " checked");
+		define('_CFG_YOURE_HERE_INACTIVE', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['show_timings'] == "Y") {
-		define('_CFG_SHOW_TIMINGS_Y', " checked");
+		define('_CFG_SHOW_TIMINGS_Y', " checked=\"checked\"");
 		define('_CFG_SHOW_TIMINGS_N', "");
 	} else {
 		define('_CFG_SHOW_TIMINGS_Y', "");
-		define('_CFG_SHOW_TIMINGS_N', " checked");
+		define('_CFG_SHOW_TIMINGS_N', " checked=\"checked\"");
 	}
 
 	if ($_CONFIG['mailid_error_redirect'] == 'INDEX') {
-		define('_CFG_MAILID_REDIRECT_INDEX', " checked");
+		define('_CFG_MAILID_REDIRECT_INDEX', " checked=\"checked\"");
 		define('_CFG_MAILID_REDIRECT_REJECT', "");
 	} else {
 		define('_CFG_MAILID_REDIRECT_INDEX', "");
-		define('_CFG_MAILID_REDIRECT_REJECT', " checked");
+		define('_CFG_MAILID_REDIRECT_REJECT', " checked=\"checked\"");
 	}
 
 	for ($i = 0; $i <= 5; $i++) {
diff --git a/inc/modules/admin/what-config_points.php b/inc/modules/admin/what-config_points.php
index 10f003dcda..d5a7b23b92 100644
--- a/inc/modules/admin/what-config_points.php
+++ b/inc/modules/admin/what-config_points.php
@@ -173,21 +173,21 @@ WHERE mails_confirmed < %s", $REF, $REF);
 	switch ($_CONFIG['allow_direct_pay'])
 	{
 	case 'Y':
-		define('__DIRECT_Y', " checked");
+		define('__DIRECT_Y', " checked=\"checked\"");
 		define('__DIRECT_N', "");
 		break;
 
 	case 'N':
 		define('__DIRECT_Y', "");
-		define('__DIRECT_N', " checked");
+		define('__DIRECT_N', " checked=\"checked\"");
 		break;
 	}
 
 	// One-time referral bonus add-mode
 	switch ($_CONFIG['reg_points_mode'])
 	{
-		case "ref"   : define('__MODE_REF', " checked"); define('__MODE_DIRECT', "");         break;
-		case "direct": define('__MODE_REF', "");         define('__MODE_DIRECT', " checked"); break;
+		case "ref"   : define('__MODE_REF', " checked=\"checked\""); define('__MODE_DIRECT', "");         break;
+		case "direct": define('__MODE_REF', "");         define('__MODE_DIRECT', " checked=\"checked\""); break;
 	}
 
 	// Referral payout value
diff --git a/inc/modules/admin/what-config_removeip.php b/inc/modules/admin/what-config_removeip.php
new file mode 100644
index 0000000000..443d032ff8
--- /dev/null
+++ b/inc/modules/admin/what-config_removeip.php
@@ -0,0 +1,168 @@
+<?php
+/************************************************************************
+ * MXChange v0.2.1                                    Start: 10/01/2008 *
+ * ================                             Last change: 10/01/2008 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : what-config_removeip.php                         *
+ * -------------------------------------------------------------------- *
+ * Short description : Configuration for the caching system             *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Konfiguration des Caching-Systems                *
+ * -------------------------------------------------------------------- *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * For more information visit: http://www.mxchange.org                  *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
+	$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+	require($INC);
+}
+
+// Add description as navigation point
+ADD_DESCR("admin", basename(__FILE__));
+
+if (isset($_POST['ok'])) {
+	// Save configuration
+	ADMIN_SAVE_SETTINGS($_POST);
+} else {
+	// Prepare data
+	switch ($_CONFIG['removeip_anon_ip']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_ANON_IP_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_ANON_IP_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_ANON_IP_Y', "");
+			define('__CFG_REMOVEIP_ANON_IP_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_anon_host']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_ANON_HOST_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_ANON_HOST_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_ANON_HOST_Y', "");
+			define('__CFG_REMOVEIP_ANON_HOST_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_anon_ua']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_ANON_UA_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_ANON_UA_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_ANON_UA_Y', "");
+			define('__CFG_REMOVEIP_ANON_UA_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_anon_ref']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_ANON_REF_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_ANON_REF_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_ANON_REF_Y', "");
+			define('__CFG_REMOVEIP_ANON_REF_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_admin_show']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_ADMIN_SHOW_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_ADMIN_SHOW_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_ADMIN_SHOW_Y', "");
+			define('__CFG_REMOVEIP_ADMIN_SHOW_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_guest_show']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_GUEST_SHOW_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_GUEST_SHOW_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_GUEST_SHOW_Y', "");
+			define('__CFG_REMOVEIP_GUEST_SHOW_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_member_show']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_MEMBER_SHOW_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_MEMBER_SHOW_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_MEMBER_SHOW_Y', "");
+			define('__CFG_REMOVEIP_MEMBER_SHOW_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['removeip_sponsor_show']) {
+		case 'Y':
+			define('__CFG_REMOVEIP_SPONSOR_SHOW_Y', " checked=\"checked\"");
+			define('__CFG_REMOVEIP_SPONSOR_SHOW_N', "");
+			break;
+
+		case 'N':
+			define('__CFG_REMOVEIP_SPONSOR_SHOW_Y', "");
+			define('__CFG_REMOVEIP_SPONSOR_SHOW_N', " checked=\"checked\"");
+			break;
+	} // END - switch
+
+	switch ($_CONFIG['anonymous_ip']) {
+		case "127.0.0.1":
+			define('__CFG_ANONYMOUS_IP_LOCAL' , " selected=\"selected\"");
+			define('__CFG_ANONYMOUS_IP_ZERO'  , "");
+			define('__CFG_ANONYMOUS_IP_RANDOM', "");
+			break;
+
+		case "0.0.0.0":
+			define('__CFG_ANONYMOUS_IP_LOCAL' , "");
+			define('__CFG_ANONYMOUS_IP_ZERO'  , " selected=\"selected\"");
+			define('__CFG_ANONYMOUS_IP_RANDOM', "");
+			break;
+
+		case "RANDOM":
+			define('__CFG_ANONYMOUS_IP_LOCAL' , "");
+			define('__CFG_ANONYMOUS_IP_ZERO'  , "");
+			define('__CFG_ANONYMOUS_IP_RANDOM', " selected=\"selected\"");
+			break;
+	} // END - switch
+
+	// Load template
+	LOAD_TEMPLATE("admin_config_removeip");
+}
+//
+?>
diff --git a/inc/modules/admin/what-config_rewrite.php b/inc/modules/admin/what-config_rewrite.php
index eac3619b2e..a4761c9d27 100644
--- a/inc/modules/admin/what-config_rewrite.php
+++ b/inc/modules/admin/what-config_rewrite.php
@@ -40,15 +40,12 @@ if ((!defined('__SECURITY')) || (!is_admin())) {
 // Add description as navigation point
 ADD_DESCR("admin", basename(__FILE__));
 
-if (isset($_POST['ok']))
-{
+if (isset($_POST['ok'])) {
 	// Generate string
 	$MODs = array();
-	foreach ($_POST['mod'] as $mod => $sel)
-	{
+	foreach ($_POST['mod'] as $mod => $sel) {
 		// Now you can never deselect the admin module, bah!!! ;-)
-		if (($sel == "Y") || ($mod == "admin"))
-		{
+		if (($sel == "Y") || ($mod == "admin")) {
 			// Add module to queue
 			$MODs[] = $mod;
 		}
@@ -60,29 +57,23 @@ if (isset($_POST['ok']))
 
 	// Save settings
 	ADMIN_SAVE_SETTINGS($_POST);
-}
- else
-{
+} else {
 	// Load existing modules and generate TR rows for the template
 	$result = SQL_QUERY("SELECT module, title FROM "._MYSQL_PREFIX."_mod_reg ORDER BY module", __FILE__, __LINE__);
 	$SW = 2; $OUT = "";
-	while(list($mod, $title) = SQL_FETCHROW($result))
-	{
+	while(list($mod, $title) = SQL_FETCHROW($result)) {
 		// Set title to three dashes when no title is supplied
 		if (empty($title)) $title = "---";
 
 		// Already registered module?
-		if (ereg($mod, $_CONFIG['rewrite_skip']))
-		{
+		if (ereg($mod, $_CONFIG['rewrite_skip'])) {
 			// Found
-			$y = " checked";
+			$y = " checked=\"checked\"";
 			$n = "";
-		}
-		 else
-		{
+		} else {
 			// Not found
 			$y = "";
-			$n = " checked";
+			$n = " checked=\"checked\"";
 		}
 
 		// Remember data in array for the dynamic row template
diff --git a/inc/modules/admin/what-config_transfer.php b/inc/modules/admin/what-config_transfer.php
index ff966af9a8..c4d3a673ba 100644
--- a/inc/modules/admin/what-config_transfer.php
+++ b/inc/modules/admin/what-config_transfer.php
@@ -40,8 +40,7 @@ if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
 // Add description as navigation point
 ADD_DESCR("admin", basename(__FILE__));
 
-if (isset($_POST['ok']))
-{
+if (isset($_POST['ok'])) {
 	// Save settings...
 	ADMIN_SAVE_SETTINGS($_POST);
 }
@@ -52,10 +51,16 @@ define('__TRANS_BALANCE_VALUE', $_CONFIG['transfer_balance']);
 define('__TRANS_CODE_VALUE'   , $_CONFIG['transfer_code']);
 
 // Autppurge expired transfer entries?
-switch ($_CONFIG['autopurge_inactive'])
-{
-	case 'Y': define('__YES_AP', " selected=\"selected\""); define('__NO_AP', "");          break;
-	case 'N': define('__YES_AP', "");          define('__NO_AP', " selected=\"selected\""); break;
+switch ($_CONFIG['autopurge_inactive']) {
+	case 'Y':
+		define('__YES_AP', " selected=\"selected\"");
+		define('__NO_AP', "");
+		break;
+
+	case 'N':
+		define('__YES_AP', "");
+		define('__NO_AP', " selected=\"selected\"");
+		break;
 }
 
 // Time selection box
diff --git a/inc/modules/admin/what-edit_sponsor.php b/inc/modules/admin/what-edit_sponsor.php
index c80ba74830..9b4a761f0f 100644
--- a/inc/modules/admin/what-edit_sponsor.php
+++ b/inc/modules/admin/what-edit_sponsor.php
@@ -59,21 +59,21 @@ if ((!empty($_GET['id'])) && (!empty($_GET['mode']))) {
 		switch ($DATA['gender'])
 		{
 		case "M":
-			define('__GENDER_M', " selected");
+			define('__GENDER_M', " selected=\"selected\"");
 			define('__GENDER_F', "");
 			define('__GENDER_C', "");
 			break;
 
 		case "F":
 			define('__GENDER_M', "");
-			define('__GENDER_F', " selected");
+			define('__GENDER_F', " selected=\"selected\"");
 			define('__GENDER_C', "");
 			break;
 
 		case "C":
 			define('__GENDER_M', "");
 			define('__GENDER_F', "");
-			define('__GENDER_C', " selected");
+			define('__GENDER_C', " selected=\"selected\"");
 			break;
 		}
 		define('__SURNAME'    , $DATA['surname']);
diff --git a/inc/modules/admin/what-extensions.php b/inc/modules/admin/what-extensions.php
index 14b4f72721..9f3a1896fd 100644
--- a/inc/modules/admin/what-extensions.php
+++ b/inc/modules/admin/what-extensions.php
@@ -164,9 +164,6 @@ if (!empty($_GET['reg_ext'])) {
 		$ext_name = GET_EXT_NAME($id);
 		$ext_ver = GET_EXT_VERSION($ext_name);
 
-		// Free the result
-		SQL_FREERESULT($result);
-
 		if ($_CONFIG['verbose_sql']) {
 			// Load SQL commands in remove mode
 			$EXT_LOAD_MODE = "remove";
diff --git a/inc/modules/guest/what-register.php b/inc/modules/guest/what-register.php
index 860cd24d90..afaef39628 100644
--- a/inc/modules/guest/what-register.php
+++ b/inc/modules/guest/what-register.php
@@ -161,7 +161,7 @@ if (isset($_POST['ok'])) {
 
 	// Check his IP number
 	$result = SQL_QUERY_ESC("SELECT joined, last_update FROM "._MYSQL_PREFIX."_user_data WHERE REMOTE_ADDR='%s' AND (joined > (UNIX_TIMESTAMP() - %s) OR last_update > (UNIX_TIMESTAMP() - %s)) LIMIT 1",
-	 array(getenv('REMOTE_ADDR'), $_CONFIG['ip_timeout'], $_CONFIG['ip_timeout']), __FILE__, __LINE__);
+	 array(GET_REMOTE_ADDR(), $_CONFIG['ip_timeout'], $_CONFIG['ip_timeout']), __FILE__, __LINE__);
 	if ((SQL_NUMROWS($result) == 1) && (!IS_ADMIN()))
 	{
 		// Same IP in timeout range and different email address entered... Eat this, faker! ;-)
@@ -184,7 +184,7 @@ if ((isset($_POST['ok'])) && (!$FAILED))
 	$totalUsers = GET_TOTAL_DATA("CONFIRMED", "user_data", "userid", "status", true);
 
 	// Hash = MM-DD-YYYY:IP:USER_AGENT:TIMEMARK
-	$hash = generateHash(sha1($totalUsers.":".$_POST['month']."-".$_POST['day']."-".$_POST['year'].":".getenv('SERVER_NAME').":".getenv('REMOTE_ADDR').":".getenv('HTTP_USER_AGENT')."-".time())."/".RAND_NUMBER);
+	$hash = generateHash(sha1($totalUsers.":".$_POST['month']."-".$_POST['day']."-".$_POST['year'].":".getenv('SERVER_NAME').":".GET_REMOTE_ADDR().":".GET_USER_AGENT()."-".time())."/".RAND_NUMBER);
 
 	// Add design when extension sql_patches is v0.2.7 or greater
 	$ADD1 = ""; $ADD2 = "";
@@ -249,7 +249,7 @@ VALUES ('%s','%s','%s','%s','%s',%s,'%s','%s',%s, %s,%s,'%s',%s, %s,'%s','UNCONF
 		bigintval($_POST['max_mails']),
 		bigintval($_POST['refid']),
 		$hash,
-		getenv('REMOTE_ADDR'),
+		GET_REMOTE_ADDR(),
 	), __FILE__, __LINE__);
 
 	// Get his userid
diff --git a/inc/modules/guest/what-sponsor_reg.php b/inc/modules/guest/what-sponsor_reg.php
index 3ca14f12ad..7b8b0f389e 100644
--- a/inc/modules/guest/what-sponsor_reg.php
+++ b/inc/modules/guest/what-sponsor_reg.php
@@ -344,21 +344,21 @@ ORDER BY pay_name", __FILE__, __LINE__);
 			switch ($_POST['gender'])
 			{
 			case "M": // Male
-				define('__GENDER_M'  , " selected");
+				define('__GENDER_M'  , " selected=\"selected\"");
 				define('__GENDER_F'  , "");
 				define('__GENDER_C'  , "");
 				break;
 
 			case "F": // Female
 				define('__GENDER_M'  , "");
-				define('__GENDER_F'  , " selected");
+				define('__GENDER_F'  , " selected=\"selected\"");
 				define('__GENDER_C'  , "");
 				break;
 
 			case "C": // Company
 				define('__GENDER_M'  , "");
 				define('__GENDER_F'  , "");
-				define('__GENDER_C'  , " selected");
+				define('__GENDER_C'  , " selected=\"selected\"");
 				break;
 			}
 
@@ -366,13 +366,13 @@ ORDER BY pay_name", __FILE__, __LINE__);
 			switch ($_POST['receive_warnings'])
 			{
 			case "Y":
-				define('__REC_Y'    , " selected");
+				define('__REC_Y'    , " selected=\"selected\"");
 				define('__REC_N'    , "");
 				break;
 
 			case "N":
 				define('__REC_Y'    , "");
-				define('__REC_N'    , " selected");
+				define('__REC_N'    , " selected=\"selected\"");
 				break;
 			}
 
diff --git a/inc/modules/member/what-categories.php b/inc/modules/member/what-categories.php
index fcb03bd042..c9e9d2fefe 100644
--- a/inc/modules/member/what-categories.php
+++ b/inc/modules/member/what-categories.php
@@ -118,7 +118,7 @@ if ($cats > 0)
 		while (list($id, $cat) = SQL_FETCHROW($result))
 		{
 			// Default he has not joined
-			$JOINED_N = " checked"; $JOINED_Y = "";
+			$JOINED_N = " checked=\"checked\""; $JOINED_Y = "";
 
 			// Check category selection
 			$result_user = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_user_cats WHERE userid=%s AND cat_id=%s LIMIT 1",
@@ -127,13 +127,13 @@ if ($cats > 0)
 			// When we found an entry don't read it, just change the JOINED_x variables
 			if (isset($_POST['cat']))
 			{
-				if ($_POST['cat'][$id] =='Y') { $JOINED_Y = " checked"; $JOINED_N = ""; }
+				if ($_POST['cat'][$id] =='Y') { $JOINED_Y = " checked=\"checked\""; $JOINED_N = ""; }
 			}
 			 else
 			{
 				if (SQL_NUMROWS($result_user) == 1)
 				{
-					$JOINED_Y = " checked"; $JOINED_N = "";
+					$JOINED_Y = " checked=\"checked\""; $JOINED_N = "";
 				}
 
 				// Free memory
diff --git a/inc/modules/member/what-html_mail.php b/inc/modules/member/what-html_mail.php
index f8f2293235..757330928b 100644
--- a/inc/modules/member/what-html_mail.php
+++ b/inc/modules/member/what-html_mail.php
@@ -63,12 +63,12 @@ if (isset($_POST['ok']))
 
 	if ($mode == "Y")
 	{
-		define('HTML_Y', " checked");
+		define('HTML_Y', " checked=\"checked\"");
 		define('HTML_N', "");
 	}
 	 else
 	{
-		define('HTML_N', " checked");
+		define('HTML_N', " checked=\"checked\"");
 		define('HTML_Y', "");
 	}
 	LOAD_TEMPLATE("member_html_mail_settings");
diff --git a/inc/modules/member/what-transfer.php b/inc/modules/member/what-transfer.php
index ce4d26c8b7..b546599246 100644
--- a/inc/modules/member/what-transfer.php
+++ b/inc/modules/member/what-transfer.php
@@ -576,14 +576,14 @@ case "": // Overview page
 	switch ($opt_in)
 	{
 	case 'Y':
-		define('__TRANSFER_ALLOW_Y', " checked");
+		define('__TRANSFER_ALLOW_Y', " checked=\"checked\"");
 		define('__TRANSFER_ALLOW_N', "");
 		define('__TRANSFER_NEW_LINK', "<A href=\"".URL."/modules.php?module=login&amp;what=transfer&amp;mode=new\">".TRANSFER_NOW_LINK."</A>");
 		break;
 
 	case 'N':
 		define('__TRANSFER_ALLOW_Y', "");
-		define('__TRANSFER_ALLOW_N', " checked");
+		define('__TRANSFER_ALLOW_N', " checked=\"checked\"");
 		define('__TRANSFER_NEW_LINK', TRANSFER_PLEASE_ALLOW_OPT_IN);
 		break;
 	}
diff --git a/inc/modules/sponsor/account.php b/inc/modules/sponsor/account.php
index 44b1a43e7d..5032c961bc 100644
--- a/inc/modules/sponsor/account.php
+++ b/inc/modules/sponsor/account.php
@@ -114,21 +114,21 @@ if (SQL_NUMROWS($result) == 1) {
 			switch ($content['gender'])
 			{
 			case "M": // Male
-				define('__GENDER_M', " selected");
+				define('__GENDER_M', " selected=\"selected\"");
 				define('__GENDER_F', "");
 				define('__GENDER_C', "");
 				break;
 
 			case "F": // Female
 				define('__GENDER_M', "");
-				define('__GENDER_F', " selected");
+				define('__GENDER_F', " selected=\"selected\"");
 				define('__GENDER_C', "");
 				break;
 
 			case "C": // Company
 				define('__GENDER_M', "");
 				define('__GENDER_F', "");
-				define('__GENDER_C', " selected");
+				define('__GENDER_C', " selected=\"selected\"");
 				break;
 			}
 
diff --git a/inc/modules/sponsor/settings.php b/inc/modules/sponsor/settings.php
index b6f78e32f7..d8b04c9c83 100644
--- a/inc/modules/sponsor/settings.php
+++ b/inc/modules/sponsor/settings.php
@@ -89,8 +89,15 @@ if (SQL_NUMROWS($result) == 1) {
 		} else {
 			// Make yes/no selection
 			switch ($content['receive_warnings']) {
-				case "Y": define('__YES', " checked"); define('__NO', "");         break;
-				case "N": define('__YES', "");         define('__NO', " checked"); break;
+				case "Y":
+					define('__YES', " checked=\"checked\"");
+					define('__NO', "");
+					break;
+
+				case "N":
+					define('__YES', "");
+					define('__NO', " checked=\"checked\"");
+					break;
 			}
 
 			// Translate current interval into fancy string
diff --git a/inc/mysql-connect.php b/inc/mysql-connect.php
index 65ef9187fa..57230cfebb 100644
--- a/inc/mysql-connect.php
+++ b/inc/mysql-connect.php
@@ -55,7 +55,6 @@ require_once(PATH."inc/mysql-manager.php"); // Functions which interact with the
 
 // Load extensions and language
 require_once(PATH."inc/extensions.php");
-require_once(PATH."inc/language.php");
 
 // Init error handler
 function __errorHandler ($errno, $errstr, $errfile, $errline) {
diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php
index 3b795a314b..d8855d32ca 100644
--- a/inc/mysql-manager.php
+++ b/inc/mysql-manager.php
@@ -282,8 +282,17 @@ function ADD_DESCR($ACC_LVL, $file, $return = false, $output = true) {
 			//* DEBUG: */ die("<pre>".print_r($_CONFIG, true)."</pre>");
 			if (($type == "what") || (($type == "action") && ((!isset($GLOBALS['what'])) || ($GLOBALS['what'] == "overview")))) {
 				//* DEBUG: */ echo __LINE__."+".$type."+<br />\n";
-				$OUT .= "</DIV><br />\n";
-				$DEPTH="0";
+				$OUT .= "</div>\n";
+
+				// Extension removeip activated?
+				if ((EXT_IS_ACTIVE("removeip")) && (isset($_CONFIG['removeip_'.strtolower($ACC_LVL).'_show'])) && ($_CONFIG['removeip_'.strtolower($ACC_LVL).'_show'] == "Y")) {
+					// Add anoymity/privacy infos
+					$OUT .= REMOVEIP_ADD_INFOS();
+				} // END - if
+
+				// Add line-break tag
+				$OUT .= "<br />\n";
+				$DEPTH = "0";
 
 				// Handle failed logins here if not in guest
 				//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):type={$type},action={$GLOBALS['action']},what={$GLOBALS['what']},lvl={$ACC_LVL}<br />\n";
@@ -1363,7 +1372,7 @@ WHERE sid='%s' LIMIT 1",
 	} else {
 		// No entry does exists so we simply add it!
 		SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_online (module, action, what, userid, refid, is_member, is_admin, timestamp, sid, ip) VALUES ('%s','%s','%s', %s, %s, '%s','%s', UNIX_TIMESTAMP(), '%s','%s')",
-			array($mod, $act, $wht, $uid, $rid, $MEM, $ADMIN, $SID, getenv('REMOTE_ADDR')), __FILE__, __LINE__
+			array($mod, $act, $wht, $uid, $rid, $MEM, $ADMIN, $SID, GET_REMOTE_ADDR()), __FILE__, __LINE__
 		);
 	}
 
diff --git a/inc/security.php b/inc/security.php
index e636e6481e..ecbad40c34 100644
--- a/inc/security.php
+++ b/inc/security.php
@@ -54,7 +54,7 @@ echo "<HTML>
 <TR><TD height=\"10\"></TD></TR>
 <TR>
   <TD align=\"center\">
-    <STRONG>".getenv('REMOTE_ADDR')."</STRONG>
+    <STRONG>".GET_REMOTE_ADDR()."</STRONG>
   </TD>
 </TR>
 </TABLE>
diff --git a/inc/session.php b/inc/session.php
index d0e15a3f62..d3fee5875a 100644
--- a/inc/session.php
+++ b/inc/session.php
@@ -56,12 +56,12 @@ if (!empty($_CONFIG['session_save_path'])) {
 global $PHPSESSID;
 $PHPSESSID = @session_id();
 
-// Store language code in cookie
-set_session("mx_lang", $mx_lang);
-
 // Load extensions here
 require_once(PATH."inc/load_extensions.php");
 
+// Load language system
+require_once(PATH."inc/language.php");
+
 // Check if refid is set
 if ((!empty($_GET['user'])) && ($CLICK == 1) && (basename($_SERVER['PHP_SELF']) == "click.php")) {
 	// The variable user comes from the click-counter script click.php and we only accept this here
diff --git a/templates/de/html/admin/admin_config_removeip.tpl b/templates/de/html/admin/admin_config_removeip.tpl
new file mode 100644
index 0000000000..c3c1b5955b
--- /dev/null
+++ b/templates/de/html/admin/admin_config_removeip.tpl
@@ -0,0 +1,117 @@
+<form action="{!URL!}/modules.php?module=admin&amp;what=config_removeip" method="POST">
+<table border="0" cellspacing="0" cellpadding="0" align="center" class="admin_table dashed" width="500">
+<tr>
+	<td colspan="2" align="center" class="admin_title bottom2" height="30">
+		<strong>{--ADMIN_CONFIG_REMOVEIP_TITLE--}</strong>
+	</td>
+</tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ANON_IP--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_anon_ip" value="Y" class="admin_normal"{!__CFG_REMOVEIP_ANON_IP_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_anon_ip" value="N" class="admin_normal"{!__CFG_REMOVEIP_ANON_IP_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ANON_HOST--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_anon_host" value="Y" class="admin_normal"{!__CFG_REMOVEIP_ANON_HOST_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_anon_host" value="N" class="admin_normal"{!__CFG_REMOVEIP_ANON_HOST_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ANON_UA--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_anon_ua" value="Y" class="admin_normal"{!__CFG_REMOVEIP_ANON_UA_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_anon_ua" value="N" class="admin_normal"{!__CFG_REMOVEIP_ANON_UA_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ANON_REF--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_anon_ref" value="Y" class="admin_normal"{!__CFG_REMOVEIP_ANON_REF_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_anon_ref" value="N" class="admin_normal"{!__CFG_REMOVEIP_ANON_REF_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ANONYMOUS_IP--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<select name="anonymous_ip" class="admin_selexc" size="1">
+			<option value="127.0.0.1"{!__CFG_ANONYMOUS_IP_LOCAL!}>{--ADMIN_CONFIG_REMOVEIP_LOCAL--}</option>
+			<option value="0.0.0.0"{!__CFG_ANONYMOUS_IP_ZERO!}>{--ADMIN_CONFIG_REMOVEIP_ZERO--}</option>
+			<option value="RANDOM"{!__CFG_ANONYMOUS_IP_RANDOM!}>{--ADMIN_CONFIG_REMOVEIP_RANDOM--}</option>
+		</select>
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_ADMIN_SHOW--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_admin_show" value="Y" class="admin_normal"{!__CFG_REMOVEIP_ADMIN_SHOW_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_admin_show" value="N" class="admin_normal"{!__CFG_REMOVEIP_ADMIN_SHOW_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_GUEST_SHOW--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_guest_show" value="Y" class="admin_normal"{!__CFG_REMOVEIP_GUEST_SHOW_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_guest_show" value="N" class="admin_normal"{!__CFG_REMOVEIP_GUEST_SHOW_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_MEMBER_SHOW--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_member_show" value="Y" class="admin_normal"{!__CFG_REMOVEIP_MEMBER_SHOW_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_member_show" value="N" class="admin_normal"{!__CFG_REMOVEIP_MEMBER_SHOW_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr><td colspan="2" class="seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td align="right" width="350" height="20">
+		{--ADMIN_CONFIG_REMOVEIP_SPONSOR_SHOW--}
+	</td>
+	<td width="150" style="padding-left: 10px">
+		<input type="radio" name="removeip_sponsor_show" value="Y" class="admin_normal"{!__CFG_REMOVEIP_SPONSOR_SHOW_Y!} />&nbsp;{--YES--}&nbsp;
+		<input type="radio" name="removeip_sponsor_show" value="N" class="admin_normal"{!__CFG_REMOVEIP_SPONSOR_SHOW_N!} />&nbsp;{--NO--}
+	</td>
+</tr>
+<tr><td colspan="2" class="bottom2 seperator" height="5">&nbsp;</td></tr>
+<tr>
+	<td colspan="2" class="admin_footer">
+		<input type="reset" class="admin_reset" value="{--CLEAR_FORM--}" />&nbsp;*
+		<input type="submit" name="ok" class="admin_submit" value="{--SAVE_SETTINGS--}" />
+	</td>
+</tr>
+</table>
+</form>
diff --git a/templates/de/html/ext/ext_removeip.tpl b/templates/de/html/ext/ext_removeip.tpl
new file mode 100644
index 0000000000..cf8d794ecf
--- /dev/null
+++ b/templates/de/html/ext/ext_removeip.tpl
@@ -0,0 +1,16 @@
+Anonymisierungserweiterung, die derzeit die IP-Nummer in
+<strong>127.0.0.1</strong>, <strong>0.0.0.0</strong> oder Pseudo-Zufalls-IP,
+je nach Einstellung, umwandelt, den User-Agent in eine anonyme Form bringt
+und den Referer entfernt. Auch sollten Sie &uuml;ber das Verlangen von
+personenbezogenen Daten im Anmeldeformular nachdenken, welche *wirklich*
+f&uuml;r Ihren {!MT_WORD!} erforderlich sind. Sobald diese Erweiterung in Ihrem
+{!MT_WORD!} installiert ist, wird im Gast-, Mitglieds- und Adminbereich der
+Hinweis eingeblendet, unter welcher IP-Nummer Ihre Aktivit&auml;t gespeichert
+wird, falls sich Ihre Besucher anmelden oder Mitglieder einloggen sollten.<br />
+<br />
+Mehr zum Thema &quot;Anonymes Internet&quot; finden Sie [<a target="_blank"
+ href="http://www.wirspeichernnicht.de" title="Wir speichern nicht!">hier</a>].<br />
+<br />
+Auch sollten Sie &uuml;ber den Einsatz der Apache-Erweiterung [<a target="_blank"
+ href="http://packages.debian.org/sid/libapache2-mod-removeip"
+ title="Debian Sid Package">mod-removeip</a>] auf Ihrem Server nachdenken.
diff --git a/templates/de/html/removeip_level.tpl b/templates/de/html/removeip_level.tpl
new file mode 100644
index 0000000000..d05e5f7e38
--- /dev/null
+++ b/templates/de/html/removeip_level.tpl
@@ -0,0 +1,12 @@
+<table border="0" cellspacing="0" cellpadding="0" align="center" class="admin_table dashed" width="350">
+<tr>
+	<td class="admin_title bottom2">
+		Anonymit&auml;tslevel in diesem {!MT_WORD!}:
+	</td>
+</tr>
+<tr>
+	<td align="center">
+		<strong>$content</strong>
+	</td>
+</tr>
+</table>
-- 
2.39.5