login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP/HTTP AUTH] Externe Authorisatie

Offline AgentX - 28/06/2011 22:26
Avatar van AgentXHTML beginner Hallo luitjes,

Ik probeer een pagina van een externe website aan te roepen. Voor deze pagina moet je een HTTP inlog doen. (Ziet er uit zoals http://password...p_auth.png)

Deze error komt in beeld:
  1. Warning: file_get_contents([***]) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized in [***]/index.php on line 6


Dat dit zou gebeuren had ik al verwacht, dat komt door de HTTP Authorisatie, maar ik heb geen flauw idee hoe ik dit kan oplossen. Voor zowel file_get_contents() als include() werkt het niet.

Is er een mogelijkheid om PHP te laten inloggen, zodat de pagina toch op te vragen is?

5 antwoorden

Gesponsorde links
Offline NTS64 - 28/06/2011 22:43 (laatste wijziging 28/06/2011 22:51)
Avatar van NTS64 PHP gevorderde Om toegang te krijgen tot resources die "beveiligd" zijn met HTTP Basic Access Authentication moet elke HTTP request naar de resource de volgende header bevatten:

  1. Authorization: Basic dXNlcjpwYXNzd29yZA==


Met de string achter "Basic" een base64 geëncodeerde string van de combinatie "login:wachtwoord"

Om met file_get_contents() HTTP headers te specifiëren moet je een zogenaamde stream context creëren in PHP die je dan als paramater doorgeeft aan file_get_contents()

Bijvoorbeeld:

  1. <?
  2. $options = array('http'=>array('method'=>"GET",
  3. 'header'=>"Authorization: Basic ".base64_encode("login:wachtwoord")."==\r\n"));
  4. $context = stream_context_create($opts);
  5. $file = file_get_contents('http://www.example.com/authorized_acces.htm', false, $context);
  6. ?>


Let wel op, Basic Acces Authentication is zeer onveilig aangezien de credentials quasi verzonden worden als plain text(base64 encoded weliswaar).
Voor een veiligere HTTP Authenticatie techniek gebruik je best Digest Access Authentication(http://en.wikipedia.org/wiki/Digest_access_authentication).
Bedankt door: AgentX
Offline AgentX - 29/06/2011 14:57
Avatar van AgentX HTML beginner Dat werkt inderdaad. Wel krijg ik af en toe een Server Error.

  1. Warning: file_get_contents(***LINK***) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error in [***FILE***] on line 8
Bedankt door: Koen
Offline NTS64 - 29/06/2011 15:15
Avatar van NTS64 PHP gevorderde Een error 500 kan op vanalles wijzen. Om de precieze oorzaak van de fout de achterhalen neem je best eens een kijkje in de error log van de HTTP server.
Offline MrWolf - 02/07/2011 21:14
Avatar van MrWolf Lid
NTS64 schreef:
Bijvoorbeeld:

[..code..]

Je gebruikt de eerste keer $options en daarna $opts. Misschien werkt het daarom niet?
Offline AgentX - 02/07/2011 23:04
Avatar van AgentX HTML beginner Nee, dat is het niet, dat werkt wel.

Het komt wel echt door het script, want in mijn .htaccess staat niets bijzonders. Overigens geeft de errorlog van de server hetzelfde weer. Dus veel wijzer word ik er niet van...
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.198s