php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Anfänger: Geht dieses Skript für Excel und Worddateien bei PHP?


 
juschka
02-03-2013, 23:53 
 
Guten Abend,
ich habe mich hier angemeldet, weil ich ein Problem auf meiner Homepage habe. Die bastele ich mit NetObjects12 (ich weiss...ich kann aber nicht genug Sprachen...). Hier gibt es eine SichereSeite für einen Mitgliederbereich, das ganze auf PHP.
Unter anderem sind hier Dokumente gelistet, die nur Mitgliedern zur Verfügung gestellt werden sollen. Hierfür wurde per nachfolgenden Skript der direkte Link auf die Dateien unterbunden. (Somit muss sich also das Vereinsmitglied wirklich anmelden um diese Datei auch zu lesen bzw. downzuloaden, der direkte Link auf diese Dokumente wird hiermit verhindert.

Um das ganze zum Laufen zu bringen muss die Datei "geschutzt.php" ins Root-Verzeichnis, die htaccess-Datei "sicher" in den Unterordner "sicher", der alle zu schützenden Dateien enthält.

Es läuft auch soweit alles, aber:
- Das Originalskript, dass ich aus einem Tut habe geht für Bilder im jpg, gif und png-Format. Ich habe es nun selber erweitert auf pdf. Das klappt auch.
- Nun würde ich aber gerne auch Word- und Exceldateien zum Download anbieten, hier gibt es aber nur Fehlermeldungen bzw. es passiert gar nichts.

Ich habe bei googeln einiges zum Thema Excel+php u.ä. gelesen, da ich aber null Ahnung habe interpretiere ich die ganzen Seiten so, dass diese Microsoft-Datei-Formen nicht gehen?

Anbei die zwei Dateien, um die es geht (die php natürlich gespeichert als pdf zwecks dem Upload).

Wäre super, wenn mir einer helfen könnte bzw. - falls es möglich ist - mir das so umschreibt, dass Excel und Word auch funktionieren (idealerweise 2003 und 2007-Formate).
Danke im voraus
VG
juschka

 
Melewo
03-03-2013, 14:53 
 
Ich habe es nun selber erweitert auf pdf. Das klappt auch.

Da bin ich aber verwundert, hätte ich nicht erwartet, weil Du doch eine PDF-Datei als PNG-Bild versuchst auszugeben.

// .pdf Datei
if ($bild[0] == "pdf" &&
preg_match($gueltiger_bild_name, $bild[1]) &&
file_exists("./sicher/".$bild[1].".pdf") &&
$_SESSION['userinsession'] <> "" )
{
header("Content-type: image/png");
readfile("./sicher/".$bild[1].".pdf");
exit;
}Wenn Du da weiterhin bei alle Anfragen den Browsern mitteilst (im Header mit Content-type), dass ein PNG Image ausgeliefert wird, dann fühlen die sich natürlich ..., wie?
Im Restaurant wurde Wein aus der Weinkarte bestellt, doch der Kellner bringt Buttermilch. Der Kellner zum Gast: "Können sie nicht lesen, von wegen Buttermilch, den Wein sollten sie mit Genuss trinken." Spätestens da würde der Gast das Gleiche machen, wie der Browser mit Deinen völlig falsch als PNG angebotenen Dokumenten.

Bei PDF könnte es zum Beispiel damit besser klappen:

header('Content-type: application/pdf');

Für weitere findest Du hier eine Liste unter MIME-Typen, ob da neuere Word-Formate bei sind, sehe ich gerade nicht:

SELFHTML: Diverse technische Ergänzungen / MIME-Typen (http://de.selfhtml.org/diverses/mimetypen.htm)

 
juschka
03-03-2013, 15:30 
 
Danke Dir für Deine Antwort.
Ja...pdf klappt... frag mich nicht warum, aber das klappt.
O.k. soweit habe ich verstanden:
Meinst Du dass es ausreicht "nur" noch den header mit der betreffenden Dateiendung zu ändern?

Content-type: image/png");

Oder muss ich nochmehr machen?
Sorry, ich bin doch eine Niete, hatte mich vorher nie mit php beschäftigt und bis dato nur existierende codes eingefügt.

Danke juschka

 
Melewo
03-03-2013, 15:48 
 
Zuerst solltest Du die passenden MIME-Typen entsprechend der Liste den Headern zuordnen, dann testen. Ob das dann für .doc und .docx Word Dokumente genügt, wird sich herausstellen.

header("Content-type: application/msword"); Könnte mir vorstellen, dass es genügt, weil der Browser ja versuchen wird MS Word zu kontaktieren. Für MS Exel wohl diese:

header("Content-type: application/m************cel");

 
Melewo
03-03-2013, 16:24 
 
Habe mal zwei MS Word-Dokumente hochgeladen und aufgerufen. Bekomme bei der Endung .doc diesen Mime-Typ angezeigt:

Content-Type: application/msword Bei .docx hingegen diesen Typ, den Du für docx dann wohl auch nehmen müsstest:

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.documentProbleme beim Öffnen gab es bei beiden nicht.

Oder Du probierst es bei beiden erst einmal mit msword, denn meiner Meinung nach fragt der Browser beim System an, ob auf dem System ein Programm als Standard-Anwendung für Dateien vom Typ installiert ist und diese Standard-Anwendung wird dann gestartet.


Was mir noch aufgefallen ist, so ist es unsauber:

[a-zA-Z0-9-_] Der Bindestrich gehört in einer Zeichenklasse immer an den Anfang oder ans Ende, damit der keinen neuen von-bis Bereich bilden kann. So wäre es richtig:

[a-zA-Z0-9_-]

 
juschka
03-03-2013, 17:27 
 
Ich danke Euch ganz herzlich! Es hat geklappt!


Also Word und Excel ganz normal über application/msword bzw. m************cel
Die neuen Formate eben über die neuen MIME (sie reagieren nicht auf die alten MIME - die Datei wird dann nicht geöffnet!)
Den Fehler bei den pdf.s geändert
Und die Unter- und Bindestriche auch geändert.
Wirklich super, jetzt läuft es genauso wie ich es mir erhoffte. Ihr seid klasse!

Könnt ihr mir auch bei einem anderen Problem weiterhelfen (auch php und htaccess). Da habe ich aber nur die Idee noch gar kein Script? Dann würde ich ggf. ein neues Thema aufmachen?

Danke Euch
tschau juschka

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:26 Uhr.