PDA

Bekijk de volledige versie : upload script


RandyJC
8 January 2004, 21:15
<html>
<head>
<title>Nieuwe pagina 1</title>
</head>
<body>
<?
if ($_POST[action] != 'upit') {
// hier de html voor het formulier
?>
<form name=fileform method=post action=test.php enctype='multipart/form-data'>
<input type='file' name='file'>
<input type="submit" value="Verzenden" name="B1"></p>
<input type='hidden' name='action' value='upit'>
</form>
<?
}
else {
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES. In PHP versions earlier than 4.0.3, use copy() and
// is_uploaded_file() instead of move_uploaded_file.

$uploaddir = '/home/test/public_html/img/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];

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


}
?>
</body>
</html>


ik heb me rechten goed gezet (777)
map bestaat maar toch geeft die een fout.

http://test.randyjc.com/test.php

iemand enig idee?

WhizzCat
8 January 2004, 21:18
En als je die file attack meuk er uithaalt? Er staat iets veel te strak ingesteld in je php.ini vermoed ik.

RandyJC
8 January 2004, 21:20
Originally posted by WhizzCat
En als je die file attack meuk er uithaalt? Er staat iets veel te strak ingesteld in je php.ini vermoed ik.

er verschijnt ook geen bestand... :-/

zal het ff proberen

RandyJC
8 January 2004, 21:24
{
print &quot;Possible file upload attack! Here's some debugging info:\n&quot;;
print_r($_FILES);
}


dit haal ik weg dan krijg ik dit :? :S:


Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/virtual/site82/fst/home/test/public_html/test.php on line 26

Kampie
8 January 2004, 22:46
bij mij geeft hij hetzelfde aan.. maar volgens mij hoort dat ook zo..

ik zie namelijk zo niet wat er mis gaat.. :?

RandyJC
9 January 2004, 00:45
Originally posted by Kampie
bij mij geeft hij hetzelfde aan.. maar volgens mij hoort dat ook zo..

ik zie namelijk zo niet wat er mis gaat.. :?

upload die bij jou wel het bestand dan?

not-known
9 January 2004, 01:55
verander die $_POST[action] es naar $_POST['action'] en <input type='file' name='file'> naar <input type='file' name='userfile'>

verder doe je er verstandig aan je variabelen van te voren allemaal te declaren, aangezien ik nu de warnings over mn scherm zie vliegen.

Kampie
9 January 2004, 10:43
Originally posted by RandyJC
upload die bij jou wel het bestand dan? nee.. dat doet hij niet.. maar als het goed is komt hij daar niet eens aan toe.. je kan dat stukje code weggooien en het gaat nog helemaal goed.. :)

RandyJC
9 January 2004, 12:42
Originally posted by not-known
verander die $_POST[action] es naar $_POST['action'] en <input type='file' name='file'> naar <input type='file' name='userfile'>

verder doe je er verstandig aan je variabelen van te voren allemaal te declaren, aangezien ik nu de warnings over mn scherm zie vliegen.

trying it now...

maar wat is declaren? :?

RandyJC
9 January 2004, 12:52
Originally posted by RandyJC
trying it now...

maar wat is declaren? :?

ja nu doet die het :+

http://www.randyjc.com/test.php

als ik em test.randyjc.com dan gaf die die stomme safemode weer aan dus ff verhuisd.

maar goed.

nu ga ik proberen hoe ik die array geval weg haal... want dat is een beetje lelijk..

not-known
9 January 2004, 16:24
Originally posted by RandyJC
trying it now...

maar wat is declaren? :?

in het nederlands: declareren :+
dat is het initiëren van de variabelen tijdens de start van het script. wat houdt het concreet in? nou ja het zorgt ervoor dat je elke variabele die je gebruikt een waarde geeft.

standaard staat bij de errorlogging niet aan dat php de warnings weergeeft (meestal dus warnings over niet gedeclareerde vars en andere vieze fouten).
dus je kan in php.ini de errorlogging op E_ALL zetten:
error_reporting = E_ALL

en anders kan je tijdens script start het volgende opnemen:
error_reporting(E_ALL);

daarmee weet je zeker dat je script dicht zit :Y)

TheGroovMaster
9 January 2004, 16:29
heb een plaatje vertsuurd, waar kan ik die nou bekijken?

Pakspul
9 January 2004, 17:22
Probeer dit eens



