[PHP] Upload script voor afbeeldingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
ik heb het volgende script samen gesteld aan de hand van functies op php.net:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if($_POST['upload'] != ""){
   if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
       copy($_FILES['userfile']['tmp_name'], "/pics/");
   } else {
       echo "Mogelijke aanval gespot: " . $_FILES['userfile']['name'];
   }
   /* ...of... */
   move_uploaded_file($_FILES['userfile']['tmp_name'], "/pics/");
   
}else{
?> 
<form enctype="multipart/form-data" method="post">
 <input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
 Upload dit bestand: <input name="userfile" type="file">
 <input type="submit" name="upload" value="Upload!">
 </form>
 <?
 }
 ?>


maar hij doet het niet , de map pics heeft CHMOD 777
nu als hij tog zou werken hoe kan ik dan de naam of url van het plaatje opslaan in men database ?

Whenever you find yourself on the side of the majority, it is time to pause and reflect


Acties:
  • 0 Henk 'm!

Verwijderd

Bij je copy() functie aanroep kopier je een bestand naar een map, hier moet je de naam van het bestand nog in opgeven.

Dus ipv "/pics/" doe je "/pics/Naamvanbestand.jpg".

[ Voor 9% gewijzigd door Verwijderd op 18-01-2005 19:19 ]


Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
ik heb het gestest met
"/pics/blaat.jpg"
&
"/pics/".$_FILES['userfile']['name']

maar geen van beide werkte :s of doe ik het fout?

Whenever you find yourself on the side of the majority, it is time to pause and reflect


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
als je eens doet

<?PHP
IF($_SERVER['REQUEST_METHOD'] == 'POST'){
PRINT_R($_FILES);
}
?>
wat krijg je dan terug? is je file uberhaupt wel aangekomen?

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
yup denk het wel hij geef:

Array ( [userfile] => Array ( [name] => 11.jpg [type] => image/jpeg [tmp_name] => /var/tmp/phpYsfrei [error] => 0 [size] => 26630 ) )

Whenever you find yourself on the side of the majority, it is time to pause and reflect


Acties:
  • 0 Henk 'm!

Verwijderd

Het is sowiesow ook even slim om af te vangen wat de gene aan het uploaden.
Lees: .jpg / ,gif / .png ofzo ;)

Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
mjah het is men eerste upload scriptje en ik zou graag hebben datie eerst al de afbeeldingen erop krijgt voordat ik het verder uitbreidt :-)

Whenever you find yourself on the side of the majority, it is time to pause and reflect


Acties:
  • 0 Henk 'm!

Verwijderd

Is het een Windows of een *Nix machine?

Een slash voor de bestandsnaam in *Nix betekent namelijk de basismap.
Haal die slash voor "pics/..." eens weg of vul het complete mappad in waar het bestand heen gekopieerd moet worden.

Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

iKKe007 schreef op dinsdag 18 januari 2005 @ 19:36:
wat krijg je dan terug? is je file uberhaupt wel aangekomen?
In dat geval zou volgens dit script waarschijnlijk de melding "Mogelijke aanval gespot: " moeten worden geprint. ;)

Zet eerst eens aan het begin van je script:
PHP:
1
error_reporting ( E_ALL );

Dan kun je in ieder geval de fouten bekijken die er zouden moeten ontstaan bij de uitvoering van het script.

Waarschijnlijk ontstaan er een stel fouten doordat je dat bestand wilt schrijven naar /pics/. Dat is onjuist namelijk. Ik denk dat je die functies verkeerd opvat.
Het is niet: copy ( dit bestand, -naar- deze dir ). Het is:
copy ( string source, string dest ) volgens de manual.

$_FILES['userfile']['tmp_name'] bevat de *complete* bestandslocatie van de tijdelijke (zojuist ge-uploade file. Meestal zoiets als "/var/tmp/onzinnaampje". Wat je dus bij het uitvoeren van die functies niet kunt zeggen, is: ik wil bestand /var/tmp/onzinnaampje naar /pics/ verplaatsen... Pics is namelijk een directory door die slash erachter... je moet een volledig pad en save-to-name opgeven.

Wat je dus bijvoorbeeld moet doen is het volgende:
PHP:
1
copy($_FILES['userfile']['tmp_name'], "/home/username/public_html/pics/destinationname.jpg");


Waarbij het tweede argument in de functie dus een string is met het volledige pad naar de plek waar je de file heen wilt schrijven. Hier is dat als voorbeeld "destinationname.jpg" in de directory /home/username/public_html/pics/. Géén relatief pad opgeven dus! :)

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
owkey dit is dus wat ik nu heb:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
error_reporting ( E_ALL );
?>
<?php
if($_POST['upload'] != ""){
   // Voor PHP 4.1.0 moet $HTTP_POST_FILES gebruikt worden in plaats van $_FILES.
   if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
       copy($_FILES['userfile']['tmp_name'], "www.entity-project.be/world/pics/".$_FILES['userfile']['name']);
   } else {
       echo "Mogelijke aanval gespot: " . $_FILES['userfile']['name'];
   }
   /* ...of... */
   move_uploaded_file($_FILES['userfile']['tmp_name'], "www.entity-project.be/world/pics/".$_FILES['userfile']['name']);
}else{
?> 
<form enctype="multipart/form-data" method="post">
 <input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
 Upload dit bestand: <input name="userfile" type="file">
 <input type="submit" name="upload" value="Upload!">
 </form>
 <?
 }
 ?>


boven het form zegt geeft hij:
Notice: Undefined index: upload in /users/kp806394/www.entity-project.be/world/test.php on line 5

als ik tog upload zegt hij :

Warning: copy(www.entity-project.be/world/pics/11.jpg): failed to open stream: No such file or directory in /users/kp806394/www.entity-project.be/world/test.php on line 8

Warning: move_uploaded_file(www.entity-project.be/world/pics/11.jpg): failed to open stream: No such file or directory in /users/kp806394/www.entity-project.be/world/test.php on line 13

Warning: move_uploaded_file(): Unable to move '/var/tmp/phpvWml93' to 'www.entity-project.be/world/pics/11.jpg' in /users/kp806394/www.entity-project.be/world/test.php on line 13

Whenever you find yourself on the side of the majority, it is time to pause and reflect


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
tmob gokt dat:
PHP:
1
'/users/kp806394/www.entity-project.be/world/pics/' .$_FILES['userfile']['name']

de correcte lokatie moet zijn.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 18-09 13:41

Mythix

www.ctrl-f5.net

Topicstarter
blijk dat het een goeie gok was :D

het werkt eindelijk :) ty 4 all ur help

Whenever you find yourself on the side of the majority, it is time to pause and reflect

Pagina: 1