From 4448b8db7f59b4408a3ebcad2cb1ac77f6b38b8a Mon Sep 17 00:00:00 2001 From: patdenice Date: Sun, 12 Dec 2010 10:16:12 +0000 Subject: merge r8089 from branch 2.1 to trunk feature 2057: use http_build_query instead of add_url_params for GET data. git-svn-id: http://piwigo.org/svn/trunk@8090 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/functions.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'admin/include/functions.php') diff --git a/admin/include/functions.php b/admin/include/functions.php index 6f2ce02e2..81723ad9f 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -1725,7 +1725,11 @@ function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_ // Initialization $method = empty($post_data) ? 'GET' : 'POST'; $request = empty($post_data) ? '' : http_build_query($post_data, '', '&'); - $src = add_url_params($src, $get_data, '&'); + if (!empty($get_data)) + { + $src .= strpos($src, '?') === false ? '?' : '&'; + $src .= http_build_query($get_data, '', '&'); + } // Initialize $dest is_resource($dest) or $dest = ''; @@ -1741,7 +1745,7 @@ function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_ if ($method == 'POST') { @curl_setopt($ch, CURLOPT_POST, 1); - @curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); + @curl_setopt($ch, CURLOPT_POSTFIELDS, $request); } $content = @curl_exec($ch); $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE); @@ -1765,10 +1769,13 @@ function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_ $opts = array( 'http' => array( 'method' => $method, - 'content' => $request, 'user_agent' => $user_agent, ) ); + if ($method == 'POST') + { + $opts['http']['content'] = $request; + } $context = @stream_context_create($opts); $content = @file_get_contents($src, false, $context); if ($content !== false) @@ -1791,8 +1798,11 @@ function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_ $http_request = $method." ".$path." HTTP/1.0\r\n"; $http_request .= "Host: ".$host."\r\n"; - $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; - $http_request .= "Content-Length: ".strlen($request)."\r\n"; + if ($method == 'POST') + { + $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; + $http_request .= "Content-Length: ".strlen($request)."\r\n"; + } $http_request .= "User-Agent: ".$user_agent."\r\n"; $http_request .= "Accept: */*\r\n"; $http_request .= "\r\n"; -- cgit v1.2.3