![]()
MAn darf sich soch wohl noch mal verschreiben dürfen, oder?
Ich denke es ist kjlar, was ich sagen will.
Entschuldigt meinen Ton, aber ich bin nur von dem Verhalten einiger User hier verwundert.
Natürlich
Das hier geht doch ins lächerliche. Die Vorteile und Nachteile sind erwähnt, sogar ich hab sie verstanden. Jeder kann doch benutzen was er will, und wenn der eine Benutzer eben dies weiterempfiehlt, der andere das, muss eben der Fragesteller abwägen, was er verwenden will.
Manchmal macht man eben etwas anders als die anderen - dafür wird man schon Gründe haben.
Eben
Und: Aus (Fehlern / ) Erfahrung lernt man bekanntlich am besten.
Und damit sollte das endgültig geklärt sein, es sei denn, der Threadersteller hat eine Frage. Ansonsten sollten wir daran denken, dass wir im Supportbereich sind.
ja was denn nu? sie sind leicht aus den Dateien auszulesen, aber der Webserver öffnet die Dateien nicht? wie soll er die denn auslesen?
Das was ich bisher verstanden habe:
Du schaust nach der Dateiendung, ob sie .jpg .gif etc. ist und du schaust auch nach dem mime-type.
Ich nehme an den mime-type entnimmst du dem $_FILES array, z.b. $_FILES[‚file‘][‚type‘], welches dann image/gif oder ähnliches enthält?
Im Gegensatz dazu steht die von PHP (GD lib) bereitgestellte Funktion getimagesize().
Weder die Dateiendung noch der per $_FILES gelieferte mime-type geben eine Garantie, dass irgendwas davon mit absoluter Sicherheit korrekt ist.
Die Dateiendung ist grob gesehen nur eine kleine schöne Erweiterun des Dateinamens. Diese lässt sich von jedem User mit leichtigkeit manipulieren.
Der Mime-type wird zwar in der Regel vom Browser ermittelt und gesendet, kann aber ebenfalls manipuliert werden, wenn man weiß wie. Sowohl Der Dateiname als auch der Mime-type werden vom Client übermittelt und alles was der Client sendet bietet keine Garantie auf absolute Richtigkeit.
Und das nicht nur durch Manipulation, sondern auch durch Fehlerhaft oder Mangelhaft konfigurierte Clients (z.b. kann es ja sein dass ein Client überhaupt keinen Mime-type mitsendet… was dann?).
getimagesize() hingegen wird ausgeführt, nach dem das Bild auf den Server hochgeladen wurde.
Man wendet getimagesize auf den temporären Namen, der einem mit $_FILES (‚tmp_name‘) gegeben wird, und erhält ein kleines Array mit grundlegenden Informationen. Unter diesen Informationen befindet sich auch der Mime-type. Dieser Mime-Type wurde ermittelt, indem in die Datei nach den sogenannten Magicnumbers gesucht wurde. Diese Operation benötigt nur wenige Byte an Speicher, da nur ein kleiner Teil der Datei eingelesen werden muss. Dafür hat man aber mit absoluter Garantie den richtigen Mime-type.
Um mal ein Beispiel zu nehmen, wo getimagesize sinnvoll wäre.
Du besitzt eine „bild.png“ Datei. Diese änderst du um in „bild.jpg“ und Manipulierst deinen Browser so, dass er als mime-type image/gif sendet.
Bei deiner Variante würde jetzt einmal die Dateiendung mit „.jpg“ auftauchen, und einmal der Mime-Type „image/gif“. Tatsächlich befindet sich in der Datei aber ein PNG Bild und getimagesize() wird das korrekte Bildformat mit sicherheit erkennen. Das einzige was man dann tun muss, ist die falsche Dateiendung in die richtige umändern.
So kann man auch mit sicherheit die korrete imageCreateFrom…() Funktion wählen.
mfg Balmung
