Toon posts:

[PHP] Uploaden bestand werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Ik gebruik onderstaand stukje php om onder ander een PDF te uploaden naar de map 'bijlagen' Op het moment dat ik dit een file probeer toe te voegen dan doet gaat deze wel uploaden (duurt eventjes) alleen wordt deze niet in de map /bijlagen geplaatst. DIR is writeable uiteraard en de PATH is ook goed. Doe ik toch iets verkeerd? of wat zou het kunnen zijn....

PHP:
1
2
3
4
5
6
7
if($actie == "toevoegen") {
if (is_uploaded_file($_FILES['bijlage']['tmp_name'])) {
        move_uploaded_file($_FILES['bijlage']['tmp_name'], "/var/www/vhost/httpdocs/bijlagen/".$_FILES['bijlage']['name']);
    }
$SQL_statement = "INSERT INTO vacatures SET titel='".$titel."', omschrijving='".$omschrijving."', bijlage='".$_FILES['bijlage']['name']."'  ";
$resultset = mysql_query($SQL_statement);   
$message = "De vacature is succesvol toegevoegd";


Alvast bedankt voor de genomen moeite om dit te lezen en/of eventueel te reageren.

Acties:
  • 0 Henk 'm!

  • kalizec
  • Registratie: September 2000
  • Laatst online: 17-07 01:45
Kan het zijn dat de geuploade bestanden groter zijn dan in Apache en/of PHP toegestaan is?

Core i5-3570K/ASRock Z75 Pro3/Gigabyte Radeon HD7850/Corsair XMS3 2x4GB/OCZ Vertex2 64GB/3x640GB WD Black/24" B2403WS Iiyama x2/Nec 7200S


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
1. Zorg dat je MySQL injection niet meer mogelijk is! Als je niet weet wat dit is moet je je heel rap gaan inlezen.
2. Gebruik code=php tags. Dit maakt het voor iedereen duidelijk.

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kalizec schreef op zaterdag 17 januari 2009 @ 22:54:
Kan het zijn dat de geuploade bestanden groter zijn dan in Apache en/of PHP toegestaan is?
Ik heb juist een klein bestandje geprobeerd. LIMIT staat op 2048 dus dat moet wel lukken voor een tekt pdfje

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Volgens mij moet de destination folder bij move_uploaded_file relatief zijn aan je webroot. Dus zonder /var/www etc. ;)

edit:
Om het even te verduidelijken:
Note: move_uploaded_file() is both safe mode and open_basedir aware. However, restrictions are placed only on the destination path as to allow the moving of uploaded files in which filename may conflict with such restrictions. move_uploaded_file() ensures the safety of this operation by allowing only those files uploaded through PHP to be moved.
gertvdijk schreef op zaterdag 17 januari 2009 @ 22:55:
1. Zorg dat je MySQL injection niet meer mogelijk is! Als je niet weet wat dit is moet je je heel rap gaan inlezen.
2. Gebruik code=php tags. Dit maakt het voor iedereen duidelijk.
Als je dergelijke offtopic opmerkingen wil maken, kan dat dan iets vriendelijker? :)

[ Voor 38% gewijzigd door NMe op 17-01-2009 23:07 ]

'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.


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
Verwijderd schreef op zaterdag 17 januari 2009 @ 22:57:
Ik heb juist een klein bestandje geprobeerd. LIMIT staat op 2048 dus dat moet wel lukken voor een tekt pdfje
Welke limit? En welke eenheid is die 2048? bytes, kB, MB?

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Verwijderd schreef op zaterdag 17 januari 2009 @ 22:57:
[...]


Ik heb juist een klein bestandje geprobeerd. LIMIT staat op 2048 dus dat moet wel lukken voor een tekt pdfje
debuggen! begin eens met een:

PHP:
1
2
3
if($actie == "toevoegen") {
    print_r($_FILES);
}

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gertvdijk schreef op zaterdag 17 januari 2009 @ 22:55:
1. Zorg dat je MySQL injection niet meer mogelijk is! Als je niet weet wat dit is moet je je heel rap gaan inlezen.
2. Gebruik code=php tags. Dit maakt het voor iedereen duidelijk.
1. ik weet wat het is, tis maar voor heel simpel gebruik en verwacht geen kwade bedoelingen.
2. Ga we even regelen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gertvdijk schreef op zaterdag 17 januari 2009 @ 22:59:
[...]

Welke limit? En welke eenheid is die 2048? bytes, kB, MB?
2 mb limiet meegegeven aan het uploaden van de bestandsgrote

Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 21-09 17:54

