im having some problems with curls and i dont know how to solve them.
the idea is to get a user's username and pw and post it into an external webpage.
Here is the code:
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://sso.uc.cl/cas/login?service=https://portaluc.puc.cl/uPortal/Login"); // URL to post
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username=$usuario&password=$pw");
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec( $ch ); // runs the post
curl_close($ch);
echo "Reply Response: " . $result; // echo reply response
here is the error:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/th000862/public_html/encuesta/login2.php on line 10
After that error, the user is not logged in into the external webpage.
That error means that your PHP configuration is prohibiting you from following the location. There are a few ways you could work around the problem without installing additional libraries as suggested by @mario.
php_value safe_mode off
in it.ini_set('safe_mode', false);
in your PHP file.If none of the above works, you could also do something along these lines:
$ch = curl_init('https://sso.uc.cl/cas/login?service=https://portaluc.puc.cl/uPortal/Login');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=' . urlencode($usuario) . '&password=' . urlencode($pw));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
// Look to see if there's a location header.
if ( ! empty($result) )
if ( preg_match('/Location: (.+)/i', $result, $matches) )
{
// $matches[1] will contain the URL.
// Perform another cURL request here to retrieve the content.
}
and too, you need do this: for access of pages using https protocols,you need change CURLOPT_SSL_VERIFYPEER to false.
try this:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With