[php] file uploaden

Pagina: 1
Acties:
  • 43 views sinds 30-01-2008

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01-2025
Het moet zo makkelijk zijn, maar het wil kij niet lukken: een file uploaden via php.
Ik heb op mijn pc apche2triad geinstalleerd, nu probeer ik met deze form een file te uploaden:

PHP:
1
2
3
4
<form name="form1" method="post" action="detinv.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="userfile" type="file" /></td>
</form>


dit moet daarna door het volgende stuk code (in de zelfde pagina) geprocessed worden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($userfile)){
 
$uploadDir = '/htdocs';
$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 "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);
}
print "</pre>";}


helaas krijg ik alleen maar de melding "Possible file upload attack!" er uit
iemand enig idee wat ik fout doe?

  • Noork
  • Registratie: Juni 2001
  • Niet online
Waar krijg je die foutmelding? Is het geen firewall o.i.d.?

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01-2025
nee, ik heb geen firewall aan staan (niet op mijn pc iig)
ik bekijk de pagina op de zelfde pc als waar apache op draaid

  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 07-05 09:53
Wat staat er in gesteld in je php.ini?

Meestal staat die rond de 2 tot 8 MB ingesteld als max filesize.
Even je php.ini opzoeken en daar instellen:
code:
1
upload_max_filesize = 30M

Veel succes

  • Noork
  • Registratie: Juni 2001
  • Niet online
Maar in welk programma/scherm krijg je die melding? In je internet browser? Een popop? Wat is het voor iets? Screenshots?

Ik denk dat je trouwens beter op het forum van apache2triad kan zijn. (Als ze dat hebben dan)

[edit]
Aha ik heb je code even bekeken, en je krijgt het dus in je browser. Probeer gewoon eens een ander file upload code. Dan ben je er vanaf.

Probeer deze:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$path = "./";
$max_size = 100000000;

if (!isset($HTTP_POST_FILES['userfile'])) exit;
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
if (file_exists($path . $HTTP_POST_FILES['userfile']['name'])) { echo "The file already exists<br>\n"; exit; }
$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
if (!$res) { echo "upload failed!<br>\n"; exit; } else { echo "upload sucessful<br>\n"; }
echo "File Name: ".$HTTP_POST_FILES['userfile']['name']."<br>\n";
echo "File Size: ".$HTTP_POST_FILES['userfile']['size']." bytes<br>\n";
}?>

[ Voor 73% gewijzigd door Noork op 28-05-2005 11:30 ]


  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01-2025
de exacte foutmelding is :

Possible file upload attack!
Here's some debugging info:
Array
(
)

geen popup, gewoon plain text.
Hij komt dus kennelijk terecht in de "else"

  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 04-10-2025
Moet er geen enctype in je form?
PHP:
1
2
3
4
5
6
<?
<form name="form1" method="post" action="detinv.php" enctype="multipart/mixed">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="userfile" type="file" /></td>
</form>
?>

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01-2025
hmm... de fout lijkt toch ergens anders te zitten.
met het script van noork komt hij niet voorbij de regel "if (!isset($HTTP_POST_FILES['userfile'])) exit;"
kennelijk wordt die variable niet gezet.

  • Noork
  • Registratie: Juni 2001
  • Niet online
Probeer ook de enctype van SH4D3H of deze : ENCTYPE="multipart/form-data"

Verwijderd

Zet in ieder geval de enctype erin:

code:
1
<form name="form1" method="post" action="detinv.php" enctype="multipart/form-data">



PHP:
1
2
3
4
5
foreach($_POST as $key=>$value) {

  echo $key.": ".$value."<br />";

}


en vertel ons wat eruit komt

[ Voor 48% gewijzigd door Verwijderd op 28-05-2005 11:57 ]


  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01-2025
het werkt inmiddels!
na het veranderen van de encryptie is "multipart/form-data" werkte het :D
iedereen erg bedankt voor de hulp, ik heb weer wat bijgeleerd :) en ik kan verder aan de slag.

  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

Niet lullig bedoelt hoor maar dit had je letterlijk in de P&W FAQ - PHP] terug kunnen vinden.

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 08:34

ripexx

bibs

Verwijderd schreef op zaterdag 28 mei 2005 @ 11:56:
Zet in ieder geval de enctype erin:

code:
1
<form name="form1" method="post" action="detinv.php" enctype="multipart/form-data">



PHP:
1
2
3
4
5
foreach($_POST as $key=>$value) {

  echo $key.": ".$value."<br />";

}


en vertel ons wat eruit komt
Ach PHP heeft daar een hele mooie functie voor: print_r

Daarnaast is er gewoon een goed werkend voorbeeld op php.net te vinden: http://nl2.php.net/manual/nl/features.file-upload.php Staat in alle manuals van PHP.

buit is binnen sukkel


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

AtlonXP1800 schreef op zaterdag 28 mei 2005 @ 12:05:
het werkt inmiddels!
na het veranderen van de encryptie is "multipart/form-data" werkte het :D
iedereen erg bedankt voor de hulp, ik heb weer wat bijgeleerd :) en ik kan verder aan de slag.
Enc staat in dit geval voor encoding, niet voor encryptie. ;)

En aangezien dit inderdaad letterlijk in de FAQ te vinden is, doe ik dit topic maar dicht. :)

Ik zie trouwens in dit topic een paar keer de $HTTP_POST_FILES-global voorbij komen. Dat is redelijk uit de tijd, gebruik liever de superglobal: $_FILES. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 08:29

Kees

Serveradmin / BOFH / DoC
doe is in plaats van print, echo ;)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Kees schreef op zaterdag 28 mei 2005 @ 20:26:
doe is in plaats van print, echo ;)
Waarom? Het lost zijn probleem verder niet op, het is alleen meestal sneller. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.