Login using external site login system

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
thunderbird23
Forum Newbie
Posts: 1
Joined: Tue Dec 06, 2011 6:03 am

Login using external site login system

Post by thunderbird23 »

Hi guys.

What I want to create is really complicated. Well I have a login system that works with post on an external website.
I have my own website, but they do not give me access to the database for security reasons, therefore I have to use their login system to verify my users.
What their website does is that it has a post, with username and password. The POST website is lets say "https://www.example.com/login".
If login is achieved (i.e. username and password are correct), it will redirect me to "https://www.example.com/login/success" else it will redirect me to "https://www.example.com/login/retry".

So I want a PHP script that will do that post, and then according to the redirected website address it will return me TRUE for success, FALSE for not successful login.

Any idea??

Thanks
maxx99
Forum Contributor
Posts: 142
Joined: Mon Nov 21, 2011 3:40 am

Re: Login using external site login system

Post by maxx99 »

You could send a request via socket (with POST data) and check out response.

Example usages :

Code: Select all

<?php 
 $response =  http_request('GET', 'bulksms.mysmsmantra.com', 8080,'/WebSMS/SMSAPI.jsp' , array('username'=>'dsdasd',"password"=>'sdasdasd','sendername'=>'xxx','mobileno'=>'111','message'=>'xxx')); 
Function:

Code: Select all

function http_request( 
     $verb = 'GET',             /* HTTP Request Method (GET and POST supported) */ 
     $ip,                       /* Target IP/Hostname */ 
     $port = 80,                /* Target TCP port */ 
     $uri = '/',                /* Target URI */ 
     $getdata = array(),        /* HTTP GET Data ie. array('var1' => 'val1', 'var2' => 'val2') */ 
     $postdata = array(),       /* HTTP POST Data ie. array('var1' => 'val1', 'var2' => 'val2') */ 
     $cookie = array(),         /* HTTP Cookie Data ie. array('var1' => 'val1', 'var2' => 'val2') */ 
     $custom_headers = array(), /* Custom HTTP headers ie. array('Referer: http://localhost/ */ 
     $timeout = 1000,           /* Socket timeout in milliseconds */ 
     $req_hdr = false,          /* Include HTTP request headers */ 
     $res_hdr = false           /* Include HTTP response headers */ 
     ) 
 { 
     $ret = ''; 
     $verb = strtoupper($verb); 
     $cookie_str = ''; 
     $getdata_str = count($getdata) ? '?' : ''; 
     $postdata_str = ''; 

     foreach ($getdata as $k => $v) 
                 $getdata_str .= urlencode($k) .'='. urlencode($v) . '&'; 

     foreach ($postdata as $k => $v) 
         $postdata_str .= urlencode($k) .'='. urlencode($v) .'&'; 

     foreach ($cookie as $k => $v) 
         $cookie_str .= urlencode($k) .'='. urlencode($v) .'; '; 

     $crlf = "\r\n"; 
     $req = $verb .' '. $uri . $getdata_str .' HTTP/1.1' . $crlf; 
     $req .= 'Host: '. $ip . $crlf; 
     $req .= 'User-Agent: Mozilla/5.0 Firefox/3.6.12' . $crlf; 
     $req .= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . $crlf; 
     $req .= 'Accept-Language: en-us,en;q=0.5' . $crlf; 
     $req .= 'Accept-Encoding: deflate' . $crlf; 
     $req .= 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' . $crlf; 
     
     foreach ($custom_headers as $k => $v) 
         $req .= $k .': '. $v . $crlf; 
         
     if (!empty($cookie_str)) 
         $req .= 'Cookie: '. substr($cookie_str, 0, -2) . $crlf; 
         
     if ($verb == 'POST' && !empty($postdata_str)) 
     { 
         $postdata_str = substr($postdata_str, 0, -1); 
         $req .= 'Content-Type: application/x-www-form-urlencoded' . $crlf; 
         $req .= 'Content-Length: '. strlen($postdata_str) . $crlf . $crlf; 
         $req .= $postdata_str; 
     } 
     else $req .= $crlf; 
     
     if ($req_hdr) 
         $ret .= $req; 
     
     if (($fp = @fsockopen($ip, $port, $errno, $errstr)) == false) 
         return "Error $errno: $errstr\n"; 
     
     stream_set_timeout($fp, 0, $timeout * 1000); 
     
     fputs($fp, $req); 
     while ($line = fgets($fp)) $ret .= $line; 
     fclose($fp); 
     
     if (!$res_hdr) 
         $ret = substr($ret, strpos($ret, "\r\n\r\n") + 4); 
     
     return $ret; 
 } 
?> 
Post Reply