PDA

Bekijk Volledige Versie : file upload



E
20/07/03, 20:20
Hoi,
Allereerst dank aan hen die vorige keer m'n vraag hadden beantwoord (iets
over poort nr 8080). Nu zit ik met een irritant probleem waar ik niet
uitkom. Op de nieuwe apache server PHP versie 4.2.0, dus het oude upload
script werkt niet meer. Maar ik krijg dit niet aan de praat.
Hier het script waarnaar het formulier verwijst, heel simpel:

<?php
$uploaddir = "/home/httpd/dmein/www/ecards/pics/".
$_FILES['userfile']['name'];

print "<pre>";
move_uploaded_file($userfile,$uploaddir);
if (move_uploaded_file($uploadfile, $uploaddir)) {
print "File is valid, and was successfully uploaded. Here's some more
debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
?>

Bij het uploaden van een gif krijg ik dit:

File is valid, and was successfully uploaded. Here's some more debugging
info:
Array
(
[userfile] => Array
(
[name] => xingqi_ming.gif
[type] => image/gif
[tmp_name] => /tmp/phpdoGOkA
[error] => 0
[size] => 2521
)

)

De gif is upgeload, maar de size = 0.

Als ik een jpg wil uploaden, geeft het script dit terug:

Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => Statues_03A.jpg
[type] => image/pjpeg
[tmp_name] =>
[error] => 3
[size] => 0
)

)

"gedeeltelijk" uploaded zou die error betekenen. Maar deze keer niets in de
upload dir. Wat zou hier fout gaan?
Alvast bij voorbaat 1000maal dank...

-Edwin

Ronald Klip
20/07/03, 21:05
E schreef:
> Hoi,
> Allereerst dank aan hen die vorige keer m'n vraag hadden beantwoord (iets
> over poort nr 8080). Nu zit ik met een irritant probleem waar ik niet
> uitkom. Op de nieuwe apache server PHP versie 4.2.0, dus het oude upload
> script werkt niet meer. Maar ik krijg dit niet aan de praat.
> Hier het script waarnaar het formulier verwijst, heel simpel:
>
> $uploaddir = "/home/httpd/dmein/www/ecards/pics/".
> $_FILES['userfile']['name'];

$uploaddir is een wat verwarrende naam voor een bestand.

> print "<pre>";
> move_uploaded_file($userfile,$uploaddir);

wat is $userfile? je bedoelt ws. $_FILES['userfile']['tmp_name']

