a) ein komplettes Verzeichnis mit allen Inhalten - so wie es ist - geschützt ist, ohne dass man an einzelnen Dateien etwas ändern muss
So ist leider überhaupt nicht klar, was du eigentlich machen willst. Was für einen Schutz willst du realisieren? Da gibt es ja nun wortwörtlich unendlich Möglichkeiten.
b) die Übergabe von Username und Passwort direkt aus dem Formular erfolgt, also ohne dass der lästige Systemdialog erscheint
Ich nehme mal an, du meinst mit "Systemdialog" die Eingabeaufforderung für htaccess-geschützte Verzeichnisse. htaccess hat nichts mit PHP zu tun, sondern mit dem HTTP-Server, das heißt, wenn eine solche Datei in einem Verzeichnis existiert, kann man soviel programmieren wie man lustig ist, man wird trotzdem keinen Zugriff auf irgendwelche Dateien bekommen, solange man nicht in der Aufforderung das Passwort eingegeben hat.
c) alle gängigen Dateitypen im geschützten Bereich ohne Einschränkung vom Browser angezeigt bzw. ausgeführt werden
Ob der Browser alle gängigen Dateitypen anzeigen kann, hängt auch wieder nicht von PHP ab, sondern von der Konfiguration des HTTP-Servers sowie von den Fähigkeiten des Browsers selbst. Mit PHP kann man daran nichts drehen. Ein Workaround wäre, alle Dateizugriffe über ein PHP-Skript zu leiten, das selbst das Senden der korrekten HTTP-Header übernimmt -- damit umgeht man den Server. Trotzdem muss immer noch der Browser mit dem gesendeten Header zurechtkommen.
Wenn du verhindern willst, dass der Server Dateien ausliefert, ohne dass der User sich autorisiert hat, so ist das unmöglich, wenn du keine htaccess-Dateien einsetzt. Der Server sendet ALLES, was der User will, wenn das Verzeichnis nicht auf Server-Ebene geschützt wurde. Wenn das nicht so wäre, könnten auch PHP-Skripte nicht mehr laufen, und nichts wäre mehr möglich.
Wenn du mit PHP ein Verzeichnis schützen willst, ist die einzige Lösung, alle Daten in ein htaccess-geschütztes Verzeichnis und den PHP-Code in ein offenes Verzeichnis zu legen. Nun muss sich der User in den Formularen autorisieren und PHP übernimmt das Senden der Daten aus den geschützten Verzeichnissen. Allerdings muss dafür selbstverständlich der entsprechende Code in den Skripten vorhanden sein -- wie soll es funktionieren, wenn kein Code existiert?
Es gibt noch die Möglichkeit, das Root des Projekts mit htaccess zu sperren. Dann generiert der Server bei jedem Zugriff einen Fehler. Diesen Fehler kann man über die htaccess auf ein PHP-Skript leiten. Dieses Skript kann anschließend die korrekte Bearbeitung der Anfrage übernehmen, gegebenfalls auch andere Skripte aufrufen. So könnte man das Einfügen von Code in alle PHP-Dateien umgehen.
Gawayn