Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php ssl curl : object moved error

Tags:

php

curl

ssl

Im developing a php script to scrape this website and email me the data to me. It seems to be logging in correctly because when the script runs, it seems to redirect and give me a message saying Object moved Here and the here is linked to the default.aspx page which is what exactly happens when I manually login.

Below is my script:

<?php
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";

// INIT CURL
$ch = curl_init();

//init curl 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, 'https://access.manager.com/Login.aspx');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

// Set your login and password for authentication
curl_setopt($ch, CURLOPT_USERPWD, 'testu:passwd');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);


// This is occassionally required to stop CURL from verifying the peer's certificate.
// CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if
// CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a
// common name and also verify that it matches the hostname provided)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Optional: Return the result instead of printing it
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'Username=testu&Password=passwd');

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
# not to print out the results of its query.
# Instead, it will return the results as a string return value
# from curl_exec() instead of the usual true/false.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

// EXECUTE 1st REQUEST (FORM LOGIN)
$store = curl_exec ($ch);
echo $store;
// CLOSE CURL
curl_close ($ch);

?>

any ideas what could be preventing the page to output the page correctly? I'm guessing its not redirecting correctly.

thanks in advance

like image 640
phill Avatar asked Aug 14 '09 18:08

phill


2 Answers

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

Change that to 1. Also, set this after CURLOPT_SSL_VERIFYPEER:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
like image 139
Alix Axel Avatar answered Nov 18 '22 10:11

Alix Axel


You can use following:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_MAXREDIRS,5); // return into a variable
like image 3
Rishabh Seth Avatar answered Nov 18 '22 10:11

Rishabh Seth