From: Roland Häder Date: Fri, 12 Aug 2011 19:30:02 +0000 (+0000) Subject: HTTP-related functions refactured: X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=commitdiff_plain;h=5d8f02c56cda6c3e960b50d066e9c556d368a0ff HTTP-related functions refactured: - Function extractHostnameFromUrl() moved to http-functions.php - Now all sendFooRequest() functions, except sendRawRequest() are having the structure in first lines (POST requests doesn't have parts in URL for this script). - TODOs.txt update --- diff --git a/DOCS/TODOs.txt b/DOCS/TODOs.txt index e80849d1ea..1b8e58ba31 100644 --- a/DOCS/TODOs.txt +++ b/DOCS/TODOs.txt @@ -32,7 +32,7 @@ ./inc/extensions/ext-network.php:36: * @TODO Der Werbepartner.cc: Surfbar click not correct * ./inc/extensions/ext-network.php:37: * @TODO Der Werbepartner.cc: Textlink not not correct * ./inc/extensions/ext-network.php:38: * @TODO Yoo!Media: What is LayerAd compared to Layer click? * -./inc/extensions/ext-network.php:93: // @TODO network_type_handle is an internal name and needs documentation +./inc/extensions/ext-network.php:94: // @TODO network_type_handle is an internal name and needs documentation ./inc/extensions/ext-newsletter.php:218: // @TODO Move these into configuration ./inc/extensions/ext-order.php:358: // @TODO This should be moved out to inc/daily/ ./inc/extensions/ext-rallye.php:341: // @TODO Move this code into a hook @@ -45,13 +45,13 @@ ./inc/filter/bonus_filter.php:56: // @TODO This query isn't right, it will only update if the user was for a longer time away! ./inc/filter/cache_filter.php:92: // @TODO This should be rewritten not to load the cache file for just checking if it is there for save removal. ./inc/filter/forced_filter.php:73: // @TODO This part is unfinished -./inc/functions.php:1222: // @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ? -./inc/functions.php:1310: // @TODO Are these convertions still required? -./inc/functions.php:1330:// @TODO Rewrite this function to use readFromFile() and writeToFile() +./inc/functions.php:1183: // @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ? +./inc/functions.php:1271: // @TODO Are these convertions still required? +./inc/functions.php:1291:// @TODO Rewrite this function to use readFromFile() and writeToFile() ./inc/functions.php:156:// @TODO Rewrite this to an extension 'smtp' -./inc/functions.php:1940: // @TODO Find a way to cache this -./inc/functions.php:2041: // @TODO This is still very static, rewrite it somehow -./inc/functions.php:2236: // @TODO Rename column data_type to e.g. mail_status +./inc/functions.php:1901: // @TODO Find a way to cache this +./inc/functions.php:2002: // @TODO This is still very static, rewrite it somehow +./inc/functions.php:2197: // @TODO Rename column data_type to e.g. mail_status ./inc/gen_sql_patches.php:95:// @TODO Rewrite this to a filter ./inc/install-functions.php:57: // @TODO DEACTIVATED: changeDataInLocalConfigurationFile('OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0); ./inc/language/de.php:1073: // @TODO Rewrite these two constants @@ -345,6 +345,7 @@ ./templates/de/html/member/member_surfbar_list.tpl:1: ./templates/de/html/member/member_surfbar_start_dynamic.tpl:1: ./templates/de/html/member/member_surfbar_start_static.tpl:1: +./templates/de/html/menu/menu_seperator.tpl:1: ./templates/xml/admin/admin_del_do_surfbar_urls.xml:1: ./templates/xml/admin/admin_del_show_surfbar_urls.xml:1: ### ### template-warnings.log follows: ### ### diff --git a/inc/functions.php b/inc/functions.php index d58f4fd623..e25da2007a 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -783,45 +783,6 @@ function createFancyTime ($stamp) { return $ret; } -// Extract host from script name -function extractHostnameFromUrl (&$script) { - // Use default SERVER_URL by default... ;) So? - $url = getServerUrl(); - - // Is this URL valid? - if (substr($script, 0, 7) == 'http://') { - // Use the hostname from script URL as new hostname - $url = substr($script, 7); - $extract = explode('/', $url); - $url = $extract[0]; - // Done extracting the URL :) - } // END - if - - // Extract host name - $host = str_replace('http://', '', $url); - if (isInString('/', $host)) { - $host = substr($host, 0, strpos($host, '/')); - } // END - if - - // Generate relative URL - //* DEBUG: */ debugOutput('SCRIPT=' . $script); - if (substr(strtolower($script), 0, 7) == 'http://') { - // But only if http:// is in front! - $script = substr($script, (strlen($url) + 7)); - } elseif (substr(strtolower($script), 0, 8) == 'https://') { - // Does this work?! - $script = substr($script, (strlen($url) + 8)); - } - - //* DEBUG: */ debugOutput('SCRIPT=' . $script); - if (substr($script, 0, 1) == '/') { - $script = substr($script, 1); - } // END - if - - // Return host name - return $host; -} - // Taken from www.php.net isInStringIgnoreCase() user comments function isEmailValid ($email) { // Check first part of email address diff --git a/inc/http-functions.php b/inc/http-functions.php index 0dfce733ea..36f0296eab 100644 --- a/inc/http-functions.php +++ b/inc/http-functions.php @@ -58,11 +58,35 @@ function sendHttpHeaders () { sendHeader('Content-Language: ' . getLanguage()); } +// Checks wether the URL is full-qualified (http[s]:// + hostname [+ request data]) +function isFullQualifiedUrl ($url) { + // Do we have cache? + if (!isset($GLOBALS[__FUNCTION__][$url])) { + // Determine it + $GLOBALS[__FUNCTION__][$url] = ((substr($url, 0, 7) == 'http://') || (substr($url, 0, 8) == 'https://')); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__][$url]; +} + // Generates the full GET URL from given base URL and data array function generateGetUrlFromBaseUrlData ($baseUrl, $requestData = array()) { // Init URL $getUrl = $baseUrl; + // Is it full-qualified? + if (!isFullQualifiedUrl($getUrl)) { + // Need to prepend a slash? + if (substr($getUrl, 0, 1) != '/') { + // Prepend it + $getUrl = '/' . $getUrl; + } // END - if + + // Prepend http://hostname from mxchange.org server + $getUrl = getServerUrl() . $getUrl; + } // END - if + // Add data $body = http_build_query($requestData, '', '&'); @@ -111,12 +135,18 @@ function sendHeadRequest ($baseUrl, $requestData = array()) { // Generate full GET URL $getUrl = generateGetUrlFromBaseUrlData($baseUrl, $requestData); + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // Extract hostname and port from script $host = extractHostnameFromUrl($baseUrl); - // Remove http[s]:// from url - $getUrl = removeHttpHostNameFromUrl($getUrl); - // Generate HEAD request header $request = 'HEAD ' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -144,12 +174,18 @@ function sendGetRequest ($baseUrl, $requestData = array(), $removeHeader = false // Generate full GET URL $getUrl = generateGetUrlFromBaseUrlData($baseUrl, $requestData); + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // Extract hostname and port from script $host = extractHostnameFromUrl($baseUrl); - // Remove http[s]:// from url - $getUrl = removeHttpHostNameFromUrl($getUrl); - // Generate GET request header $request = 'GET ' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -180,15 +216,24 @@ function sendGetRequest ($baseUrl, $requestData = array(), $removeHeader = false // Send a POST request function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { + // Copy baseUrl to getUrl + $getUrl = $baseUrl; + + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // Extract host name from script $host = extractHostnameFromUrl($baseUrl); // Construct request body $body = http_build_query($requestData, '', '&'); - // Remove http(s)://$host from base URL - $baseUrl = removeHttpHostNameFromUrl($baseUrl); - // Generate POST request header $request = 'POST ' . trim($baseUrl) . ' HTTP/1.0' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -222,7 +267,7 @@ function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { return $response; } -// Sends a raw request to another host +// Sends a raw request (string) to given host (hostnames will be solved) function sendRawRequest ($host, $request) { //* DEBUG: */ die('host='.$host.',request=
'.$request.'
'); // Init errno and errdesc with 'all fine' values @@ -669,5 +714,44 @@ next[100]=
'.replaceReturnNewLine(htmlentities(call_user_func_array($mbPrefi
 	}
 } // END - if
 
