Zitat:
Zitat von Gredl
ich habe ein Upload-Skript geschrieben, das mir Daten aus dem Upload direkt in eine Datenbank Tabelle einträgt, mein Quellcode sieht hierfür so aus:
|
Ich bin zu faul, nachzugucken welcher Quellen Du Dich bedientest, aber das...
Zitat:
PHP-Code:
<?php if ($_GET['action'] == "upload") {
|
ist schon Scheiße.
1. Uploadformulare müssen
a. per POST erfolgend
b. Das
enctype="multipart/form-data" ist zwingend.
2. POST Daten findet man nicht in $_GET.
Und wenn das Formular so aussieht:
Code:
<input type="submit" name="submit" value="Uploaden">
dann sollte Deine Verzweigung so aussehen:
PHP-Code:
if (! empty($_POST) AND ! empty($_POST['submit']) AND $_POST['submit'] = 'Uploaden'){
files_pruefen_und_verschieben();
}else{
upload_formular_ausgeben();
}
Da:
(! empty($_POST) AND ! empty($_POST['submit']) AND $_POST['submit'] = 'Uploaden')
ist die Reihenfolge wichtig. PHP liest von links nach rechts und bricht bei ner AND Verknüpfung sofort ab, wenn das boolsche Ergenis TRUE nicht erreicht werden kann.
Weitere Fallen:
Da $_FILES vom HTTP Protokoll gefüttert wird und jeder Client ein potentieller Lügner ist, mußt Du alles überprüfen. Die einzige Größe, die der Server setzt:
$_FILES['formular_name']['tmp_name']
Zitat:
<input type="file" name="datei">
|
Aber das sind temp. files, die nur beim Uploadprozeß zur Verfügung stehen. Ein Klick weiter und schon sind se wech.
Und verlaß Dich nie darauf, nur weil eine Datei bild.jpg heißt, daß da auch wirklich nur ein Bild drinsteckt. Javascript, welches die Sessiondaten petzt und dem Client entweder n 404 oder ein kleines Herzchen schenkt - alles schon mal dagewesen.
Zitat:
Leider sieht man schon, dass auch der falsche Link verwendet wird, um die Datei runterzuladen, aber ich bekomme die Lösung einfach nicht hin
Die Uploads liegen unter: C:\xampp\htdocs\DBProjekt\upload
|
Das liegt zT. an Deiner Pfadfummelei. Das backslash wird unter Linux als escapezeichen benutzt. Aber der Apache + PHP sind so nett und gestatten Dir auch sowas:
Code:
c:/xampp/htdocs/DBProjekt/upload