Hilfe bei Dateiüberprüfung

funnyzocker

Erfahrenes Mitglied
Hallo.
Brauche mal wieder ein wenig Hilfe von euch.

Dieses Script lädt dateien auf meinen Server
PHP:
$path1= "../pictures/$_SESSION[user]/$_POST[projekt]/".$HTTP_POST_FILES['ufile']['name'][0];
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
$datei0 = $HTTP_POST_FILES['ufile']['name'][0];
if("$datei0" == "")
{
echo"Das erste Feld wurde leer gelassen<br>";
}
else
{
$heute= date("d.m.y");
$zeit = date("H:i:s");
$eintrag = "INSERT INTO bilder (username, id, datum, uhrzeit, projekt_name) 
VALUES ('$_SESSION[user]', '$datei0', '$heute' , '$zeit', '$_POST[projekt]')";
$eintragen = mysql_query($eintrag);
chmod("../pictures/$_SESSION[user]/$_POST[projekt]/$datei0", 0777);

echo "Datei Name :".$HTTP_POST_FILES['ufile']['name'][0]."<BR/>";
echo "Datei Grösse :".$HTTP_POST_FILES['ufile']['size'][0]."<BR/>";
echo "Datei Typ :".$HTTP_POST_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";
}

Was muss ich machen das das Script vor dem Upload überprüft ob die datei eine jpg,gif oder png datei ist.
Es sollen keine anderen dateien upgeloadet werden können.
 
Wie du in deinem Script wunderbar geschrieben hast
PHP:
$HTTP_POST_FILES['ufile']['type']
enthält dieses Array den Dateitypen.
Schreibe einfach an den Anfang des Kopiervorganges, also vor der Deklaration der Variable $path1, eine If Anweisung, um es zu überprüfen.

Zudem finde ich es ziemlich unsinnig, die datei erst zu kopieren und dann zu prüfen, ob etwas hochgeladen wurde, oder nicht. Diese Überprüfung macht man außerdem am Besten mit $_FILES['ufile']['error'].

Hinweis: $HTTP_POST_FILES ist veraltet. Nimm stattdessen $_FILES
 
Zuletzt bearbeitet:
Hallo.
so ich habe es mal so Probiert

PHP:
//1ste Dateí Abarbeiten
$datei0 = $_FILES['ufile']['name'][0];
if("$datei0" == "")
{
echo"Das erste Feld wurde leer gelassen<br>";
}
else
{
$type = $_FILES['ufile']['type'][0]; 
$size = $_FILES['ufile']['size'];
if($type != "image/gif" && $type != "image/pjpeg") { 
    $err[] = "Es dürfen nur gif und jpg Dateien hochgeladen werden"; 
} 
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
}
$path1= "../pictures/$_SESSION[user]/$_POST[projekt]/".$_FILES['ufile']['name'][0];
copy($_FILES['ufile']['tmp_name'][0], $path1);
$heute= date("d.m.y");
$zeit = date("H:i:s");
$eintrag = "INSERT INTO bilder (username, id, datum, uhrzeit, projekt_name) VALUES ('$_SESSION[user]', '$datei0', '$heute' , '$zeit', '$_POST[projekt]')";
$eintragen = mysql_query($eintrag);
chmod("../pictures/$_SESSION[user]/$_POST[projekt]/$datei0", 0777);

echo "Datei Name :".$_FILES['ufile']['name'][0]."<BR/>";
echo "Datei Grösse :".$_FILES['ufile']['size'][0]."<BR/>";
echo "Datei Typ :".$_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";
}

Leider wird immer noch jede Datei angenommen
 
Morgen.
Ja das erst die Datei [0] abgearbeitet wird ist absicht.
Das Formular hat 3 dateifelder. Darum sind in dem Script was die felder abarbeitet 3 solche Blöcke wie oben. Darum [0] [1] und [2]
 
Treten denn Fehler auf, ist die $err-Variable als nicht leer? Dies solltest du nämlich bei der Verarbeitung berücksichtigen.
 
Nein Fehler treten nicht auf. Nur ist eben das Dateiformat nich auf jpg/gif und Grösse auf 15000kb begrenzt. Kann trotzdem alles hochladen
 
Dass die auf jeden Fall hochladen kannst wird daran liegen, dass Dein copy() (welches Du uebrigens durch move_uploaded_file() ersetzen solltest) in jedem Fall ausgefuehrt wird, auch wenn festgestellt wird, dass die Datei ein ungueltiges Format hat oder zu gross ist.

Am besten fragst Du vor dem ganzen der die Datei kopiert und in die Datenbank eintraegt noch ab ob Du $err gesetzt hast.

Ausserdem solltest Du nicht nur auf image/pjpeg pruefen sondern auch auf image/jpeg
 
Ups stimt da hat noch ein else gefehlt.Ist ersetzt und nun wird garnix mehr hochgeladen :rolleyes:
PHP:
$type = $_FILES['ufile']['type'][0];
$size = $_FILES['ufile']['size'][0];
if($type != "image/gif" && $type != "image/jpeg") {
    $err[] = "Es dürfen nur gif und jpg Dateien hochgeladen werden";
}
if($size > "15000") {
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}
else
{
$path1= "../pictures/$_SESSION[user]/$_POST[projekt]/".$_FILES['ufile']['name'][0];
move_uploaded_file($_FILES['ufile']['tmp_name'][0], $path1);
$heute= date("d.m.y");
$zeit = date("H:i:s");
//$eintrag = "INSERT INTO bilder (username, id, datum, uhrzeit, projekt_name) VALUES ('$_SESSION[user]', '$datei0', '$heute' , '$zeit', '$_POST[projekt]')";
//$eintragen = mysql_query($eintrag);
chmod("../pictures/$_SESSION[user]/$_POST[projekt]/$datei0", 0777);

echo "Datei Name :".$_FILES['ufile']['name'][0]."<BR/>";
echo "Datei Grösse :".$_FILES['ufile']['size'][0]."<BR/>";
echo "Datei Typ :".$_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";
}
}
 
Zurück