开发者

Trying to log into a site with the cURL extension of PHP

开发者 https://www.devze.com 2023-01-15 13:41 出处:网络
Basically, I\'m trying to log into a site. I\'ve got it logging in, but the site redirects to another part of the site, and upon doing so, it redirects my browser as well.

Basically, I'm trying to log into a site. I've got it logging in, but the site redirects to another part of the site, and upon doing so, it redirects my browser as well.

For example:

It successfully logs into http://example.com/login.php

But then my browser goes to http://mysite.com/site.php?page=loggedin

I just want it to return the contents of the page, not be redirected to it.

How would I do this?

As requested, here is my code

// create curl resource 
$ch = curl_init(); 

// set开发者_StackOverflow中文版 url 
curl_setopt($ch, CURLOPT_URL, $loginURL); 

//Some setopts
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWREDIRECT, FALSE);
curl_setopt($ch, CURLOPT_REFERRER, $referrer);

// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch);

echo $output;   


Figured it out. The webpage was echoing a meta refresh, and since I was echoing the output, my browser followed.

Removed the echo $output; and it no longer does that.

I feel kind of dumb for not recognizing that in the beginning.

Thanks everyone.


Using cURL you have to find the redirect and follow it, then return that page's content. I'm not sure why your browser would be redirecting unless you have some weird header code that you are returning from the login page.


set CURLOPT_FOLLOWLOCATION to false.

curl_setopt($ch , CURLOPT_FOLLOWLOCATION , FALSE);

this might help you.

0

精彩评论

暂无评论...
验证码 换一张
取 消