เลยเอามาลงไว้ใน blog ซะหน่อย
<form enctype="multipart/form-data" method="POST">
upload image or doc or pdf:
<input name="uploadedfile" type="file" />
<input type="submit" value="Upload" /><br>
</form>
<?
$upload_dir = "/home/unknown/www/stephack.local/test/";
# ที่อยู่ไฟล์ที่จะ save (ถ้าบน linux chmod folder นั้นๆ ให้เขียน ได้ด้วย ล่ะ)
$max_file_size = 2*1024*1024;
# ขนาด file ที่ limit
# ตามปกติ config ของ server จะ limit ใน php.ini กันที่ 2Mb
# ดังนั้น ถึงจะใส่เกิน 2Mb ก็อัพไม่ได้หรอก
$file_allow = array(".bmp", ".gif", ".jpeg", ".jpg", ".pdf", ".doc", ".docx");
# ประเภทไฟล์ที่อนุญาติ ให้ upload ขึ้นมาได้
if($_FILES['uploadedfile']){
if($_FILES['uploadedfile']['size']>$max_file_size) exit("file size limit");
# เช็คขนาดไฟล์
$tmpfile = pathinfo($_FILES['uploadedfile']['name']);
# สร้าง ตัวแปล tmp มาเก็บ ชื่อไฟล์
# จะเขียนอย่างอื่นก็ได้นะ เช่นเอาจาก ใน $_FILES เลยก็ได้
$file_name = preg_replace('~[^a-z0-9ก-๙]~iu', "", $tmpfile['filename']);
# ลบตัวอักษรแปลกๆ ในขื่อ
# (ถ้าไม่กังวลเรื่องชื่อไฟล์ ก็ random ชื่อไฟล์ ไปโลด)
$extension = strtolower(strrchr($tmpfile['basename'],'.'));
# ตัดเอาเฉพาะนามสกุลของไฟล์
if(!in_array($extension, $file_allow)) exit("wrong extension");
# เช็คนามสกุลไฟล์
# ***เสริม .. เวลาคนแฮกจะเนียลอัพ phpshell ขึ้นมา (bypass upload)
# นอกจากการปลอม mime-types ฝั่ง client แล้ว
# มักจะใช้ชื่อไฟล์ php เป็น image.jpg.php image.php.jpg image.php;.jpg อะไรประมาณเนี้ย
if(move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], $upload_dir.$file_name.$extension)) echo "upload done";
# อัพเสร็จก็แสดงข้อความ ซะหน่อย
else echo "unkown error";
# อัพไม่ได้ ก็ แสดง error ซะหน่อย
# ส่วนมากปัญหา จะเพราะ folder ไม่ได้ chome 0755, 0777 ไว้ แหละ
}
?>
ref : http://www.pantip.com/tech/developer/topic/DW3060307/DW3060307.html
No comments:
Post a Comment