- Bug fixed: username or password with accented character are now accepted for upgrade.

- Simplify query in  pwg_session_write function.
- Retrieve data with cURL method in fetchRemote function now work with forwarded URL.

git-svn-id: http://piwigo.org/svn/trunk@2900 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
patdenice 2008-11-22 23:33:17 +00:00
commit 61d8bf79c1
3 changed files with 22 additions and 24 deletions

View file

@ -1948,6 +1948,10 @@ function cat_admin_access($category_id)
*/
function fetchRemote($src, &$dest, $user_agent='Piwigo', $step=0)
{
// After 3 redirections, return false
if ($step > 3) return false;
// Initialize $dest
is_resource($dest) or $dest = '';
// Try curl to read remote file
@ -1955,16 +1959,20 @@ function fetchRemote($src, &$dest, $user_agent='Piwigo', $step=0)
{
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_URL, $src);
@curl_setopt($ch, CURLOPT_HEADER, 0);
@curl_setopt($ch, CURLOPT_HEADER, 1);
@curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
is_resource($dest) ?
@curl_setopt($ch, CURLOPT_FILE, $dest):
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = @curl_exec($ch);
$header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
@curl_close($ch);
if ($content !== false)
{
is_resource($dest) or $dest = $content;
if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
{
return fetchRemote($m[1], $dest, $user_agent, $step+1);
}
$content = substr($content, $header_length);
is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
return true;
}
}
@ -1981,11 +1989,6 @@ function fetchRemote($src, &$dest, $user_agent='Piwigo', $step=0)
}
// Try fsockopen to read remote file
if ($step > 3)
{
return false;
}
$src = parse_url($src);
$host = $src['host'];
$path = isset($src['path']) ? $src['path'] : '/';