Index: wp-includes/load.php
===================================================================
--- wp-includes/load.php	(revision 18324)
+++ wp-includes/load.php	(working copy)
@@ -645,4 +645,144 @@
 	return false;
 }
 
+/**
+ * Loads getters for _GET, _POST, _SERVER and _COOKIE as provided by PHP
+ * minus magic_quotes_gpc escaping
+ *
+ * @access private
+ * @since x.x
+ */
+function wp_input_init() {
+	wp_input_get();
+	wp_input_post();
+	wp_input_cookie();
+	wp_input_server();
+}
+
+/**
+ * Goes through the provided super global and strips slashes if magic_quotes_qpc
+ * is turned on
+ *
+ * @param array $superglobal
+ * @return array Cleaned super global
+ */
+function wp_input_load($superglobal) {
+	if ( get_magic_quotes_gpc() )
+		$superglobal = stripslashes_deep($superglobal);
+	return $superglobal;
+}
+
+/**
+ * Getter for the _GET superglobal
+ *
+ * @staticvar boolean $loaded Determines if array has been loaded
+ * @staticvar array $vals Holds the super global values for fetching later
+ * @param string $key Name of specific key to fetch
+ * @return mixed Value of the super global key or null
+ */
+function wp_input_get($key = null) {
+	static $loaded = false;
+	static $vals = array();
+
+	if ( !$loaded ) {
+		$vals = wp_input_load($_GET);
+		$loaded = true;
+		return true;
+	}
+
+	if ( array_key_exists( $key, $vals ) )
+		return $vals[$key];
+	return null;
+
+}
+
+/**
+ * Getter for the _POST superglobal
+ *
+ * @staticvar boolean $loaded Determines if array has been loaded
+ * @staticvar array $vals Holds the super global values for fetching later
+ * @param string $key Name of specific key to fetch
+ * @return mixed Value of the super global key or null
+ */
+function wp_input_post($key = null) {
+	static $loaded = false;
+	static $vals = array();
+
+	if ( !$loaded ) {
+		$vals = wp_input_load($_POST);
+		$loaded = true;
+		return true;
+	}
+
+	if ( array_key_exists( $key, $vals ) )
+		return $vals[$key];
+	return null;
+
+}
+
+/**
+ * Getter for _GET and _POST (similar to _REQUEST).  Checks _POST first and then _GET
+ *
+ * @param string $key
+ * @return mixed Value of super global or null if none found
+ */
+function wp_input_get_post($key) {
+	$var_post = wp_input_post($key);
+	if ( $var_post !== null )
+		return $var_post;
+	$var_get = wp_input_get($key);
+	if ( $var_get !== null )
+		return $var_get;
+	return null;
+}
+
+/**
+ * Getter for the _COOKIE superglobal
+ *
+ * @staticvar boolean $loaded Determines if array has been loaded
+ * @staticvar array $vals Holds the super global values for fetching later
+ * @param string $key Name of specific key to fetch
+ * @return mixed Value of the super global key or null
+ */
+function wp_input_cookie($key = null) {
+	static $loaded = false;
+	static $vals = array();
+
+	if ( !$loaded ) {
+		$vals = wp_input_load($_COOKIE);
+		$loaded = true;
+		return true;
+	}
+
+	if ( array_key_exists( $key, $vals ) )
+		return $vals[$key];
+	return null;
+
+}
+
+/**
+ * Getter for the _SERVER superglobal. No magic_quotes_gpc cleaning needed
+ *
+ * @staticvar boolean $loaded Determines if array has been loaded
+ * @staticvar array $vals Holds the super global values for fetching later
+ * @param string $key Name of specific key to fetch
+ * @return mixed Value of the super global key or null
+ */
+function wp_input_server($key = null) {
+	static $loaded = false;
+	static $vals = array();
+
+	if ( !$loaded ) {
+		$vals = $_SERVER;
+		$loaded = true;
+		return true;
+	}
+
+	if ( array_key_exists( $key, $vals ) )
+		return $vals[$key];
+	return null;
+
+}
+
+
 ?>
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 18324)
+++ wp-settings.php	(working copy)
@@ -138,6 +138,9 @@
 require( ABSPATH . WPINC . '/nav-menu-template.php' );
 require( ABSPATH . WPINC . '/admin-bar.php' );
 
+// Set initial getters for _GET, _POST, _COOKIE and _SERVER
+wp_input_init();
+
 // Load multisite-specific files.
 if ( is_multisite() ) {
 	require( ABSPATH . WPINC . '/ms-functions.php' );
