Archief - Problemen beveiliging uploadscript

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

j design

Legacy Member
Hallo

Ik heb een probleem met mijn uploadscript.
Onderaan heb ik het originele script gezet zonder beveiliging, dat werkt.

Het is de bedoeling dat:
1) een afbeelding upgeload wordt
2) de naam, datum en bestandnaam in de array gezet worden.

Ik ben nieuw in php alsook in html en css eigelijk, dus ik denk dat dit script vrij amaturistisch is.
Na heel veel tutorials en nog meer proberen denk ik dat dit de beste oplossing is aangezien er 2 opdrachten moeten voldaan worden.

Als er iemand een beter idee heeft, ook goed.
Ik zou wel graag de array behouden, zo kan ik alles weer eenvoudig weergeven.

Code:
<?php

$ok=1;
$fp = fopen('../txt/add.txt','a');

if (
(($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
{
$target_path = "uploadmap/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
$ok=0;
}
if($ok==0)
{
$line = $_POST["naam"] . "|" . date("d-m-Y");
$line .= "|" . basename($_FILES['uploadedfile']['name']);
$line = str_replace("\r\n","<br />",$line);
$line .= "\r\n";
fwrite($fp, $line);
 if(!fclose($fp)) {
		echo "Error closing file!";
		exit;
        }
}

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "Bestand ".  basename( $_FILES['uploadedfile']['name']). 
    " is upgeload";
} 
else{ echo "Fout!"; }


?>

Het originele zonder beveiliging:
Code:
<?php

$fp = fopen('../txt/add.txt','a');

$target_path = "uploadmap/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "Bestand ".  basename( $_FILES['uploadedfile']['name']). 
    " is upgeload";
} 
else{ echo "Fout!"; }



$line = $_POST["naam"] . "|" . date("d-m-Y");
$line .= "|" . basename($_FILES['uploadedfile']['name']);
$line = str_replace("\r\n","<BR>",$line);
$line .= "\r\n";
fwrite($fp, $line);
 if(!fclose($fp)) {
		echo "Error closing file!";
		exit;
        }


?>


Nog een klein verzoekje.
Als ik iets toevoeg wordt er in mijn txt bestand tussen 2 lijnen code een enter gegeven.
Ik zou op lijn 1: geg+afb1, lijn 2: geg+afb2 willen ipv
lijn 1: geg+afb1, lijn 2: , lijn 3: geg+afb2
Ligt dit aan:
Code:
$line .= "\r\n";

Alvast bedankt

Mvg J

Tyfius

Legacy Member
Ja, dat ligt aan die \r\n. \r = return carriage en \n = newline.

Daarnaast denk ik dat je een fout hebt. Zelfs als $ok == 0 upload je je file toch, want je sluit die if ($ok == 0) vlak voor je if (move_uploaded_file(...

j design

Legacy Member
Heb het geprobeert door:

Code:
<?php

$ok=1;
$fp = fopen('../txt/add.txt','a');

if (
(($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
{
$target_path = "uploadmap/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "Bestand ".  basename( $_FILES['uploadedfile']['name']). 
    " is upgeload";
} 
else{ echo "Fout!"; }

$ok=0;
}
if($ok==0)
{
$line = $_POST["naam"] . "|" . date("d-m-Y");
$line .= "|" . basename($_FILES['uploadedfile']['name']);
$line = str_replace("\r\n","<br />",$line);
$line .= "\r\n";
fwrite($fp, $line);
 if(!fclose($fp)) {
		echo "Error closing file!";
		exit;
        }
}



?>

Ik kan je pm de site doorsturen alsook de bestanden.
Dit kan niet naar iedereen want dan loop ik een groot risico

Op deze moment wordt niets upgeload, niet de tekst en niet de afbeelding

edit: ik heb het ook al in de 2e if gezet
misschien kan ik niet op de extensie testen omdat ik teks ook meestuur?

Tyfius

Legacy Member
Je bent volgens mij de compleet verkeerde weg aan het opgaan. Ik heb onderstaande code niet getest, maar volgens mij is het waar je naartoe wil.
PHP:
<?php
$ok = 1;
$fp = fopen('../txt/add.txt','a');

if (
    (   ($_FILES["file"]["type"] == "image/gif"  )
     || ($_FILES["file"]["type"] == "image/png"  )
     || ($_FILES["file"]["type"] == "image/jpg"  )
     || ($_FILES["file"]["type"] == "image/jpeg" )
     || ($_FILES["file"]["type"] == "image/pjpeg")
    )
    && ($_FILES["file"]["size"] < 2000000)) {
  $target_path = "uploadmap/";
  $target_path = $target_path . basename($_FILES['uploadedfile']['name']); 
  $ok = 0;
} 

if ($ok == 0) {
  $line  = $_POST["naam"] ."|". date("d-m-Y");
  $line .= "|" . basename($_FILES['uploadedfile']['name']);
  $line  = str_replace("\r\n", "<br />", $line);
  $line .= "\r\n";
  fwrite($fp, $line);

  if (!fclose($fp)) {
    echo "Error closing file!";
    exit;   
  }                 

  // Alleen uploaden als $ok == 0 en alles uit de bovenste if() dus correct was.
  if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
      echo "Bestand ".  basename($_FILES['uploadedfile']['name']) ." is upgeload";
  }    
  else {
    echo "Fout!"; 
  }
}  
?>

j design

Legacy Member
Nee die doet het ook niet..
Noch de txt verandert noch de afbeelding wordt upgeload.

Toch bedankt dat je er al zo snel hebt naar gekeken.

j design

Legacy Member
OMG!

Ik heb het gevonden.
Bedankt voor de hulp. dit is de code
Code:
<?php 
$fp = fopen('../txt/add.txt','a'); 


if ( 
    (   ($HTTP_POST_FILES["uploadedfile"]["type"] == "image/gif"  ) 
     || ($HTTP_POST_FILES["uploadedfile"]["type"] == "image/png"  ) 
     || ($HTTP_POST_FILES["uploadedfile"]["type"] == "image/jpg"  ) 
     || ($HTTP_POST_FILES["uploadedfile"]["type"] == "image/jpeg" ) 
     || ($HTTP_POST_FILES["uploadedfile"]["type"] == "image/pjpeg") 
    ) 
    && ($HTTP_POST_FILES["uploadedfile"]["size"] < 2000000)) { 
	

  $line  = $_POST["naam"] ."|". date("d-m-Y"); 
  $line .= "|" . basename($_FILES['uploadedfile']['name']); 
  $line  = str_replace("\r\n", "<br />", $line); 
  $line .= "\r\n"; 
  fwrite($fp, $line); 

  	$target_path = "uploadmap/"; 
	$target_path = $target_path . basename($_FILES['uploadedfile']['name']);  
          
 	 if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
     	 echo "Bestand ".  basename($_FILES['uploadedfile']['name']) ." is upgeload"; 
  }     
   
}   
?>

mijn bestandsnaam dat ik meegaf van in mijn form
ipv file --> uploaded file

Bedankt

-Syco-

Legacy Member
Het zet je er dit in deze script:
.zip .jpg .bfme2replay .w3g .age3yrec .rep .sh2 .wagame .cdgz .cnc3replay .kwreplay .wicdemo Max file size: 100MB,
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan