เลยเอามาลงไว้ใน 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