27. februar 2005 - 11:54
Der er
21 kommentarer og 1 løsning
Upload fil til mappe på hjemmesiden
Jeg har denne kode. Men den overskriver den fil som ligger på mappen, men hvordan forhindre jeg det <? if(isset($_GET[ok])) { copy($_FILES["fil"]["tmp_name"],"".$_FILES["fil"]["name"]); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; } else { echo '<form method="POST" action="?ok" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
Annonceindlæg fra Cognizant
27. februar 2005 - 11:59
#1
så bruger du file_exists() if (file_exists("filen")) { //-- Nyt navn på filen }
27. februar 2005 - 12:04
#2
Du bør bruge is_uploaded_file og move_uploaded_file ;) <? if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) ) { if ( !file_exists( $_FILES['fil']['name'] ) ) { move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; } else { echo $_FILES['fil']['name'] . " eksisterer allerede."; } } else { echo '<form method="POST" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 12:05
#3
Hov: <? if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) ) { if ( !file_exists( $_FILES['fil']['name'] ) ) { move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] ); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; } else { echo $_FILES['fil']['name'] . " eksisterer allerede."; } } else { echo '<form method="POST" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 12:05
#4
Du kan if(isset($_GET[ok])) { $newname = $_FILES["fil"]["name"]; $i = 0; while (is_file($newname)) { $i++; $newname = sprintf("%03u", $i) ."_". $newname; } copy($_FILES["fil"]["tmp_name"],"".$newname); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";
27. februar 2005 - 12:08
#5
Og som sagt, bør du bruge move_uploaded_file() if(isset($_GET[ok])) { $newname = $_FILES["fil"]["name"]; $i = 0; while (is_file($newname)) { $i++; $newname = sprintf("%03u", $i) ."_". $newname; } if(is_uploaded_file($_FILES["upfile"]["tmp_name"])) { move_uploaded_file($_FILES["fil"]["tmp_name"],"".$newname); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; }else{ echo"Hacker forsøg????"; }
27. februar 2005 - 12:09
#6
HOv, skal jo så lige være $newname i linket til den fil som er blevet uploadet!
27. februar 2005 - 12:19
#7
arghhhh, så'n er det sgu når man kopiere kode fra et script over i et andet........ <?php if(isset($_GET[ok]) && trim($_FILES["fil"]["name"]) !="") { $newname = $_FILES["fil"]["name"]; $i = 0; while (is_file($newname)) { $i++; $newname = sprintf("%03u", $i) ."_". $newname; } if(is_uploaded_file($_FILES["fil"]["tmp_name"])) { move_uploaded_file($_FILES["fil"]["tmp_name"],"".$newname); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; }else{ echo"Hacker forsøg????"; } } else { echo '<form method="POST" action="?ok" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 12:26
#8
En gang til, og sidste.................... <?php if(isset($_GET["ok"]) && trim($_FILES["fil"]["name"]) !="") { if(file_exists($_FILES["fil"]["name"])) { $newname = $_FILES["fil"]["name"]; $i = 0; while (is_file($newname)) { $i++; $newname = sprintf("%03u", $i) ."_". $newname; } } if(is_uploaded_file($_FILES["fil"]["tmp_name"])) { move_uploaded_file($_FILES["fil"]["tmp_name"], $newname); echo "Blev uploadet <a href=\"".$newname."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; }else{ echo"Hacker forsøg????"; } } else { echo '<form method="POST" action="?ok" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 12:34
#9
FUCK hvor jeg kager rundt i det!!!!!!!
27. februar 2005 - 12:36
#10
Ja du kunne godt lige læse din kode igennem før du poster den ;)
27. februar 2005 - 12:39
#11
og der mangler en / <P> på ... name="fil"><p> :D
27. februar 2005 - 12:46
#12
En anden ting, så er det måske nok en go' ide at tjekke filnavn for special tegn. <?php if(isset($_GET["ok"]) && trim($_FILES["fil"]["name"]) !="") { $newname = strtolower($_FILES["fil"]["name"]); $bad = "\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\"/"; for($i = 0; $i < strlen($bad); $i++) { $newname = str_replace($bad[$i], "", $newname); } $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", " " => "_"); $newname = strtr($newname, $replace); $i = 0; while (is_file($newname)) { $i++; $newname = sprintf("%03u", $i) ."_". $newname; } if(is_uploaded_file($_FILES["fil"]["tmp_name"])) { move_uploaded_file($_FILES["fil"]["tmp_name"], $newname); echo "Blev uploadet <a href=\"".$newname."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; }else{ echo"Hacker forsøg????"; } } else { echo '<form method="POST" action="?ok" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"></p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 13:21
#13
Coderdk, kommer du lige med et svar, det var lige det jeg manglede
27. februar 2005 - 13:32
#14
Yes yes :)
27. februar 2005 - 13:44
#15
Jeg får denne fejl Warning: move_uploaded_file(): Unable to move '/tmp/php7S7WWq' to '' in /var/www/upload.php on line 6 Blev uploadet her til. Upload igen her
27. februar 2005 - 13:53
#16
Sukos virker også, så sukos, kommer du også lige med et svar.
27. februar 2005 - 13:53
#17
My bad! Linjen: move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] ); Skulle være: move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['fil']['name'] );
27. februar 2005 - 22:42
#18
Kan man også sætte en begrænsning på, så man kun kan uploade maks. 35 kb
27. februar 2005 - 22:45
#19
Yeps, det kan du gøre på to måder: <!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="35000" /> Eller du kan i dit script checke om $_FILES['fil']['size'] <= 35000
27. februar 2005 - 22:47
#20
F.eks.: <? if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) ) { if ( !file_exists( $_FILES['fil']['name'] ) ) { if ( $_FILES['fil']['size'] <= 35000 ) { move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] ); echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>"; } else { echo "Filen må maksimalt være 35 KB!"; } } else { echo $_FILES['fil']['name'] . " eksisterer allerede."; } } else { echo '<form method="POST" enctype="multipart/form-data">'; echo '<p>Fil:<br><input type="file" name="fil"><p>'; echo '<p><input type="submit" value="Upload" name="submit"></p>'; echo '</form>'; } ?>
27. februar 2005 - 22:58
#21
nu kommer den med denne fejl Warning: move_uploaded_file(): Unable to move '/tmp/phpiZHayC' to '' in /var/www/upload.php on line 8
27. februar 2005 - 22:59
#22
Bah: Kommentar: coderdk 27/02-2005 13:53:51 My bad! Linjen: move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] ); Skulle være: move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['fil']['name'] );
Vi tilbyder markedets bedste kurser inden for webudvikling