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

curl-and-php

Object Moved problem on web host provider (works on local machine)

From: ryan pal <ryanpal_at_mail.com>
Date: Wed, 9 Apr 2008 13:25:46 -0500

Hello everyone,
I'm pretty new to cURL and I'm trying to get my frist script to work. I
need to extract data from a site which posts to another ASP page, which
then displays it's results on a 3rd asp page. I'm able to get this to
work correctly on my local computer, however, I'm running into
difficulties on my web host. Original problem on my web host was
"Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION
cannot be activated when in safe_mode or an open_basedir is set in..." To
prevent this, I chose to use a function found on one of the forums (see
script below). Now I don't get this error anymore, however the page
doesn't seem to redirect correctly. Here are the details, any info would
be appreciated. Local Host:
-----------
safe_mode: off
open_basedir: not set
Web Host Info:
---------------
PHP v 5.2.5
safe_mode: off
open_basedir:
/tmp:/usr/local/4admin/apache/vhosts/<mydomain>.com/httpdocs:/usr/local/4admin/apache/vhosts/<mydomain>.com/logs:/usr/local/4admin/apache/vhosts/<mydomain>.com/storage:/usr/local/4admin/apache/vhosts/<mydomain>.com/web_users:/usr/local/4admin/apache/lib/php:/usr/local/4admin/apache/php5/lib/php:/usr/local/4admin/phpstuff
SCRIPT:
------
<?php//function in place of the FOLLOWLOCATION
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;
}
}$url = "http://www.miami-dadeclerk.com/public-records/pubvalidate1.asp?";
$ch = curl_init(); //initialize curl handle
curl_setopt($ch, CURLOPT_URL,$url); //set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //allow redirects
curl_redir_exec($ch,$debug="");
curl_setopt($ch, CURLOPT_COOKIEFILE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return into variable
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //timeout after 6s
curl_setopt($ch, CURLOPT_POST, 1); //set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS,
"pfirst_party=anderson%2C+john&prec_date_from=04%2F03%2F2008&prec_date_to=04%2F03%2F2008&pdoc_type=LIS&submit=Submit");
//add post fields
$result = curl_exec($ch); //run the whole process
curl_close($ch);echo $result;
//echo $num;
?>
OUTPUT:
------
HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Wed, 09 Apr 2008
17:49:49 GMT X-Powered-By: ASP.NET HTTP/1.1 302 Object moved Server:
Microsoft-IIS/5.0 Date: Wed, 09 Apr 2008 17:49:50 GMT X-Powered-By:
ASP.NET Location: searchresult.asp?page=1 Content-Length: 144
Content-Type: text/html Expires: Wed, 09 Apr 2008 17:48:49 GMT
Set-Cookie:
Rides20=CKYstrQuery=&CKYprange=&CKYpmisc%5Fref=&CKYpblock%5Fno=&CKYpcfn%5Fseq=&CKYpcfn%5Fyear=&CKYpsubdivision%5Fname=&CKYpdoc%5Ftype=LIS&CKYpdoc%5Fdate%5Fto=&CKYpdoc%5Fdate%5Ffrom=&CKYpfolio%5Fnumber=&CKYpplat%5Fpage=&CKYpplat%5Fbook=&CKYporig%5Frec%5Fpage=&CKYporig%5Frec%5Fbook=&CKYprec%5Fpage=&CKYprec%5Fbook=&CKYporig%5Fcfn%5Fseq=&CKYporig%5Fcfn%5Fyear=&CKYprec%5Fdate%5Fto=04%2F03%2F2008&CKYprec%5Fdate%5Ffrom=04%2F03%2F2008&CKYpconsid%5Famt%5Fto=&CKYpconsid%5Famt%5Ffrom=&CKYpsecond%5Fparty%5Ftype=&CKYpfirst%5Fparty%5Ftype=&CKYpquery%5Forder=&CKYpsecond%5Fparty=&CKYpfirst%5Fparty=ANDERSON%2C+JOHN&CKYptownship=&CKYpsection=&CKYplegal%5Fdescription=&CKYprows%5Freturned=412&CKYVisible=1&CKYPremierSearch=False;
path=/public-records Set-Cookie:
ASPSESSIONIDQCRAASBB=FFKPADAAFBNMMHCDEMDBFNDI; path=/ Cache-control:
private
Object Moved
This object may be found here.

-- 
Want an e-mail address like mine?
Get a free e-mail account today at www.mail.com!

_______________________________________________
http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
Received on 2008-04-09