Mime-Typ prüfen Array
Andy89
- php
0 Holger Lersch0 Andy 89
0 Tom0 Andy89
Guten Morgen,
ich möchte Dateien auf den Server laden (exel Winword html, gif , jpg und pdf-hier im Beispiel mal nur zwei Formate)
Das löse ich so.
if
($_FILES['grafik']['type'] == "image/gif")
$filetyp = '1';}
else if
($_FILES['grafik']['type'] == "application/pdf"))
{ $filetyp = '1';}
else {
$filetyp = '0'; } }
Dann prüfe ich
if ($_POST['sub'] && $filetyp=='0' ) {
$fehler[1]= "Die Datei hat kein gültiges Format";
Jetzt meine Frage.
Könnte ich das auch in einen Array schreiben
$filetyp = array("image/gif", "application/pdf", "usw");
Wenn ja wie lese ich das aus und verwende es in der Prüfung?
Danke
Andy
Jetzt meine Frage.
Könnte ich das auch in einen Array schreiben
$filetyp = array("image/gif", "application/pdf", "usw");
Hallo,
natürlich geht das ... schau Dir mal [die Funktion in_array](http://www.php.net/in_array) an. Versuche Dich dochmal damit und bau Deinen Code um. Bei Fragen poste Deinen Versuch und Dir wird sicherlich geholfen :)
Viele Grüße!
Holger
natürlich geht das ... schau Dir mal die Funktion in_array an. Versuche Dich dochmal damit und bau Deinen Code um. Bei Fragen poste Deinen Versuch und Dir wird sicherlich geholfen :)
Viele Grüße!
Holger
Hallo Holger, danke für den Tipp !
ich habe das jetzt so gelöst.
$filetyp = array(
"application/pdf",
"text/html", "image/jpeg", "image/pjpeg", "image/gif",
"application/vnd.ms-excel", "application/ms-excel" );
if (in_array($_FILES['graph']['type'], $filetyp))
{
$filetyp='ok';
}
if
($_POST['sub'] && $filetyp== 'ok' && !$error[0] && !$error[1])
{ // alles Ok geht weiter
}else {
$error[2] ="<span class='error'><br>Kein gültiges Format.</span>";
}
error[0] wenn Datei zu groß und error[1] wenn doppelt.
Ich hoffe das ist akzeptabel.
Es funktioniert
Danke
Andy
Hello,
Die Information
$_FILES['grafik']['type']
ist in keiner Weise verlässlich, da sie vom Client kommt und der kann dort alles eintragen.
Du musst unbedingt den wahren MIME-Type auf dem Server prüfen, was aber mit reinen PHP-Mitteln z.Zt. nicht mehr möglich ist. Die alte Funktion mime_content_type() ist nicht mehr in allen Installationen vorhanden, auf einigen Windows-Intallationen funktioniert sie einfache nicht, außerdem ist sie deprecated. Die im Manual empfohlene Ersatzfunktion aus PECL ist unzuverlässig.
Die einzige Möglichkeit ist auf einer Linux-Installaion das Programm "file" mittels exec() aufzurufen.
Dabei muss man nur darauf achten, dass man nur (einen) Filenamen ohne Lehrzeichen als Parameter übergibt, bzw. diese vorher maskiert.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hello,
Die Information
$_FILES['grafik']['type']
ist in keiner Weise verlässlich, da sie vom Client kommt und der kann dort alles eintragen.
Du musst unbedingt den wahren MIME-Type auf dem Server prüfen, was aber mit reinen PHP-Mitteln z.Zt. nicht mehr möglich ist.Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo Tom vom Berg,
jetzt bin ich mehr als verwirrt.
Ich werde mich schlau machen.
Andy