RSS Zugriff auf HTTP Authentication mit PHP CURL oder fopen

verfasst 26.01.2011 von MediaCix | kurze URL: /t1048 | Kommentar schreiben

Hin und wieder ist es nötig, dass man mit PHP auf htaccess geschützte Seiten zugreifen muss. Über einen Web-Browser muss man bei HTTP Authentication seine Benutzername und Passwort per Hand eintragen. Für automatische Scripte oder Anwendungen geht das natürlich nicht. Zwar gibt es Unmengen an Lösungen im Netz, aber 70% davon sind falsch oder haben Syntaxfehler - keine Ahnung woher das kommt. Hier zwei Lösungsvorschläge mit fopen(), stream_context_create() und CURL.

Lösung 1 mit fopen() und stream_context_create():

» PHP
<?php
function get_HTTP_AUTH($url$user 'admin'$pass 'admin' ) {
  
$set = array(
    
'http' => array(
    
'method' => 'POST',
    
'header' => sprintf(
      
'Authorization: Basic %s'
      
base64_encode("$user:$pass")  
      ) 
    )
  );
  
$stream stream_context_create($set);
  
$handle fopen($url'r'false$stream);
  return 
stream_get_contents($handle);
}
echo 
get_HTTP_AUTH('http://www.mediacix.de/test/');
?>


Lösung 2 mit CURL:

» PHP
<?php
function get_HTTP_AUTH2($url$user 'admin'$pass 'admin' ) {
  
$ch curl_init();
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_HEADER1);
  
curl_setopt($chCURLOPT_RETURNTRANSFER);
  
curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC );
  
curl_setopt($chCURLOPT_USERPWD"$user:$pass" );
  
$data curl_exec($ch);
  
curl_close($ch); 
  return 
$data;
}

echo 
get_HTTP_AUTH2('http://www.mediacix.de/test/');
?>


Oder eine ganze saubere Lösung:

» PHP
<?php
define
('HTTP_AUTH_USER''admin');
define('HTTP_AUTH_PASS''admin');

function 
get_HTTP_AUTH3($url) { 
  
$ch curl_init(); 
  
curl_setopt($chCURLOPT_URL$url); 
  
curl_setopt($chCURLOPT_HEADER1); 
  
curl_setopt($chCURLOPT_RETURNTRANSFER); 
  
curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC ); 
  
curl_setopt($chCURLOPT_USERPWDHTTP_AUTH_USER.':'.HTTP_AUTH_PASS ); 
  
$data curl_exec($ch); 
  
curl_close($ch);  
  return 
$data
}
echo 
get_HTTP_AUTH3('http://www.mediacix.de/test/');
?>


Sollten irgendwelche Daten ausgelesen werden (z.B. XML oder JSON) dann muss der Parameter CURLOPT_HEADER auf Null gesetzt werden, oder die Zeilen einfach auskommentieren.

neuen Kommentar schreiben

Ich möchte automatisch eine E-Mail bei neuen Kommentaren erhalten.



Themen mit ähnlichen Inhalten


Tags zum Beitrag

HTTP-Authentication     htaccess     stream_context_create