scorpie

Supra Addict

Heeft je form wel de goede enctype ?

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

  • kalizec
  • Registratie: September 2000
  • Laatst online: 17-07 01:45
Verwijderd schreef op zaterdag 17 januari 2009 @ 23:01:
[...]


2 mb limiet meegegeven aan het uploaden van de bestandsgrote
In PHP of in Apache? Je kunt in beide de limiet instellen en het is de laagste die telt.

PS. Kijk ook even naar de reactie van NMe.

[ Voor 7% gewijzigd door kalizec op 17-01-2009 23:05 ]

Core i5-3570K/ASRock Z75 Pro3/Gigabyte Radeon HD7850/Corsair XMS3 2x4GB/OCZ Vertex2 64GB/3x640GB WD Black/24" B2403WS Iiyama x2/Nec 7200S


Acties:
  • 0 Henk 'm!

  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 20:20

BramT

Rule #1

iH8 schreef op zaterdag 17 januari 2009 @ 22:59:
[...]


debuggen! begin eens met een:

PHP:
1
2
3
if($actie == "toevoegen") {
    print_r($_FILES);
}
What he said... Die gaat je waarschijnlijk een hoop vertellen.

You are the all-dancing, all-singing crap of the world - Jack


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe schreef op zaterdag 17 januari 2009 @ 22:58:
Volgens mij moet de destination folder bij move_uploaded_file relatief zijn aan je webroot. Dus zonder /var/www etc. ;)

[...]

Als je dergelijke offtopic opmerkingen wil maken, kan dat dan iets vriendelijker? :)
Ik zal dat even nu gaan proberen!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ah, trouwens: Waar hoort mijn topic?

WEB>>PRG

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
scorpie schreef op zaterdag 17 januari 2009 @ 23:03:
Heeft je form wel de goede enctype ?
multipart/form-data, dat moet goed zijn volgens mij!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
iH8 schreef op zaterdag 17 januari 2009 @ 22:59:
[...]


debuggen! begin eens met een:

PHP:
1
2
3
if($actie == "toevoegen") {
    print_r($_FILES);
}
Dat heb ik nu net gedaan: Resultaat is

Array ( [bijlage] => Array ( [name] => vacature1.pdf [type] => application/pdf [tmp_name] => /tmp/phpHfuM4U [error] => 0 [size] => 399158 ) )

Maar wat gaat hier nu mis dan, zie het even niet meer.....

Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
Verwijderd schreef op zaterdag 17 januari 2009 @ 23:25:
Dat heb ik nu net gedaan: Resultaat is

Array ( [bijlage] => Array ( [name] => vacature1.pdf [type] => application/pdf [tmp_name] => /tmp/phpHfuM4U [error] => 0 [size] => 399158 ) )

Maar wat gaat hier nu mis dan, zie het even niet meer.....
Ziet er goed uit. Nu uitzoeken waarom het bestand dat tijdelijk in /tmp/phpHfuM4U staat niet naar /var/w... kan worden verplaatst. Je zei zelf dat hij schrijfbaar is, maar heb je rekening gehouden met het feit dat de webserver onder een andere user draait dan jezelf?

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 21-09 17:54

scorpie

Supra Addict

De file komt dus blijkbaar goed aan alleen je verplaatst hem niet goed vanuit je tmp directory naar een andere directory denk ik.

BTW die move command heeft toch ook een return value die je uit kunt lezen?

[ Voor 23% gewijzigd door scorpie op 17-01-2009 23:29 ]

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Verwijderd schreef op zaterdag 17 januari 2009 @ 23:25:
[...]


Dat heb ik nu net gedaan: Resultaat is

Array ( [bijlage] => Array ( [name] => vacature1.pdf [type] => application/pdf [tmp_name] => /tmp/phpHfuM4U [error] => 0 [size] => 399158 ) )

Maar wat gaat hier nu mis dan, zie het even niet meer.....
dan gaat er iets mis bij het verplaatsten. zet dit is bovenaan in je code:

PHP:
1
2
3
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1 );
ini_set( 'display_startup_errors', 1 );

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
scorpie schreef op zaterdag 17 januari 2009 @ 23:28:
BTW die move command heeft toch ook een return value die je uit kunt lezen?
PHP functie move_uploaded_file:
bool move_uploaded_file ( string $filename , string $destination )
[...]
If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return FALSE. Additionally, a warning will be issued.
Uit een boolean return value haal je niet zoveel, behalve wat je al weet: het gaat mis. Blijkbaar gooit ie alle debug info in E_WARNING.

