0

I'm trying to realize a simple authorization using login and password. I get a cookie but not sure if authorized or not (how to check?), also I am trying to redirect after authorization but as a result, I get Error 404 after my code tried to redirect (followlocation, true).

Here's my php code

Trying just to redirect but 404 occurred.

 $curl = curl_init($url); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($curl); echo $result; curl_close($curl); 

And here's trying to authorize, not sure if it works (but I get cookie and in header I get 200 OK)

$loginData = [ urlencode('j_username') => 'someName', urlencode('j_password') => 'somePassword' ]; $curl = curl_init($url); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_VERBOSE, 2); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($loginData)); curl_setopt($curl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/authCookie.txt'); curl_setopt($curl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/authCookie.txt'); $result = curl_exec($curl); echo $result; curl_close($curl); 

Also, I use urlencode but not sure if I use it in the right way (I have it in curl like $curl --location --request POST 'http://someFullName' \ --data-urlencode 'j_username=someUsername' \ --data-urlencode 'j_password=somePassword')

1 Answer 1

1

for auth you can use http basic auth it very simple in use for client and server, client code in this case will be look like:

<?php const COOKIE_FILE = '/tmp/authCookie'; $host = 'localhost'; $username = 'login'; $password = 'pass'; $ch = curl_init($host); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_USERPWD, sprintf('%s:%s', $username, $password)); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); $return = curl_exec($ch); curl_close($ch); 

about your 4xx error, i think you have problems with server, for test redirections you can do something like:

<?php //stable route with redirect $host = 'https://bitly.is/EnterpriseButton'; $userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:76.0) Gecko/20100101 Firefox/76.0'; $curl = curl_init($host); curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, $host); //with enabled followlocation curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_HEADER, true); $result = curl_exec($curl); curl_close($curl); var_dump($result); $curl = curl_init($host); curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, $host); //with disabled followlocation curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_HEADER, true); $result = curl_exec($curl); curl_close($curl); var_dump($result); 

and for check auth work you can auth through browser with cookies from curl

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.