curl-and-php
Re: post then get help
Date: Mon, 7 Jul 2008 21:43:07 -0400
Hey,
After the first POST, you only need that little snippet from the function to
get the new Location header.
Once you've got the new URL from your special POST request, you can actually
just use the full function for the rest of your requests.
About using GET, unless you explicitly tell cURL to use POST or PUT or
something, it defaults to a GET request, so you shouldn't have to worry.
-Stephen
2008/7/7 ryan pal <ryanpal_at_mail.com>:
> stephen,
>
> i see you displayed only a little bit of the redirect function. are you
> suggesting i omit the rest?
>
> also, how do you do a get request? use the CURLOPT_HTTPGET?
>
> oh and one more thing. should this be a seperate function since you
> mention i should do the POST as normal?
>
> thanks,
> ryan
>
> ----- Original Message -----
> From: "Stephen Pynenburg"
> To: "curl with PHP"
> Subject: 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
>
>
> -- 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