$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

$source_filename = $_FILES['userfile']['name'];

$destination_filename = "/home/test/public_html/img/". $_FILES['userfile']['name'];

switch ($upload_mode)
{
case 'copy':
if ( !@copy($source_filename, $destination_filename) )
{
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}
@chmod('./' . $source_filename, 0666);
break;

case 'move':
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
if ( !@copy($source_file, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}

@chmod($config['upload_dir'] . '/' . $destination_filename, 0666);
break;
}

echo "Pakspul heerscht";
exit;

ik_ben_de_man
9 January 2004, 18:57
hij upload wel , ik kan alleen nergenst mijn bestanden vinden.

RandyJC
9 January 2004, 21:17
Originally posted by Pakspul
Probeer dit eens

*knip*


<html>
<head>
<title>Nieuwe pagina 1</title>
</head>
<body>
<?
if ($_POST['action'] != 'upit') {
// hier de html voor het formulier
?>
<form name=fileform method=post action=test.php enctype='multipart/form-data'>
<input type='file' name='userfile'>
<input type="submit" value="Verzenden" name="B1"></p>
<input type='hidden' name='action' value='upit'>
</form>
<?
$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

$source_filename = $_FILES['userfile']['name'];

$destination_filename = "/home/test/public_html/img/". $_FILES['userfile']['name'];

switch ($upload_mode)
{
case 'copy':
if ( !@copy($source_filename, $destination_filename) )
{
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}
@chmod('./' . $source_filename, 0666);
break;

case 'move':
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
if ( !@copy($source_file, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}

@chmod($config['upload_dir'] . '/' . $destination_filename, 0666);
break;
}

echo "Pakspul heerscht";
exit;

?>
</body>
</html>


krijg nu deze fout.


Parse error: parse error in /home/virtual/site82/fst/home/test/public_html/test.php on line 56
maar als ik die exit weghaal dan nog steeds

not-known
9 January 2004, 21:46
Originally posted by RandyJC
<html>
<head>
<title>Nieuwe pagina 1</title>
</head>
<body>
<?
if ($_POST['action'] != 'upit') {
// hier de html voor het formulier
?>
<form name=fileform method=post action=test.php enctype='multipart/form-data'>
<input type='file' name='userfile'>
<input type="submit" value="Verzenden" name="B1"></p>
<input type='hidden' name='action' value='upit'>
</form>
<?
$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

$source_filename = $_FILES['userfile']['name'];

$destination_filename = "/home/test/public_html/img/". $_FILES['userfile']['name'];

switch ($upload_mode)
{
case 'copy':
if ( !@copy($source_filename, $destination_filename) )
{
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}
@chmod('./' . $source_filename, 0666);
break;

case 'move':
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
if ( !@copy($source_file, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}

@chmod($config['upload_dir'] . '/' . $destination_filename, 0666);
break;
}

echo "Pakspul heerscht";
exit;

?>
</body>
</html>


krijg nu deze fout.


Parse error: parse error in /home/virtual/site82/fst/home/test/public_html/test.php on line 56
maar als ik die exit weghaal dan nog steeds

je opent nou wel een if-statement:
if ($_POST['action'] != 'upit') {

maar je sluit hm zo te zien nooit meer :p dus ergens moet je nog een '}' invoegen. die plek is denk ik hier:
</form>
<?
}
$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

RandyJC
9 January 2004, 22:53
Originally posted by not-known
je opent nou wel een if-statement:
if ($_POST['action'] != 'upit') {

maar je sluit hm zo te zien nooit meer :p dus ergens moet je nog een '}' invoegen. die plek is denk ik hier:
</form>
<?
}
$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

heb het wel gedaan maar dat is het niet :) het is overigens op line 55

not-known
9 January 2004, 23:59
Originally posted by RandyJC
heb het wel gedaan maar dat is het niet :) het is overigens op line 55
als ik het script uitvoer zoals ik zei dat je hm moest verbeteren heb ík geen parse error meer hoor?

RandyJC
10 January 2004, 00:16
Originally posted by not-known
als ik het script uitvoer zoals ik zei dat je hm moest verbeteren heb ík geen parse error meer hoor?

klopt sorry...

maar krijg wel een ander raar foutje

kijk maar

http://test.randyjc.com/test.php

not-known
10 January 2004, 01:18
Originally posted by RandyJC
klopt sorry...

maar krijg wel een ander raar foutje

kijk maar

http://test.randyjc.com/test.php

klopt, want na het uitvoeren van het if-statement gaat het script gewoon door. PHP werkt sequentieel, ofwel het script loopt door tot het einde. als je dat niet wil zal je na de if een else moeten gebruiken om de rest niet meteen uit te laten voeren

RandyJC
10 January 2004, 01:33
Originally posted by not-known
klopt, want na het uitvoeren van het if-statement gaat het script gewoon door. PHP werkt sequentieel, ofwel het script loopt door tot het einde. als je dat niet wil zal je na de if een else moeten gebruiken om de rest niet meteen uit te laten voeren

hmmm :) nahjah ik w8 wel ff met deze script. krijg van de week de boek van php. ga ik het daar nog wel ff uit leren en hoe alles werkt misschien heb ik over een paar jaar wel een geavanceerde image upload geval.. dat was de bedoeling eigenlijk altijd al geweest waar mensen dan hun eigen foto's terug kunnen zien.

not-known
10 January 2004, 01:54
Originally posted by RandyJC
hmmm :) nahjah ik w8 wel ff met deze script. krijg van de week de boek van php. ga ik het daar nog wel ff uit leren en hoe alles werkt misschien heb ik over een paar jaar wel een geavanceerde image upload geval.. dat was de bedoeling eigenlijk altijd al geweest waar mensen dan hun eigen foto's terug kunnen zien.
mja, leer de basis goed onder de knie te krijgen en leer vooral te werken met www.php.net/functienaam want dat heerscht gewoon :D
happy php'ing 8)

Pakspul
10 January 2004, 18:10
werkend:

<html>
<head>
<title>Nieuwe pagina 1</title>
</head>
<body>
<?
if ( isset($_POST['submit']) && !empty($_POST['submit']) )
{
// hier de html voor het formulier
?>

<form name=fileform method=post enctype='multipart/form-data'>
<input type='file' name='userfile'>
<input type="submit" value="Verzenden" name="submit"></p>
</form>
<?
}
else
{
$upload_mode = (@ini_get('open_basedir') || @ini_get('safe_mode')) ? 'move' : 'copy';

$source_filename = $_FILES['userfile']['tmp_name'];

$destination_filename = "./". $_FILES['userfile']['name'];

switch ($upload_mode)
{
case 'copy':
if ( !copy($source_filename, $destination_filename) )
{
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}
@chmod('./' . $source_filename, 0666);
break;

case 'move':
if ( !@move_uploaded_file($source_filename, $destination_filename) )
{
if ( !@copy($source_file, $destination_filename) )
{
echo "er gaat toch iets mis.<br>". __LINE__;

exit;
}
}

@chmod($config['upload_dir'] . '/' . $destination_filename, 0666);
break;
}

echo "Pakspul heerscht";
exit;
}



?>
</body>
</html>

voor het aanpassen van de directory moet je regel 24 aanpassen ($destination_filename = "./". $_FILES['userfile']['name']; )

:) geen dank doe maar admin rechten 8-)

