Toon posts:

Image wordt direct in de root-folder geupload

Pagina: 1
Acties:

Vraag


  • RobEindhoven
  • Registratie: Augustus 2018
  • Laatst online: 14-02-2021
Ik heb een vraagje,

Momenteel heb ik een Html form waar een gebruiker meerdere foto's kan uploaden. Deze foto's worden via PHP geresized. Hierna wordt hij via move_uploaded_file verplaats naar de folder (images/). Maar hier gaat er iets mis.....want hij upload de foto's naar mijn root folder? Is er iemand die mij kan helpen bij de probleem?

Hier is mijn upload code:

$query = "SELECT id FROM ncr_input ORDER BY id DESC LIMIT 1";
$result = mysqli_query($conn, $query);

$row = mysqli_fetch_row($result);

$ncrnummer = $row[0];

for ($i = 0; $i < count($_FILES['attachments']['name']); $i++) {
$sourcefile = $_FILES['attachments']['tmp_name'][$i];
$endfile = $_FILES['attachments']['name'][$i];
$type = $_FILES['attachments']['type'][$i];
$filepath = "images/" . $endfile;

ResizePicture($sourcefile, $max_width = 500, $max_height = 500, $endfile, $type);

if (move_uploaded_file($endfile, $filepath)) {
$querypictureupload = "INSERT INTO file_upload(ncrnummer,filename) VALUES ('$ncrnummer','$endfile')";
$result = mysqli_query($conn, $querypictureupload);
}
else {
echo "Error";
}
}

Hier de code van mijn ResizePicture:

<?php

function ResizePicture($sourcefile,$max_width, $max_height, $endfile, $type){

switch($type){
case'image/png':
$img = imagecreatefrompng($sourcefile);
break;
case'image/jpeg':
$img = imagecreatefromjpeg($sourcefile);
break;
case'image/gif':
$img = imagecreatefromgif($sourcefile);
break;
default :
return 'Un supported format';
}

$width = imagesx( $img );
$height = imagesy( $img );

if ($width > $height) {
if($width < $max_width) {
$newwidth = $width;
}
else {
$newwidth = $max_width;

$divisor = $width / $newwidth;
$newheight = floor($height / $divisor);
}
}
else {

if($height < $max_height) {
$newheight = $height;
}
else {
$newheight = $max_height;

$divisor = $height / $newheight;
$newwidth = floor($width / $divisor);
}
}

$tmpimg = imagecreatetruecolor( $newwidth, $newheight );

imagealphablending($tmpimg, false);
imagesavealpha($tmpimg, true);

imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

switch($type){
case'image/png':
imagepng($tmpimg, $endfile, 0);
break;
case'image/jpeg':
imagejpeg($tmpimg, $endfile, 100);
break;
case'image/gif':
imagegif($tmpimg, $endfile, 0);
break;
}

imagedestroy($tmpimg);
imagedestroy($img);
}
?>

Extra vraagje: Hoe krijg ik mijn code een beetje fatsoenlijk, Zodat jullie het ook kunnen lezen :P

Op internet heb ik gezocht naar oplossingen,

Dit heb ik al geprobeerd:

is_writable($filepath) Hier komt uit dat deze gewoon bereikbaar is!

Alle reacties


  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:03

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

RobEindhoven schreef op dinsdag 30 oktober 2018 @ 10:02:
Extra vraagje: Hoe krijg ik mijn code een beetje fatsoenlijk, Zodat jullie het ook kunnen lezen :P
Code tags gebruiken.

Als je eens begint met debuggen: Debuggen: Hoe doe ik dat? en ons dan vertelt wat daar uit komt. Verder mag je je post beperken tot relevante(!) code; ergens waar iets met de file gedaan wordt ofzo dus; het daadwerkelijke resizen en andere fluff is niet relevant.

[Voor 14% gewijzigd door RobIII op 30-10-2018 10:07]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Gelukkig is de code te exploiten en zijn website over te nemen en te gebruiken in een botnet of voor ransom.

Vink aan wat van toepassing is:
[ ] Ongeschikt.... stop met wat je doet als je het op het internet wil slingeren.
[ ] Geschikt... ga door als je het alleen op je PC gebruikt als proef projectje.

Ik ga niet detail hier, het internet staat al bomvol genoeg met uitleg en waarschuwingen.

Maak je niet druk, dat doet de compressor maar


  • RobEindhoven
  • Registratie: Augustus 2018
  • Laatst online: 14-02-2021
Goed bezig DJMaze,

Ja het is niet beveiligd tegen MySQL injectie.....Maar dat is ook niet echt nodig omdat het lokaal op een server draait! Dus prima geschikt! En het probleem met de root folder heb ik ook opgelost.....ik heb een Temp folder aangemaakt waar de foto's in geüpload worden. Daarna worden deze verkleind en terugzet in een nieuwe map. En wordt de temp folder leeg gemaakt.......Probleem opgelost!!!!!!

Maar helaas behandelen ze SQL Injectie pas in leerjaar 3 op het MBO omdat ze dit vreemd genoeg niet als belangrijk onderwerp zien.....eveneens als alle andere beveiligings-technieken. Zelf zal ik er nog wel een keertje induiken...

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 01:49

AW_Bos

Liefhebber van nostalgie... 🕰️

Of doe niet moeilijk, en gebruik de uploadclass van Verot.net. :p

Verder dien je zeker wel beveiliging tegen SQL-Injectie in te bouwen. Het beschermt je query tegen corrupte en malafide SQL-opdrachten. Vul eens 's-Hertogenbosch in. En bam... Je query gaat onderuit.

Wat foutafhandeling op je mysqli_query kan ook geen kwaad.

[Voor 10% gewijzigd door AW_Bos op 31-10-2018 11:42]

☀️ Goedemorgen zonneschijn! ☀️
☀️Ja, je maakt me zo gelukkig, en door jou voel ik me fijn! ☀️


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
RobEindhoven schreef op woensdag 31 oktober 2018 @ 11:37:
Ja het is niet beveiligd tegen MySQL injectie.....
Daar had ik het (nog) niet eens over.
Upload eens een "exploit.php" bestand met je script... ;)

Maak je niet druk, dat doet de compressor maar


  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:51

Standeman

Moderator Wonen & Mobiliteit

Prutser 1e klasse

RobEindhoven schreef op woensdag 31 oktober 2018 @ 11:37:
...

Maar helaas behandelen ze SQL Injectie pas in leerjaar 3 op het MBO omdat ze dit vreemd genoeg niet als belangrijk onderwerp zien.....eveneens als alle andere beveiligings-technieken. Zelf zal ik er nog wel een keertje induiken...
Dit zou juist een van de eerste lessen moeten zijn! :X

Ter vermaak:

The ships hung in the sky in much the same way that bricks don’t.

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee