hallo. also ich bin dabei, an einer seite zu arbeiten bei der man mehrere dateien hochläd.
die seite hat also mehrere felder mit dem type="file" attribut. das formular hat natürlich den enctype="multipart/form-data"-teil.
jetzt sollen unter jedem inputfeld je nach situation verschiedene fehlermeldungen erscheinen.
dazu initialisiere ich erstmal ganz zu beginn der seite alle fehlermeldungen mit $meldung=""; etc.
dann gibt es 3 verschiedene typen von fehlermeldungen
a) Sie müssen eine Datei angeben
b) Die angegebene Datei ist zu gross
c) die datei ist kein bild
in der php datei schreibe ich also erstmal if (isset(mein_submit_button)) {....
sodele, dann schaue ich erstmal ob $_POST['name_von_input_feld_1'] existiert. wenn nicht, gibts $meldung = fall a);, falls doch erstelle ich mir erstmal einfachere namen damit ich später nicht immer $_FILES['name']['name/size/etc'] schreiben muss sondern nur z.B. $datei1_name/_tmpname/_size etc
falls also meine $_POST.. bedingung wahr wird mache ich erstmal einen check ob die dateigröße und dateityp erfüllt sind. falls ja bleibt die $meldung leer, falls aber da was im argen ist, wird die fehlermeldung halt entsprechend gesetzt. soweit alles richtig ?
jetzt kommen meine fragen
wenn alle checks durchgelaufen sind, sollen die hochgeladenen dateien verschoben werden in ein spezielles unterverzeichnis, außedem soll der name der verschobenen dateien noch verändert werden, also z.B. die zeit drangehängt, damit es nicht zu überschneidungen kommt.
Wenn ich das richtig gesehen habe, wird eine hochgeladene datei folgendermaßen verarbeitet:
mir stellen sich jetzt da einige fragen:
a) ist das so die sicherste methode ? muss ich evtl noch irgendetwas filtern damit man sich nicht "einhacken" kann ?
b) muss das verzeichnis ($uploaddir) beschreibbar sein, also der CHMOD-Wert 755 (?) sein ?
c) wie schaffe ich es, dass die datei z.B. originalname_time().originale_endung heisst ?
d) gibt es eine möglichkeit das hochgeladene bild im anschluss auf 800x600 pixel zu resizen ? bzw es so zu resizen das es maximal 800 breit oder maximal 600 hoch ist (aspectratio beibehalten)
e) jedes formular bezieht sich auf ein "event" auf der seite. jedes event hat seine eigene ID in der datenbank. weil ja mehrere dateien pro event hochgeladen werden, möchte ich die gerne in einem unterordner haben, d.h. ich möchte dass es einen unterordner namens 'id' (eben die ID-Nummer) gibt. würde die move_uploaded_file funktion mir automatisch diesen ordner (/var/www/uploads/'id'/dateiname.endung) anlegen wenn ich /var/www/uploads/ beschreibbar mache ?
f) ich habe keine Ahnung wie ich ordner unter windows beschreibbar mache. ich benutze XAMPP, also apache 2
g) wie bekommt man den absoluten pfad, also z.B "/var/www/uploads/" oder "C:\Programme\XAMPP\htdocs\" über php denn heraus ?
MfG
die seite hat also mehrere felder mit dem type="file" attribut. das formular hat natürlich den enctype="multipart/form-data"-teil.
jetzt sollen unter jedem inputfeld je nach situation verschiedene fehlermeldungen erscheinen.
dazu initialisiere ich erstmal ganz zu beginn der seite alle fehlermeldungen mit $meldung=""; etc.
dann gibt es 3 verschiedene typen von fehlermeldungen
a) Sie müssen eine Datei angeben
b) Die angegebene Datei ist zu gross
c) die datei ist kein bild
in der php datei schreibe ich also erstmal if (isset(mein_submit_button)) {....
sodele, dann schaue ich erstmal ob $_POST['name_von_input_feld_1'] existiert. wenn nicht, gibts $meldung = fall a);, falls doch erstelle ich mir erstmal einfachere namen damit ich später nicht immer $_FILES['name']['name/size/etc'] schreiben muss sondern nur z.B. $datei1_name/_tmpname/_size etc
falls also meine $_POST.. bedingung wahr wird mache ich erstmal einen check ob die dateigröße und dateityp erfüllt sind. falls ja bleibt die $meldung leer, falls aber da was im argen ist, wird die fehlermeldung halt entsprechend gesetzt. soweit alles richtig ?
jetzt kommen meine fragen
wenn alle checks durchgelaufen sind, sollen die hochgeladenen dateien verschoben werden in ein spezielles unterverzeichnis, außedem soll der name der verschobenen dateien noch verändert werden, also z.B. die zeit drangehängt, damit es nicht zu überschneidungen kommt.
Wenn ich das richtig gesehen habe, wird eine hochgeladene datei folgendermaßen verarbeitet:
PHP-Code:
$uploaddir = '/var/www/uploads/';
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])
a) ist das so die sicherste methode ? muss ich evtl noch irgendetwas filtern damit man sich nicht "einhacken" kann ?
b) muss das verzeichnis ($uploaddir) beschreibbar sein, also der CHMOD-Wert 755 (?) sein ?
c) wie schaffe ich es, dass die datei z.B. originalname_time().originale_endung heisst ?
d) gibt es eine möglichkeit das hochgeladene bild im anschluss auf 800x600 pixel zu resizen ? bzw es so zu resizen das es maximal 800 breit oder maximal 600 hoch ist (aspectratio beibehalten)
e) jedes formular bezieht sich auf ein "event" auf der seite. jedes event hat seine eigene ID in der datenbank. weil ja mehrere dateien pro event hochgeladen werden, möchte ich die gerne in einem unterordner haben, d.h. ich möchte dass es einen unterordner namens 'id' (eben die ID-Nummer) gibt. würde die move_uploaded_file funktion mir automatisch diesen ordner (/var/www/uploads/'id'/dateiname.endung) anlegen wenn ich /var/www/uploads/ beschreibbar mache ?
f) ich habe keine Ahnung wie ich ordner unter windows beschreibbar mache. ich benutze XAMPP, also apache 2
g) wie bekommt man den absoluten pfad, also z.B "/var/www/uploads/" oder "C:\Programme\XAMPP\htdocs\" über php denn heraus ?
MfG
Kommentar