PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   mit .htaccess geschützte ordner erkennen. (https://www.php-resource.de/forum/php-developer-forum/78712-mit-htaccess-geschuetzte-ordner-erkennen.html)

amarok 01-12-2006 19:25

mit .htaccess geschützte ordner erkennen.
 
Ich habe ein Script geschrieben, welches mir erlaubt Ordner und Dateien aufzulisten.

Jetzt sollen aber Ordner, die per .htaccess geschützt sind mit einem Schlüssel Icon versehen werden. (Ausserdem soll man sich später für diese Verzeichnisse "einloggen" können, aber das kann vorerst mal ausser Acht gelassen werden)


Gibt es eine Möglichkeit mittels php zu prüfen ob ein Ordner per htaccess geschützt ist?

Bitte nicht nur links zu php.net posten, dort hab ich schon haufenweise zeugs gelesen aber es bringt mich einfach nicht weiter :confused:

vielen dank für eure Antworten

gruß, Alex

TobiaZ 01-12-2006 19:30

na, sowas wie isHtaccessProtected() wirst du nicht bekommen.

aber nachgucken, ob entsprechende datei vorhanden ist und dann noch schnell den inhalt auf bestimmte schlüsselworte prüfen, solltest du ohne weiteres können.

wahsaga 01-12-2006 19:42

.htaccess-Dateien in übergeordneten Verzeichnissen müssten aber auch beachtet werden.
Und HTTP Auth kann ja nicht nur in der .htaccess eingerichtet werden, sondern auch in der Serverkonfiguration ...


Alternative wäre vielleicht, einen HTTP-Request zu machen (HEAD sollte ausreichen) - und schauen ob die Antwort 401 lautet ...

amarok 01-12-2006 19:47

Zitat:

Original geschrieben von TobiaZ
na, sowas wie isHtaccessProtected() wirst du nicht bekommen.
Schade, genau das hab ich gesucht :rolleyes:

Zitat:

aber nachgucken, ob entsprechende datei vorhanden ist und dann noch schnell den inhalt auf bestimmte schlüsselworte prüfen, solltest du ohne weiteres können.
Mh und was würde man überprüfen? Ob "htpasswd" und "basic" in der ".htaccess" vorkommen? Irgendwie scheint mir das nicht ganz sinnvoll (wie gesagt die erste Möglichkeit hätte ich bevorzugt ;) )

TobiaZ 01-12-2006 19:50

Dann schau dir mal den beitrag von wahsaga an. der ist auch nicht so dumm.

amarok 01-12-2006 19:53

Zitat:

Original geschrieben von wahsaga
Alternative wäre vielleicht, einen HTTP-Request zu machen (HEAD sollte ausreichen) - und schauen ob die Antwort 401 lautet ...
mh ich bin mir unsicher was das bedeuten soll. kannst du mir ein code beispiel geben? ich will einen ordner abfragen nicht ein file (kann man einen http-request an einen ordner machen?)

gruß alex

logiciel 01-12-2006 19:56

Re: mit .htaccess geschützte ordner erkennen.
 
Ich würde es über den Status Code überprüfen.
Wenn Status=='Nicht autorisiert' o.ä., dann ist dieses Verzeichnis geschützt. Selbst noch nicht ausprobiert, nur so eine Idee.

PHP-Code:

function gethead($url)
{
  
// Gets url ready to use
   
$info  = @parse_url$url );

  
// Opens socket
  
$fp    = @fsockopen$info["host"], 80$errno$errstr10 );

  
// Makes sure the socket is open or returns false
  
if ( !$fp ) {
     return 
false;
  } else {

     
// Checks the path is not empty
     
if( empty( $info["path"] ) ) {

        
// If it is empty it fills it
        
$info["path"] = "/";
     }
     
$query ""

     
// Checks if there is a query string in the url
     
if( isset( $info["query"] ) ) {

          
// If there is a query string it adds a ? to the front of it
          
$query "?".$info["query"]."";
     }

     
// Sets the headers to send
      
$out  "HEAD ".$info["path"]."".$query." HTTP/1.0\r\n";
     
$out .= "Host: ".$info["host"]."\r\n";
     
$out .= "Connection: close \r\n" ;
     
$out .= "User-Agent: link_checker/1.1\r\n\r\n";

     
// writes the headers out
     
fwrite$fp$out );
     
$html '';

     
// Reads what gets sent back
     
while ( !feof$fp ) ) {
          
$html .= fread$fp8192 );
     }

     
// Closes socket
     
fclose$fp );
  }
  return 
$html;
}

function 
getstatuscode$header )
{

  
// Splits the headers into an array
  
$headers explode"\r\n"$header );
  unset( 
$header );
  for( 
$i=0;isset( $headers[$i] );$i++ ) {

    
// Checks if the header is the status header
    
if( preg_match"/HTTP\/[0-9A-Za-z +]/i" ,$headers[$i] ) ) {

      
// If it is save the status
      
$status preg_replace"/http\/[0-9]\.[0-9]/i","",$headers[$i] );
    }
  }
  return 
$status;



amarok 01-12-2006 20:10

öhm :confused: :confused: :confused:

sorry aber der code bringt mir glaube ich jetzt garnichts und was du sagen willst ist mir auch nicht klar

TobiaZ 01-12-2006 20:19

tja, das hört sich an, wie die "ich versteh nicht, wie geht das" haltung an...

wahsaga 01-12-2006 21:01

Zitat:

Original geschrieben von amarok
ich will einen ordner abfragen nicht ein file (kann man einen http-request an einen ordner machen?)
Natürlich, das macht man doch andauernd, wenn man über http://example.com/ordner/ ein Verzeichnislisting anfordert (und entweder dieses, oder ein Forbidden bekommt).


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:18 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG