(...)
[1] Den Code den ich euch gepostet habe ist so zimlich alles was was ich habe. Natürlich ist alles noch in eine HTML Datei gepackt aber sonst ist da nicht arg viel mehr.
(...)
[2] "Hobbes"
wie hast du das bemeint mit dem initialisieren?
(...)
[3] Den max_file_size hab ich auch mal auf 30000 hochgeschraubt.
(...)
[4] Hab mir das Fileupload erlichgesagt leichter Vorgestellt. Das demotiviert einen zimlich wenn man doch schon einges mit PHP entwickelt hat und dann bei soetwas hängen bleibt
(...)
[5] PS: Die sicherheit des Scriptest ist vorerst zweitrangig. Ist nur zur übung und wird später bezüglich der Sicherheit geprüft
Hallo Jannik,
Tja, am Fileupload kann man wirklich die Zähne ausbeissen
Deshalb habe ich Dir zuerst den Link auf ein gut funktionierendes Beispiel geschickt, so dass Du mal schauen kannst, wie es funktioniert und das ganze dann modifizieren kannst...
Kurz zitiert, so dass die ganze Anleitung mit dabei ist bezüglich notwendiger Modifikationen): Ich empfehle Dir mal das Beispiel von
hier zu übernehmen (php.net; jedoch Anpassung der Pfade an Deine Server-Situation) und die Dokumentation gut zu lesen zu den betreffenden Funktionen und Parametern. Erst wenn Du das verstanden hast, kannst Du einfach die für Dich passenden Modifikationen machen.
Vielen Dank übrigens für die neue Darstellung. So kann man den Code deutlich besser lesen
zu 1: Wenn das der ganze Code ist, dann entspricht dies genau einem konzeptionellen Problem. Du benötigst
im Prinzip 2 Dateien: Ein Formular mit den Formulardaten, mit dem Du die Datei auswählst und dann hochlädst und eine zweite Datei, welche dann den upload auswertet. Alternativ kannst Du dies natürlich auch durch Parameter in einem PHP-File machen, zB mit
Code:
test.php?function=upform
test.php?function=upload
wobei Du dann je nach Parameter eine andere Ausgabe zurückschickst.
Selbstverständlich kannst du dann im Verlauf eine Kombination machen (upload verarbeiten und gleich neues Form zurücksenden. Doch würde ich
initial aus didaktischen Gründen eine strikte Trennung in zwei separate Elemente empfehlen, bis es mal funktioniert.
So ist auch das Beispiel auf obenstehendem Link zu verstehen. Hast du das mal ausprobiert? Ist sehr empfehlenswert. Da es genau so funktioniert... (wirklich, kein Scherz!)
Die anderen Helfer im Forum haben Dir auch schon mal die Bedeutung der globalen Variablen gezeigt, die eben alle Infos mittragen, die Du zum Auswerten im Skript benötigst. Versuche mal das Beispiel aus und versuche die einzelnen Schritte und Parameter zu verstehen...
zu 2: Wie hast du meinen Kosenamen erraten.
So werde ich eigentlich am liebsten genannt
Mit initialisieren meinte ich eben, dass Du private Variablen
$filename_name verwendest, jedoch nirgends einen Bezug zur globalen Variablen
$FILES[] machst, die Du zum korrekten Auswerten der notwendigen Informationen brauchst. Auch diesbezüglich verweise ich erneut auf das funktionierende Beispiel auf der php.net Seite. Diese Beispiele sind wirklich sehr lehrreich!!!
Zu 3: Da kannst du ruhig noch höher gehen. Gerade Bilddateien benötigen viel Speicherplatz (momentan gibst Du nicht mal 30 KB frei...). Du kannst eigentlich im Teststadium nicht zu hoch gehen. Wenn die Datei zu lange ist, als dass sie während der maximalen Laufzeit des Skripts hochgeladen werden könnte (meist 30s oder so -- max. mögliche Dateigrösse also unter anderm auch von upload-Geschwindigkeit des Modems abhängig) dann kommt dann schon ein Error (timeout)... mach ruhig mal 3000000 oder noch höher...
Zu 4: Ja das dauerte auch bei mir zuerst lange - gerade weil ich mich nicht auf das einfache Beispiel einlassen wollte und es direkt komplizierter probieren wollte
Gleicher Fehler, wie Du
Das kommt dann schon noch - bald bist Du unser upload Experte und schreibst ein eigenes kleines Tutorial...
Zu 5: Gleiche Meinung! Vergiss es später jedoch nicht, noch zu machen!
Letztlich bleibt meine Empfehlung dieselbe: Probier mal das oben verlinkte Beispiel aus mit zwei Dateien (ein Form und und ein upload-Auswerter; beachte, dass der Name im Form [im Beispiel 'userfile' genannt] identisch sein muss mit dem Namen, den Du in der globalen Variablen
$FILES in der Klammer benötigst. Du kannst den Namen frei wählen - jedoch muss der Name übereinstimmen!).
Nebenbei: So kannst du übrigens auch mehrere Dateien miteinander übertragen: Nutze mehrere dieser Formularelemente mit verschiedenen Bezeichnern und werte dann alle im upload aus.
Beachte wirklich all diese kleinen Details und der Erfolg möge mit Dir sein (wie wohl andere Kreaturen sagen würden).
Ich leg mich mal wieder ans Kaminfeuer
Hobbes