note 79787 added to function.curl-setopt
| From: | contacto at hardcode dot com dot ar | Date: | Wed, 12 Dec 2007 20:34:03 +0000 |
| Subject: | note 79787 added to function.curl-setopt | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-133399@lists.php.net to get a copy of this message | ||
hey hey hey!
the problem: curl_setopt($ch,FOLLOW_LOCATION,1);
the error: trouble with open_basedir and safe_mode
the solution: a function already developed by someone
the solution n 2: the same function, modifed, works great for me..
function curl_redir_exec($ch,$debug="")
{
static $curl_loops = 0;
static $curl_max_loops = 20;
if ($curl_loops++ >= $curl_max_loops)
{
$curl_loops = 0;
return FALSE;
}
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$debbbb = $data;
list($header, $data) = explode("\n\n", $data, 2);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302) {
$matches = array();
preg_match('/Location:(.*?)\n/', $header, $matches);
$url = @parse_url(trim(array_pop($matches)));
//print_r($url);
if (!$url)
{
//couldn't process the url to redirect to
$curl_loops = 0;
return $data;
}
$last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
/* if (!$url['scheme'])
$url['scheme'] = $last_url['scheme'];
if (!$url['host'])
$url['host'] = $last_url['host'];
if (!$url['path'])
$url['path'] = $last_url['path'];*/
$new_url = $url['scheme'] . '://' . $url['host'] .
$url['path'] .
($url['query']?'?'.$url['query']:'');
curl_setopt($ch, CURLOPT_URL, $new_url);
// debug('Redirecting to', $new_url);
return curl_redir_exec($ch);
} else {
$curl_loops=0;
return $debbbb;
}
}
just use this function without de FOLLOW_LOCATION and should work. the problem was that when you get
to the line where you return the data if http_code was different than 301 oe 302, $data has obsolete
information or none. so $debbbb does the job.
hope this helps someone out there
thanks from argentina
----
Server IP: 190.2.55.3
Probable Submitter: 201.250.120.254
----
Manual Page -- http://www.php.net/manual/en/function.curl-setopt.php
Edit -- https://master.php.net/note/edit/79787
Del: integrated -- https://master.php.net/note/delete/79787/integrated
Del: useless -- https://master.php.net/note/delete/79787/useless
Del: bad code -- https://master.php.net/note/delete/79787/bad+code
Del: spam -- https://master.php.net/note/delete/79787/spam
Del: non-english -- https://master.php.net/note/delete/79787/non-english
Del: in docs -- https://master.php.net/note/delete/79787/in+docs
Del: other reasons-- https://master.php.net/note/delete/79787
Reject -- https://master.php.net/note/reject/79787
Search -- https://master.php.net/manage/user-notes.php