curl-and-php
Re: post then get help
Date: Mon, 7 Jul 2008 18:39:08 -0400
My recommendation would be to do your first POST request normally, then take
the data you get and use a little bit of the redir_exec function:
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)));
To get the next URL, then just do a while loop, with a cURL GET request in
it, until there are no more URLs.
-Stephen
2008/7/7 ryan pal <ryanpal_at_mail.com>:
> i'm trying to figure out how i can do a "post" then a "get". due to
> restrictions on my server, i have to use the redirect script found on
> php.net:
>
> 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);
> 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 $data;
> }
> i have my curl_setopt to POST, but need to do GET also. how do setup my
> code so that i post and then do a get for the next few redirects?
>
> -- Be Yourself @ mail.com!
> Choose From 200+ Email Addresses
> Get a *Free* Account at www.mail.com <http://www.mail.com/Product.aspx>!
>
> _______________________________________________
> http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
>
>
_______________________________________________
http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
Received on 2008-07-08