cURL / Mailing Lists / curl-and-php / Single Mail

curl-and-php

Re: post then get help

From: ryan pal <ryanpal_at_mail.com>
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