+// Extract host from script name
+function extractHostnameFromUrl (&$script) {
+	// Use default SERVER_URL by default... ;) So?
+	$url = getServerUrl();
+
+	// Is this URL valid?
+	if (substr($script, 0, 7) == 'http://') {
+		// Use the hostname from script URL as new hostname
+		$url = substr($script, 7);
+		$extract = explode('/', $url);
+		$url = $extract[0];
+		// Done extracting the URL :)
+	} // END - if
+
+	// Extract host name
+	$host = str_replace('http://', '', $url);
+	if (isInString('/', $host)) {
+		$host = substr($host, 0, strpos($host, '/'));
+	} // END - if
+
+	// Generate relative URL
+	//* DEBUG: */ debugOutput('SCRIPT=' . $script);
+	if (substr(strtolower($script), 0, 7) == 'http://') {
+		// But only if http:// is in front!
+		$script = substr($script, (strlen($url) + 7));
+	} elseif (substr(strtolower($script), 0, 8) == 'https://') {
+		// Does this work?!
+		$script = substr($script, (strlen($url) + 8));
+	}
+
+	//* DEBUG: */ debugOutput('SCRIPT=' . $script);
+	if (substr($script, 0, 1) == '/') {
+		$script = substr($script, 1);
+	} // END - if
+
+	// Return host name
+	return $host;
+}
+
 // [EOF]
 ?>