Bilder hochladen
Christoph
- php
0 Dieter Raber0 Fabian St.0 Tom
0 Tom
Ich will Bilder mit ihrer Originalnamen in ein Verzeichnis auf einen Server laden. Das Verzeichnis wurde mittels mkdir erfolgreich erstellt.
Allerdings werden die Bilder nicht in den Server geladen.
Das sind die Codes:
Code:
Grafik 1<br>
gültige Formate jpg-, jpeg- und gif-Dateien.
<input name='grafik1' type='file' >
<input type='hidden' name='MAX_FILE_SIZE' value='500000'>
<input type='hidden' name='ordner' value='$ordner'>
<input type='submit' name='submit' value='Beenden'>
Code:
<?php
$ordner = ($_POST["ordner"]);
$max = ($_POST["MAX_FILE_SIZE"]);
$dateiname1 = $grafik1_name;
if($grafik1_size > $max)
{
echo "Die Datei ist zu groß, die maximale Dateigrösse beträgt $max Byte(s)";
}
else
if (isset($submit)) {
copy($grafik1,"/$ordner/$dateiname1");
Hallo Christoph,
Allerdings werden die Bilder nicht in den Server geladen.
Das ist auch keine grosse Ueberraschung
Lies mal diesen Artikel in den PHP-FAQ
http://www.php-faq.de/q/q-formular-upload-php4.html
Gruß,
Dieter
Hi!
Ich will Bilder mit ihrer Originalnamen in ein Verzeichnis auf einen Server laden. Das Verzeichnis wurde mittels mkdir erfolgreich erstellt.
Allerdings werden die Bilder nicht in den Server geladen.
[...]
Das wundert mich nicht - dein Code strotzt nur so von Fehlern ;-)
Zu allererst sei mal erwähnt, das MAX_FILE_SIZE nur eine Art Richtwert für den Browser ist, der jedoch auch überschritten werden kann, insofern solltest du dich nicht alleine auf diesen Wert verlassen, sondern die Dateigröße selber ermitteln (filesize().
Darüber hinaus solltest du die superglobalen Arrays $_POST und $_FILES verwenden, anstatt dich auf register_globals=on zu verlassen. Dahinter stehen vor allem sicherheitskritische Gründe.
Für alles andere möchte ich dir den entsprechenden Abschnitt im Manual näherlegen. Dort wird alles genau beschrieben.
Grüße,
Fabian St.
Hello,
Zu allererst sei mal erwähnt, das MAX_FILE_SIZE nur eine Art Richtwert für den Browser ist, der jedoch auch überschritten werden kann, insofern solltest du dich nicht alleine auf diesen Wert verlassen, sondern die Dateigröße selber ermitteln (filesize().
Wenn man die Größe ganz gezielt beschränken will und einen Apache-Server hat, so sollte man das Script in ein Verzeichnis legen, dessen Upload mittels .htaccess-Einstellung oder VirtHost-Einstellung serverseitig beschränkt ist. Der Apache wertet dann schon die in den Headern übermittelte Dateigröße aus (wenn vorhanden) und gibt einen Fehlercode, wenn die zu groß ist, oder bricht schlimmstenfalls den Upload nach der eingestellten Anzahl Bytes ab.
SetInputFilter PHP
LimitRequestBody 16000000
regelt die maximale Größe des gesamten Requests
php_admin_value post_max_size 500000
php_admin_value upload_max_filesize 80000
regeln dann php-seits die Größen per Post und per Datei
Dem Browser sollte man seinen Wunsch aber trotzdem mitteilen.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Hello,
Grafik 1<br>
gültige Formate jpg-, jpeg- und gif-Dateien.
<input name='grafik1' type='file' >
<input type='hidden' name='MAX_FILE_SIZE' value='500000'>
<input type='hidden' name='ordner' value='$ordner'>
<input type='submit' name='submit' value='Beenden'>Code:
<?php
$ordner = ($_POST["ordner"]);
$max = ($_POST["MAX_FILE_SIZE"]);
$dateiname1 = $grafik1_name;
if($grafik1_size > $max)
{
echo "Die Datei ist zu groß, die maximale Dateigrösse beträgt $max Byte(s)";
}
else
if (isset($submit)) {
copy($grafik1,"/$ordner/$dateiname1");
Da will ich für Dich (und für uns alle) aber hoffen, dass Du das nur auf deinem lokalen Server einsetzt.
Keine Prüfung, um welchen Mime-Type es sich wirklich handelt
Die Prüfung _muss_ auf dem Server geschehen mit einer sicheren Funktion
Keine Prüfung, vohin die Datei geladen wird
Keine Auswertung der Fehlerstati
Außerdem:
Woher kommt $grafik1_size ?
Woher kommt $grafik1 ?
Das siehrt mir alles sehr nach 'register_globals = ON' aus *igitt*
Lies Dir das Manual nochmal genauer durch, und programmiere so, als wäre register_globals = OFF
http://de.php.net/features.file-upload
und baue alle Prüfungen ein, die Du Dir vorstellen kannst. Fileupload ist der empfindlichste Bereich in Bezug auf Sicherheit!
Ober willst Du Deinen Server an Spammer und Gangster verlieren und dafür auch noch haften?
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom