Upload-Form funktioniert nicht
Chris
- php
Hey ihr,
ich hab hier ein simples Upload-Script für Bilder:
<form name="form1" enctype="multipart/form-data" method="post" action="<? echo $PHP_SELF; ?>" class="contactform">
<input type="file" name="datei">
<input type="submit" name="button" value="Bild hochladen">
<input type="hidden" name="max_file_size" value="1000000">
<input type="hidden" name="send" value="1">
</form>
if($_POST['send'] == 1) {
// Namen festlegen und speichern in $bildname
$bildname = "pic_".$_POST['datei_name'].'_'.time();
// MIME Prüfung
if($_POST['datei_type'] == "image/jpeg" OR $datei_type == "image/x-png" OR $datei_type == "image/pjpeg"){}
else { $error = 'mime'; }
// DateigröÃYe
if($_POST['datei_size'] <= $_POST['max_file_size']) {}
else { $error = 'size'; }
// Kopiervorgang durchführen, bei Fehler melden
if(!copy($_POST['datei'],'/../../resources/'.$bildname)) {
$error = 'copy'; }
}
Leider schlägt der Kopiervorgang fehl... $error hat bei mir am Schluss immer den Wert 'copy'.
Woran kanns liegen?
Lg
Chris
Tach
auf Files greift man mit dem Array $_FILES zu...
schau mal hier: http://www.phpcenter.de/de-html-manual/features.file-upload.html
Tach
auf Files greift man mit dem Array $_FILES zu...
schau mal hier: http://www.phpcenter.de/de-html-manual/features.file-upload.html
Hey,
Danke, so hab ich das jetzt auch gemacht - und es klappt ;)
Lg
Chris
Hello,
auf Files greift man mit dem Array $_FILES zu...
schau mal hier: http://www.phpcenter.de/de-html-manual/features.file-upload.html
Hey,
Danke, so hab ich das jetzt auch gemacht - und es klappt ;)
Entschuldige, wenn ich nochmal nachfrage, es ist ja Dein Webspace, aber...
wie hast Du das jetzt auch gemacht?
Hinter dem Link steht mMn nicht gescheites.
Da wird weder überprüft, ob der Upload fehlerfrei beendet wurde, noch wird festgestellt, ob vielleicht ein Script hochgeladen wurde.
Beim Fileupload kann man sich die größten Sicherheitslöcher in seinen Server reißen. Du solltest ruhig nochmal posten, was nun herausgekommen ist bei Deinem Script.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
<form name="form1" enctype="multipart/form-data" method="post" action="<? echo $PHP_SELF; ?>" class="contactform">
<form name="form1" enctype="multipart/form-data" method="post" action="<? echo $_SERVER['SCRIPT_NAME']; ?>" class="contactform">
Nimm besser 'SCRIPT_NAME'
<input type="file" name="datei">
<input type="submit" name="button" value="Bild hochladen">
max_file_size kannst Du Dir schenken
<input type="hidden" name="max_file_size" value="1000000">
<input type="hidden" name="send" value="1">
</form>
if($_POST['send'] == 1) {
if(isset($_POST['send']) and $_POST['send'] == 1)
{
## nur weitermachen, wenn File auch fehlerfrei hochgeladen wurde
if (isset($_FILES['error']) and $_FILES['error'] === 0)
{
// Namen festlegen und speichern in $bildname
$bildname = "pic_".$_POST['datei_name'].'_'.time();
Das ist gefährlich. Wenn, dann besser
$bildname = "pic_".basename($_POST['datei_name']).'_'.time();
// MIME Prüfung
if($_POST['datei_type'] == "image/jpeg" OR $datei_type == "image/x-png" OR $datei_type == "image/pjpeg"){}
else { $error = 'mime'; }
Mime-Prüfung hat überhaupt keinen Sinn, wenn Du die Information vom Client benutzt.
Du musst sie dann schon auf dem Server selber durchführen
siehe hierzu
http://de3.php.net/manual/de/function.mime-content-type.php und
http://de3.php.net/manual/de/function.mime-content-type.php
// DateigröÃYe
if($_POST['datei_size'] <= $_POST['max_file_size']) {}
else { $error = 'size'; }
Woher kommt denn plötzlich $_POST['datei_size']?
// Kopiervorgang durchführen, bei Fehler melden
if(!copy($_POST['datei'],'/../../resources/'.$bildname)) {
$error = 'copy'; }
}
}
Leider schlägt der Kopiervorgang fehl... $error hat bei mir am Schluss immer den Wert 'copy'.
Woran kanns liegen?
Kann das sein, dass Du bisher überhaupt nicht selber versucht hast, den Fehler zu suchen?
Dein Error_Reporting scheint jedenfalls nicht aktiv zu sein, denn sonst hättest Du einige Notices kassiert und sicherlich danach gefragt, warum die da stehen...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Kann das sein, dass Du bisher überhaupt nicht selber versucht hast, den Fehler zu suchen?
Dein Error_Reporting scheint jedenfalls nicht aktiv zu sein, denn sonst hättest Du einige Notices kassiert und sicherlich danach gefragt, warum die da stehen...
Hey :) Die Error Messages hab ich mir hier gespart, weil sie das Script nur aufblähen. In meiner PHP-Datei sind die Messages natürlich drin.
Ich hab jetzt aber das Script nochmal komplett neu aufgebaut. Hatte das von vor ein paar Jahren, da hab ich das mal geschrieben... und hab den Fehler nicht gefunden. Aber nachdem ich jetzt noch vernünftig neu angefangen hab, funktioniert es auch... Danke :)