Távoli url elérése HITELESÍTÉSSEL
Sziasztok!
Régóta működnek weboldalaim, melyek más weboldalak tartalmaitól függenek, mindeddig nem volt szükség hitelesítésre, minden további nélkül el tudtam érni a távoli oldal forrását ezzel az osztályal (lejjebb)
Most azonban az lenne a feladatom, hogy a script magától bejelentkezzen az oldalra, majd cookie-val hitelesítse magát.
5letem szerint először megpingelné a távoli oldalt a megfeleő hitelesítő változókkal, ezután a szerver visszaad valamit, miszerint csináljon a böngésző (a script) egy cookie-t. Ezután a cookie-t mellékelve a HTTP HEADERBEN már mint bejelentkezett felhasználó kapnám a weblap forrását vissza.
Az első kérdés, hogy működhet-e az elképzelésem.
A második, hogy egy ilyen szerver-kliens komunikáció hogyan zajlik HTTP HEADER szinten, pl egy cookie-val való hitelesítés stb.
Előre is köszi a segítséget!
A most használt osztály:
■ Régóta működnek weboldalaim, melyek más weboldalak tartalmaitól függenek, mindeddig nem volt szükség hitelesítésre, minden további nélkül el tudtam érni a távoli oldal forrását ezzel az osztályal (lejjebb)
Most azonban az lenne a feladatom, hogy a script magától bejelentkezzen az oldalra, majd cookie-val hitelesítse magát.
5letem szerint először megpingelné a távoli oldalt a megfeleő hitelesítő változókkal, ezután a szerver visszaad valamit, miszerint csináljon a böngésző (a script) egy cookie-t. Ezután a cookie-t mellékelve a HTTP HEADERBEN már mint bejelentkezett felhasználó kapnám a weblap forrását vissza.
Az első kérdés, hogy működhet-e az elképzelésem.
A második, hogy egy ilyen szerver-kliens komunikáció hogyan zajlik HTTP HEADER szinten, pl egy cookie-val való hitelesítés stb.
Előre is köszi a segítséget!
A most használt osztály:
- class HTTPRequest
- {
- var $_fp; // HTTP socket
- var $_url; // full URL
- var $_host; // HTTP host
- var $_protocol; // protocol (HTTP/HTTPS)
- var $_uri; // request URI
- var $_port; // port
- // scan url
- function _scan_url()
- {
- $req = $this->_url;
- $pos = strpos($req, '://');
- $this->_protocol = strtolower(substr($req, 0, $pos));
- $req = substr($req, $pos+3);
- $pos = strpos($req, '/');
- if($pos === false)
- $pos = strlen($req);
- $host = substr($req, 0, $pos);
- if(strpos($host, ':') !== false)
- {
- list($this->_host, $this->_port) = explode(':', $host);
- }
- else
- {
- $this->_host = $host;
- $this->_port = ($this->_protocol == 'https') ? 443 : 80;
- }
- $this->_uri = substr($req, $pos);
- if($this->_uri == '')
- $this->_uri = '/';
- }
- // constructor
- function HTTPRequest($url)
- {
- $this->_url = $url;
- $this->_scan_url();
- }
- // download URL to string
- function DownloadToString()
- {
- $crlf = "\r\n";
- // generate request
- $req = 'GET ' . $this->_uri . ' HTTP/1.0' . $crlf
- . 'Host: ' . $this->_host . $crlf
- . $crlf;
- // fetch
- $this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '') . $this->_host, $this->_port);
- fwrite($this->_fp, $req);
- while(is_resource($this->_fp) && $this->_fp && !feof($this->_fp))
- $response .= fread($this->_fp, 1024);
- fclose($this->_fp);
- // split header and body
- $pos = strpos($response, $crlf . $crlf);
- if($pos === false)
- return($response);
- $header = substr($response, 0, $pos);
- $body = substr($response, $pos + 2 * strlen($crlf));
- // parse headers
- $headers = array();
- $lines = explode($crlf, $header);
- foreach($lines as $line)
- if(($pos = strpos($line, ':')) !== false)
- $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
- // redirection?
- if(isset($headers['location']))
- {
- $http = new HTTPRequest($headers['location']);
- return($http->DownloadToString($http));
- }
- else
- {
- return($body);
- }
- }
- }
Megvan!