I have the following code which is doing an HTTP/POST to log into a web form. The cookies returned by the site are stored in the file cookies.txt
.
$ch = curl_init();
$opts = array(
CURLOPT_URL=> $projectUrl,
CURLOPT_POST=> true,
CURLOPT_FOLLOWLOCATION=> true,
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_COOKIEJAR=> 'cookies.txt',
CURLOPT_POSTFIELDS=> http_build_query($data),
);
curl_setopt_array($ch, $opts);
$ret = curl_exec($ch);
curl_close($ch);
I've confirmed that the login is successful (because the value of $ret
is the content of the page behind the form.
Next, I have a little bit of code which parses the cookie file written by curl and does a set_cookie
for each cookie.
As far as I can tell, this is always just the PHPSESSION cookie.
$cookies = parseCookieFile('cookies.txt');
foreach($cookies as $c) {
if(!setcookie($c["name"], $c["value"], $c["expires"], $c["path"], $c["domain"], $c["secure"])) {
echo "ERROR: Could not write cookie {$c["name"]}<br />";
}
}
My hope was, having done all this on the backend, I'd be able to browse to the site I logged into and it would detect the session cookies and pass me on through.
Unfortunately, this is not the case. I just end up back at the login form.
Is there some stupid/obvious reason why this isn't going to work?