Using cURL to get the last URL address of POSTED is simply add this line to the cURL request:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
To know the last url from post request, after curl_exec, add this line:
curl_exec($ch); $url = curl_getinfo($ch , CURLINFO_EFFECTIVE_URL); echo $url;
Full sxample:
$url = 'http://localhost/images/140011917409pdcin_tmb.jpg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
//don't download content, false
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
//var_dump($data);
/* Check for 404 (file not found). */
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404)
{
$status = false;
}
else
{
$status = true;
}
/* find last url of post*/
$url = curl_getinfo($ch , CURLINFO_EFFECTIVE_URL);
$url_pieces = explode('?', $url);
/* example of process last url */
switch ($url_pieces[0])
{
case "http://localhost/notactive.html":
$status = false;
break;
case "http://localhost/linkerror.html":
$status = false;
break;
default:
$status = true;
break;
}
//print_r($url);
curl_close($ch);
What do you think?