[ Voor 28% gewijzigd door gertvdijk op 17-01-2009 23:37 ]

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 21-09 17:54

scorpie

Supra Addict

uuh.. ja? Dat zei ik toch ook?

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

scorpie schreef op zaterdag 17 januari 2009 @ 23:28:

BTW die move command heeft toch ook een return value die je uit kunt lezen?
precies, die returned gewoon true als 't gelukt is.

PHP:
1
2
3
4
5
if(move_uploaded_file(...)){
    echo 'yeah';
} else {
    echo 'nope';
}



edit: late!

[ Voor 33% gewijzigd door iH8 op 17-01-2009 23:38 . Reden: late ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
iH8 schreef op zaterdag 17 januari 2009 @ 23:32:
[...]


dan gaat er iets mis bij het verplaatsten. zet dit is bovenaan in je code:

PHP:
1
2
3
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1 );
ini_set( 'display_startup_errors', 1 );
HEE Fantastisch! Dit werkt, Ik weet niet wat het precies doet maar het werkt wel! Super! Dank je!

Nu heb ik weer weggehaald en het werkt nog steeds ??

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

iH8 schreef op zaterdag 17 januari 2009 @ 22:59:
debuggen! begin eens met een:

PHP:
1
2
3
if($actie == "toevoegen") {
    print_r($_FILES);
}
Doe dan gewoon
PHP:
1
2
3
4
5
6
7
8
9
10
if($_FILES)
{
    echo '<pre>';
    print_r($_FILES);
    echo '</pre>';
}
else
{
    echo 'No files! :(';
}
In jouw code maak je $_FILES afhankelijk van een variabele die moet bestaan en een waarde "toevoegen" moet hebben. Terwijl je juist wil weten of er überhaupt files gepost worden. ;)

[ Voor 20% gewijzigd door CH4OS op 17-01-2009 23:40 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
Verwijderd schreef op zaterdag 17 januari 2009 @ 23:38:
HEE Fantastisch! Dit werkt, Ik weet niet wat het precies doet maar het werkt wel! Super! Dank je!

Nu heb ik weer weggehaald en het werkt nog steeds ??
Dat had geen enkel effect op de werking van de rest van je script. Zoals je zelf al aangeeft werkt het ook als je het weer weghaalt. Blijkbaar gewoon zelf iets niet goed gedaan met testen?

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Verwijderd schreef op zaterdag 17 januari 2009 @ 23:38:
[...]


HEE Fantastisch! Dit werkt, Ik weet niet wat het precies doet maar het werkt wel! Super! Dank je!

Nu heb ik weer weggehaald en het werkt nog steeds ??
lol, dat zorgt er alleen voor dat je errors ook daadwerkelijk te zien krijgt. als je code nu wel werkt ligt het iig daar niet aan.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 21-09 17:54

scorpie

Supra Addict

Verwijderd schreef op zaterdag 17 januari 2009 @ 23:38:
[...]


HEE Fantastisch! Dit werkt, Ik weet niet wat het precies doet maar het werkt wel! Super! Dank je!

Nu heb ik weer weggehaald en het werkt nog steeds ??
Het zet wat config waarden om in de php config file.
Maar in het vervolg kan ik je aanraden dat je eerst opzoekt wat iets doet alvorens het uit te voeren, je weet nooit wat het met je systeem doet. Nu zijn we hier op GoT wel goedgezind met elkaar, maar je kan maar beter iets meer paranoïder zijn...

Anyway @gertvdijk: Er staat ook bij dat een warning geraised wordt waar je wat mee kan. Nergens had TS gezegd dat hij zeker wist dat die command niet (goed) uitgevoerd werd, dus kon je met een check op de returnvalue van die move_uploaded_file gewoon wel wat verder komen. Maargoed, het was ook een retorische vraag dus..

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

scorpie schreef op zaterdag 17 januari 2009 @ 23:43:
Het zet wat config waarden om in de php config file.
AFAIK doet ini_set alleen tijdens het draaien van dat specifieke script en zet het daarna weer terug:
Sets the value of the given configuration option. The configuration option will keep this new value during the script's execution, and will be restored at the script's ending.
Het is misschien een mierenneukertje en ik ga er van uit dat je dat ook bedoeld, alleen op de manier waarop je het schreef dacht ik in eerste instantie wat anders, vandaar. ;)

[ Voor 24% gewijzigd door CH4OS op 18-01-2009 00:51 ]

Pagina: 1