schau Dir mal die KLasse remote_image() an
nur jpg acceptieren !!!
Einklappen
X
-
-
Original geschrieben von Sky
Wenn du mit getimagesize() das upgeloadete File überprüfst und den Rückgabewert checken willst, so ist das sicherlich eine gute und sichere Methode - aber eben nur für die Bildformate, die getimagesize() unterstützt - und mit Content-Type hat diese Funktion nichts am Hut, da das eine reine MIME-Sache ist.
wenn es um upgeloadete files geht, hab ich das mal so gemacht:
<form method="post" enctype="multipart/form-data">
<input type="file" name="bild">
<input type="submit">
</form>
<?
if($bild_type == "image/gif" || $bild_type == "image/jpeg" || $bild_type == "image/pjpeg"){
// dann ist es ein gif oder jpeg
}
if($bild_type == "application/pdf"){
// dann ist es ein pdf file
}
?>
Das kann man noch erweitern...
und es funktioniert, ich glaub sogar ohne extensions, denn im file header is auf jeden Falkl der content type drin...
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Kommentar
-
Original geschrieben von MelloPie
[...], denn im file header is auf jeden Falkl der content type drin...
Kommentar
-
Teste doch mal das hier aus und jetzt sag mir woher der Browser wissen soll, dass es ein gif is nach Deiner Meinung, wenn keine Extension dabei is???
Benenne eine gif Datei um ohne extension. lege dies Script auf einen server.
<form method="post" enctype="multipart/form-data">
<input type="file" name="bild">
<input type="submit">
</form>
<?
print $bild_type;
?>
und dann möchte ich wissen, woher Dein Browser jetzt weiss welchen content type das Bild hat, wenn nicht vom Bild selbst????
Achso das funktioniert auch mit html dateien, pdfs docs, etc.Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Kommentar
-
siehe PHP-Manual.
$userfile_type - The mime type of the file if the browser provided this information. An example would be "image/gif".
Kommentar
-
Ja genau wenn der Browser es provided heisst wenn er es kennt aber der mime type is in der Datei...
Ach vergiss es... Die Lösung zu dem Problem kann der Anfrager sich aussuchen...
Ein JPG is ein JPG ob mit Extension oder ohne...
Wenn der Browser es net kennt dann stellt er es nur nicht richtig dar und bietet es zum download an...
So einfach ist dasBeantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Kommentar
-
Du solltest dein Wissen bzgl. MIME und Content-Types trotzdem nochmal überarbeiten.
Kommentar
-
Original geschrieben von Sky
Du solltest dein Wissen bzgl. MIME und Content-Types trotzdem nochmal überarbeiten.
Die Frage hier ging etwa so:
"Wie kann ich nur jpgs akzeptieren?"
Am besten geht das über
<?if ($file_type==""?>
Wer nur die Extension überprüft, dem kann man ja alles auf den Server laden...
Nice to have...
Übrigens ist eine komplette Liste der MIME Typen unter RFC 2045 zu finden
trotzdem, da ich Mein Wissen überarbeiten möchte würde ich gern wissen wie beim upload der Header des Browsers bestimmen soll, was für eine Datei ich uploade...
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Kommentar
-
Also...
Der Browser zeigt das Form an, lässt den Benutzer die Datei auswählen und geht, nachdem der Submit-Button vom User gedrückt wurde, folgendermaßen (in etwa, nur schematisch am Beispiel von multipart/byteranges, was multipart/form-data ziemlich nahe kommt) vor:
PHP-Code:HTTP/1.1 206 Partial content
Date: ...
Last-modified: ...
Content-type: multipart/byteranges;
boundary=blablub
--blablub
Content-type:
Anschließend kommen optional weitere Form-Fields:
PHP-Code:Content-range: bytes x-y/z
--blablub
Content-type: ...
Content-range: ...
PHP-Code:--blablub--
Zu deinem anderen Punkt: Es ist definitiv _nicht_ egal, wie der Anwender letztendlich die Erweiterung der Datei benennt. Wäre erlaubt, dass PHP, CGI, PL und andere ausführbare Dateien upgeloadet werden dürfen, so stellt das ein recht großes Sicherheitsrisiko dar.
Kommentar
-
Original geschrieben von Sky
Also...
Hier schaut der Browser, welche Endung die Datei hat und welchen Content-Type er dafür in seiner Liste hat.
Anschließend kommen optional weitere Form-Fields:
[php]
Content-range: bytes x-y/z
Das wüde ich gerne noch wissen...
Der Browser weiss es einfach??
Nein, die Antwort kommt vom Server, weil die Datei es mitliefert.
Du kannst jetzt noch ein paar Zeilen aus dem Buch abschreiben oder aus ner online hilfe kopieren, aber ne richtige Antwort auf diese Frage kannst Du nicht finden.
Naja, ich werde mein Wissen mal überarbeiten...
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Kommentar
-
Uploade mal eine Datei ohne Extension - ich weiß nicht, welchen Browser du benutzt, aber Opera gibt dann einfach den Standardtyp application/octet-stream an.
Kommentar
Kommentar