Hallo und guten Tag.
Ich hab bei mir ein Smilie Album eingebaut. Bilder mit den Endungen .GIF und .PNG kann ich hochladen. Nun wollte ich auch die Endung .jpg dazu nehmen. Klapptaber nicht.
Ich suchte in der smilies_upload.php
switch ($filetyp)
{
case ‘image/gif’:
$pic_filetype=’.gif’;
break;
danach einfügen:
Frage was ? Ich hab das statt gif jpg genommen. Die Anzeige sagte mir beim Hochladen das "Der Dateityp ist nicht erlaubt"
Kann mir jemand sagen was ich da falsch gemacht hab? Ich bin Dankbar für jede Antwort.
Mit den besten Grüßen
Hallo der_dodo.
Ich hab grad Deinen Vorschlag probiert. Haut hin so wie es soll.Sowohl der IE 8 und Mozilla.
Ich sage noch einmal Danke für Deine Hilfe.
lodl
Jop^^ Als WebEntwickler sollte man wissen das man keinen Daten die einem Geschickt werden (GET,POST also vom Browser etc.) vertrauen kann^^ Daher auch nicht dem dort angegebenen Dateityp.
[quote=“der_dodo”]Ja das mag sein. Aber wenn man mit dem Bild arbeiten will, muss man diese Unterscheidung machen.
Da kommt man nicht drum rum.[/quote]
1.Lesen
2.Sich erkundigen
3.Fehler erkennen
Man kannn dir auch n php script schicken und image/jpg als typ dazu geben,dein jetziges script wird das einfach als bild ansehen
[quote=“asshare”][quote=“der_dodo”]Ja das mag sein. Aber wenn man mit dem Bild arbeiten will, muss man diese Unterscheidung machen.
Da kommt man nicht drum rum.[/quote]
1.Lesen
2.Sich erkundigen
3.Fehler erkennen
Man kannn dir auch n php script schicken und image/jpg als typ dazu geben,dein jetziges script wird das einfach als bild ansehen [/quote]
Ganz einfach: Zuerst die Endung überprüfen. Und NUR wenn der Server sehr sehr schlecht eingestellt ist, kommen PNG-, JPEG-, und GIF-Dateien durch den PHP-Parser. Normalerweise kommen nur Dateien mit den Endungen .php, .php4 und .php5 in den Parser.
Am Anfang überprüfen und alles passt.
Aber den Mime-Type sollte man trotzdem überprüfen.
Dass das PHP Scipt mit der Endung .jpg keinen Schaden anrichten “sollte” ist klar. Jedoch gehts um das Prinzip.
Wieso den MimeTyp nehmen den der Browser schickt, der nicht stimmen muss und dazu von Browser zu Browser unterschiedlich ist (ok nur beim IE) anstatt gleich einen garantiert stimmendem zu vertrauen den man durch getimagesize erhält. Das ganze Doppelt zu machen, wobei der eine immer stimmt und der andere wenn man kein Pech hat, ist auch unnötig.
[quote=“White-Tiger”]Dass das PHP Scipt mit der Endung .jpg keinen Schaden anrichten “sollte” ist klar. Jedoch gehts um das Prinzip.
Wieso den MimeTyp nehmen den der Browser schickt, der nicht stimmen muss und dazu von Browser zu Browser unterschiedlich ist (ok nur beim IE) anstatt gleich einen garantiert stimmendem zu vertrauen den man durch getimagesize erhält. Das ganze Doppelt zu machen, wobei der eine immer stimmt und der andere wenn man kein Pech hat, ist auch unnötig.[/quote]
Ganz einfach: Weißt du wie getimagesize programmiert ist? hast dus ausführlich getestet um sicher zu sein, dass es immer funktioniert, auch wenn der Browser den falschen schickt?
Es funktioniert auf beiden Wegen, das ist ja das schöne am Programmieren.
Solang es geht, ist es egal, welche man verwendet.
getimagesize funktioniert so, wie der Browser den MIME-Typ erkennt und wie auch jedes Bild “anguck” Programm es macht.
Es liest den Dateityp aus der Datei aus. Daher wenn ne Datei ne .jpg ist, steht dies in der Datei (wenns ne echte JPG Datei ist). Selbes bei fast allen anderen Dateitypen. Auch .exe (Programme) haben eine “Kennung”.
Nur Textdateien z.B. haben keinen. Dort ist einfach Text drin.
Und wie gesagt… das was der Browser übermittelt muss net stimmen. Daher “[…] Es funktioniert auf beiden wegen […]” ist falsch. Das eine funktioniert nur wenn man kein Pech hat. Daher jemand den Typ absichtlich falsch angibt.
Wieso das komplizierte,Browserabhänginge und unsichere nehemn was unnötigen Text produktziert wenn es ne einfache schnelle Lösung gibt die zudem sicher ist?
Und wenns ums Thema ‘hacking’ geht sollte jeder Programmierer pingelich sein.
Was „funktioniert“ denn an deiner Lösung, wenn ich ein PHP-Script mit der Endung .jpg benenne, und es mit dem Content-Type image/jpeg an dein Script hochlade?
Jemand, der so argumentiert, sollte sich bitte nicht Programmierer nennen.
Was „funktioniert“ denn an deiner Lösung, wenn ich ein PHP-Script mit der Endung .jpg benenne, und es mit dem Content-Type image/jpeg an dein Script hochlade?
Jemand, der so argumentiert, sollte sich bitte nicht Programmierer nennen.[/quote]
Ganz einfach: Ein .jpg kommt nicht in den PHP-Parser, dadurch sind die keine Gefahr. Es kommt bloß ein fehlerhaftes Bild.
Und ich finde: Jemand der streng nach Schema 0815 vorgeht, darf sich nicht Programmierer nennen. Jemand der keine eigenen Lösungsansätze sucht, sondern sich blind auf die Arbeit anderer verlässt.
@der_dodo: Zitiere doch bitte mal sinnvoll - das, worauf du dich konkret beziehst, und nicht immer einfach alles.
Und das reicht dir …? Sind ja ganz schön niedrige Qualitätsansprüche.
Auf solche Fehler, die u.U. auch mal unabsichtlich passieren könnten, sollte der Nutzer entsprechend hingewiesen werden, und ihm die Möglichkeit gegeben werden, ein neues Bild hochzuladen.