Ein herzliches Hallo von meiner Seite erst einmal!
Mich will ein Problem nicht mehr in Ruhe lassen…
Auf meiner Seite gibt es einen externen und einen internen Bereich. Im internen Bereich befindet sich ein kleiner Download. Das Problem: beim Einloggen werden die Daten von der Datenbank verglichen und bei korrekter Eingabe eine Session ID gesetzt.
Dadurch kann ich aber lediglich das Aufrufen der Download Daten mit php gegen aussen verhindern. Bei einer direkten http Anfrage im Browser wird die Download Datei angezeigt. Ok, natürlich muss man zuerst den Pfad wissen, aber trotzdem. Es muss doch eine Möglichkeit geben, ein Verzeichnis zu schützen.
Natürlich gibt es die htaccess, nur möchte ich eigentlich nicht mein komplettes Loginsystem ändern.
Fällt euch da was ein, wie ich ein Verzeichnis schützen kann?
sehe ich das richtig, mit readfile() kann ich dann aber nur einen Download starten und nicht die Datei im Browser abspielen lassen?
Das was ich suche, ist eine Möglichkeit, den html Befehl zu ersetzen mit einem PHP Befehl, damit ich den htaccess Schutz umgehen kann.
Bin grad ein bisschen verwirrt. Komischerweise finde ich nirgends das, was ich suche, auch über readfile() finde ich nicht 100% klare Beschriebe… lediglich Fragmente.
Gut, ok, war wohl ein wenig zu euphorisch. Das echo $file; bezweckt gar nichts. Ich kann also zwar einen Stream laden, aber dann im ganzen Browserfenster und nicht irgendwo im Homepage Content. Hat vielleicht noch jemand einen Tipp?
embed ist weder HTML noch ein Befehl, das ist einfach
propritäre Syntax von Netscape. Ist seit über zehn Jahren durch
das Element object ersetzt, was dann auch wirklich ein
(X)HTML-Element ist.
Du referenzierst dann eben die PHP-Datei im Attribut data
von object, eventuell zusammen mit einem dynamischen
GET-Parameter wie einer session-Identifikation, anhand der du
überprüfen kannst, ob die Datei rausgerückt werden soll oder
nicht. Man kann stattdessen auch einen verschlüsselten,
zeitabhängigen Parameter wählen, gibt es ganz verschiedene
Möglichkeiten.
Man kann alternativ auch als Referenz das Pseudoprotokoll
data: verwenden und damit den Kram direkt in die (X)HTML-Datei
einbetten, funktioniert bei technisch aktuellen browsern, nicht
aber bei allen, die auf dem technischen Stand von vor 12 Jahren
sind (beim MSIE 6 geht es sicher nicht, bei neueren MSIEs weiß
ich es nicht).
auf dieser Seite findet ihr eine Darstellung, wie ich sie haben möchte. Wenn ich auf einen Titel klicke, soll mir genau dieser Titel darunter geladen werden (und nicht als neue Seite oder ein gestarteter Download)…
ich habs jetzt nicht ausprobiert… aber ist es nicht so, dass header() vor einer Ausgabe stehen muss, sprich, wenn ich es so mache, wie du hummer es vorschlägst, dann wird das nicht funkionieren, oder lieg ich da falsch?
nein, ich möchte eigentlich nur, dass ich ein Musikstück mit php lade und nicht mit embed oder object, wo ein Musikstück durch ein allfälliges htaccess nicht geladen werden kann. Bei meinem Beispiel ist dies aber nicht relevant, da es sich um einen externen Bereich handelt. Man muss sich jetzt vorstellen, dass ich im internen Bereich das selbe Abspiellayout nochmals habe. Da ich nicht möchte, dass jemand irgendwelche Musikstücke vom internen Bereich hören kann, der nicht eingeloggt ist, möchte ich einen htaccess Schutz einbauen, der mit php umgangen werden kann, wobei man sich aber über das php anmelden muss.
wie man gut sehen kann, wird nicht das gesammte mp3 File geladen. Dazu gibt es links und rechts so einen grauen Balken (das ist die Hintergrundfarbe, definiert mit CSS). Weiter wird das autostart=false im Safari ignoriert, es wird einfach nach dem begonnenen Laden abgespielt.
Im Firefox sowie im Internet Explorer sieht das ganze so aus (also richtig, genau so wie ich es mir wünsche, auch korrekt mit dem autostart=false):
Könnte das embed ein Problem darstellen? Das komische daran wäre, dass es vorher, bevor ich das Lied per readfile geladen habe, tiptop funktionierte…
Wie kann ich das erzwingen, dass das ganze File geladen wird?
Danke euch!
edit: übrigens erscheinen ein paar der selben Probleme ebenfalls bei der Demo von Hummer ein paar Beiträge weiter oben, damit ihr euch ein Bild davon machen könnt.
hm, ich brauche irgendwie immer noch einen input… hab jetzt den Herrn Google befragt. Jedoch will er mir nur Auskunft geben über Forced Downloads. Ich vermute, es könnte auch an einem Problem mit den header() etc. liegen. Sieht da jemand einen Fehler? Was könnte das verursachen, dass das mp3 File trotz der Anweisung autostart=false abgespielt wird?
Nur um einen Schlussstrich zu ziehen: mein Fehler war folgendes: die type Angabe im Tag hatte ich vergessen. Jetzt funktioniert es perfekt unter allen drei Browsern.
Vielen herzlichen Dank nochmals an alle, die mir geholfen haben!