curl-and-php
Re: post then get help
Date: Mon, 7 Jul 2008 20:09:38 -0500
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://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://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
Received on 2008-07-08