> if (move_uploaded_file($uploadfile, $uploaddir)) {

1x move_uploaded_file() moet volstaan. verwijder de eerste, omdat je
alleen met de tweede het resultaat evalueert.
en wat is $uploadfile ?? je bedoelt ws. $_FILES['userfile']['tmp_name']

--
succes, Ronald

E
21/07/03, 00:50
"Ronald Klip" <ronald@bladibla.njet> wrote in message
news:MPG.198504763ff0a917989bd7@nl-news.euro.net...
> E schreef:
> > Hoi,
> > Allereerst dank aan hen die vorige keer m'n vraag hadden beantwoord
(iets
> > over poort nr 8080). Nu zit ik met een irritant probleem waar ik niet
> > uitkom. Op de nieuwe apache server PHP versie 4.2.0, dus het oude upload
> > script werkt niet meer. Maar ik krijg dit niet aan de praat.
> > Hier het script waarnaar het formulier verwijst, heel simpel:
> >
> > $uploaddir = "/home/httpd/dmein/www/ecards/pics/".
> > $_FILES['userfile']['name'];
>
> $uploaddir is een wat verwarrende naam voor een bestand.
>

oeps, slordig knip en plakwerk van mij. Er staat in het orgineel:

$uploaddir = "/home/httpd/minskhoven/www/ecards/pics/".
$_FILES['userfile']['name'];
$userfile = $_FILES['userfile']['tmp_name'];

$uploaddir is dus de dir waar de pics terecht moeten komen. Voor het gemak
wordt ook de bestandsnaam er meteen aan vastgeplakt.

> > print "<pre>";
> > move_uploaded_file($userfile,$uploaddir);
>
> wat is $userfile? je bedoelt ws. $_FILES['userfile']['tmp_name']
>

presies, die is het.

> > if (move_uploaded_file($uploadfile, $uploaddir)) {
>
> 1x move_uploaded_file() moet volstaan. verwijder de eerste, omdat je
> alleen met de tweede het resultaat evalueert.

ok

> en wat is $uploadfile ?? je bedoelt ws. $_FILES['userfile']['tmp_name']
>

yep. zooitje zeg. na schoonmaak had ik dit:

<?php

$userfile = $_FILES['userfile']['tmp_name'];
$uploaddir = "/home/httpd/dmein/www/ecards/pics/".
$_FILES['userfile']['name'];


if (move_uploaded_file($userfile, $uploaddir)) {
print "File is valid, and was successfully uploaded. Here's some more
debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
?>

al beter?
het resultaat niet:

Possible file upload attack! Here's some debugging info: Array ( [userfile]
=> Array ( [name] => Flamingwow1.gif [type] => image/gif [tmp_name] =>
[error] => 3 [size] => 0 ) )

maar ook :

File is valid, and was successfully uploaded. Here's some more debugging
info: Array ( [userfile] => Array ( [name] => AnimatedDancer175.gif [type]
=> image/gif [tmp_name] => /tmp/phpWEWL92 [error] => 0 [size] => 3402 ) )

in werkelijkheid is het bestand op de server echter weer 0 bytes. (Gewoon
ftp'en gaat wel)
meestal het eerste resultaat, sommige bestanden geven 'file is valid", maar
zijn dat 0 bytes. Hetzelfde bestand geeft soms eerste resultaat, soms
tweede. Random fout, maar meestal fout, en altijd 0.

-Edwin

Ronald Klip
21/07/03, 08:20
E schreef:
>
> <?php
>
> $userfile = $_FILES['userfile']['tmp_name'];
> $uploaddir = "/home/httpd/dmein/www/ecards/pics/".
> $_FILES['userfile']['name'];
>
> if (move_uploaded_file($userfile, $uploaddir)) {
> print "File is valid, and was successfully uploaded. Here's some more
> debugging info:\n";
> print_r($_FILES);
> } else {
> print "Possible file upload attack! Here's some debugging info:\n";
> print_r($_FILES);
> }
> ?>
>
> al beter?

Jep.

> het resultaat niet:
>
> Possible file upload attack! Here's some debugging info: Array ( [userfile]
> => Array ( [name] => Flamingwow1.gif [type] => image/gif [tmp_name] =>
> [error] => 3 [size] => 0 ) )

http://www.php.net/manual/en/features.file-upload.errors.php
Error 3: The uploaded file was only partially uploaded.

> maar ook :
>
> File is valid, and was successfully uploaded. Here's some more debugging
> info: Array ( [userfile] => Array ( [name] => AnimatedDancer175.gif [type]
> => image/gif [tmp_name] => /tmp/phpWEWL92 [error] => 0 [size] => 3402 ) )
>
> in werkelijkheid is het bestand op de server echter weer 0 bytes. (Gewoon
> ftp'en gaat wel)
> meestal het eerste resultaat, sommige bestanden geven 'file is valid", maar
> zijn dat 0 bytes. Hetzelfde bestand geeft soms eerste resultaat, soms
> tweede. Random fout, maar meestal fout, en altijd 0.

Hmm. Is je form wel in orde? enctype="multipart/form-data",
method="post", veld met MAX_FILE_SIZE, dat soort dingen?

--
groet, Ronald

E
21/07/03, 08:35
> >
> > al beter?
>
> Jep.
>
> > het resultaat niet:
> >
> > Possible file upload attack! Here's some debugging info: Array (
[userfile]
> > => Array ( [name] => Flamingwow1.gif [type] => image/gif [tmp_name] =>
> > [error] => 3 [size] => 0 ) )
>
> http://www.php.net/manual/en/features.file-upload.errors.php
> Error 3: The uploaded file was only partially uploaded.
>

ja, heb ik gezien. maar in feite is er helemaal niets upgeload.

> > maar ook :
> >
> > File is valid, and was successfully uploaded. Here's some more debugging
> > info: Array ( [userfile] => Array ( [name] => AnimatedDancer175.gif
[type]
> > => image/gif [tmp_name] => /tmp/phpWEWL92 [error] => 0 [size] =>
3402 ) )
> >
> > in werkelijkheid is het bestand op de server echter weer 0 bytes.
(Gewoon
> > ftp'en gaat wel)
> > meestal het eerste resultaat, sommige bestanden geven 'file is valid",
maar
> > zijn dat 0 bytes. Hetzelfde bestand geeft soms eerste resultaat, soms
> > tweede. Random fout, maar meestal fout, en altijd 0.
>
> Hmm. Is je form wel in orde? enctype="multipart/form-data",
> method="post", veld met MAX_FILE_SIZE, dat soort dingen?
>

Ik dacht het wel. voor de zekerheid hier ook maar neerzetten?

<form enctype="multipart/form-data" action="upload.php" method="post">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="150000">
</p>
<table width="100%" border="0">
<tr>
<td>Stuur dit bestand:</td>
<td><input name="userfile" type="file"></td>
</tr>
<tr>
<td>Naam zoals die straks te zien is:</td>
<td><input name="titel" type="text" id="titel"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Stuur nu !!!!"></td>
</tr>
</table>

niets mis mee, toch? bedankt voor je hulp trouwens.

-Edwin

Ronald Klip
21/07/03, 09:35
E schreef:
>
> > [upload script]
> > > al beter?
> >
> > Jep.
> >
> > > zijn dat 0 bytes. Hetzelfde bestand geeft soms eerste resultaat, soms
> > > tweede. Random fout, maar meestal fout, en altijd 0.
> >
> > Hmm. Is je form wel in orde? enctype="multipart/form-data",
> > method="post", veld met MAX_FILE_SIZE, dat soort dingen?
>
> Ik dacht het wel. voor de zekerheid hier ook maar neerzetten?

[knip form]

> niets mis mee, toch? bedankt voor je hulp trouwens.

Nee, ik zie geen fouten (het is conform de manual ;). Kun je voor de
zekerheid eens met phpinfo() kijken of de instellingen voor file uploads
wel in orde zijn?
file_uploads 1
post_max_size [voldoende bytes]
upload_max_filesize [voldoende bytes]

En ik neem aan dat de permissies voor de destination dir ruim genoeg
zijn?

Anders zou ik het ook niet weten... In de user notes op php.net staan
wat opmerkingen waar je misschien iets aan hebt: sommigen melden
bijvoorbeeld dat eea ging werken door het MAX_FILE_SIZE-veld juist weg
te laten.

--
groet, Ronald

John Bokma
21/07/03, 16:20
E wrote:

> <input type="hidden" name="MAX_FILE_SIZE" value="150000">

Lees mijn stukje over forms (link onder) over het "nut" van zo iets.

John

--
email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
UI design tips: http://johnbokma.com/websitedesign/ ~ ICQ 218175426

zwemvlies verzoekschrift ontwikkeling op maat

E
21/07/03, 17:20
"John Bokma" <postmaster@castleamber.com> wrote in message
news:1058796620.662368@halkan.kabelfoon.nl...
> E wrote:
>
> > <input type="hidden" name="MAX_FILE_SIZE" value="150000">
>
> Lees mijn stukje over forms (link onder) over het "nut" van zo iets.
>
> John
>
> --
> email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
> UI design tips: http://johnbokma.com/websitedesign/ ~ ICQ 218175426
>
> zwemvlies verzoekschrift ontwikkeling op maat
>

dank je, het werkt nu, dus het dichtspijkeren, lassen en zo meer kan
beginnen...

-Edwin

E
21/07/03, 17:20
>
> En ik neem aan dat de permissies voor de destination dir ruim genoeg
> zijn?
>

nou, er scheen een webuser te zijn die ik meer bytes moest geven. (Een unix
gebruiker "web"). En nu werkt het. Wist ik veel. Ik dacht dat webusers een
soort rondzwervend surfvee waren? :((
Weer wat geleerd !!

-Edwin