Pakspul
10 January 2004, 18:19
je hebt trouwens geluk randy, ik ben nu zelf ook daarmee bezig :p

mijne is alleen voor een forum en zit iets moeilijker in elkaar :+

hij is verbonden met database en vanaf daar kun je extensies toevoegen grootte bepalen en hij sorteert alles meteen in mappen :p

RandyJC
10 January 2004, 18:23
Originally posted by Pakspul
je hebt trouwens geluk randy, ik ben nu zelf ook daarmee bezig :p

mijne is alleen voor een forum en zit iets moeilijker in elkaar :+

hij is verbonden met database en vanaf daar kun je extensies toevoegen grootte bepalen en hij sorteert alles meteen in mappen :p

dat is veel leuker! :P

maar ik krijg trouwens nog steeds fout :o heb niks veranderd alleen maar die path


$destination_filename = "var/www/html/". $_FILES['userfile']['name'];


ps...
nog bedankt :)

Pakspul
10 January 2004, 18:41
Originally posted by RandyJC
dat is veel leuker! :P

maar ik krijg trouwens nog steeds fout :o heb niks veranderd alleen maar die path


$destination_filename = "var/www/html/". $_FILES['userfile']['name'];


ps...
nog bedankt :)
verander het path eens niet en kijk eens of die het dan wel doet