บทความนี้ก็ต่อเนื่องมาจาก 2 บทความที่ผ่านมาคือ

ตัวอย่างง่ายๆกับการอับโหลดไฟล์ด้วย PHP ใครๆก็ทำได้
ตัวอย่างง่ายๆกับการอับโหลดไฟล์ด้วย PHP ใครๆก็ทำได้ [ตอนที่2 ความเหมือนที่แตกต่าง]

ในบทนี้เรามาพูดถึงเรื่องความปลอดภัยในการอับโหลดรูปขึ้น server ซึ่งจริงๆแล้วมันก็ไม่สำคัญเท่าไหร่ถ้าเราทำโปรแกรมอับโหลดขึ้นมาใช้คนเดียว แต่หากเราจะต้องนำไปใช้กับบุคคลทั่วไปอับโหลดไฟล์ขึ้นโฮสก็อาจจะมีอันตรายได้เนื้องจ
กเรื่องความปลอดภัยถ้าวันใดวันหนึ่งมีผู้ไม่ประสงค์ดีนำไวรัสอับโหลดขึ้นมาบน server แค่นี้คุณก็นึกออกนะครับว่าอะไรจะเกิดขึ้น หากไวรัสตัวนั้นเป็นตัวใหม่แล้วโปรแกรมแสกนไวรัสบน server ก็ตรวจจับไม่เจอ มันเป็นสิ่งที่อันตรายมากเราจึงจำเป็นต้องตรวจสอบไฟล์ที่จะอับโหลดขึ้นสู่ server ของเราเพื่อเป็นการป้องกันขั้นแรกก่อนที่ใครก็ได้จะอับอะไรไม่รู้ขึ้นสู่ server ของเรา

หลักการก็คือ การตรวจสอบชนิดของไฟล์ว่าป็นชนิดใด เช่น ไฟล์ภาพ .jpeg .gif .bmp หรือไฟล์ .zip .txt .gzip เป็นต้น
เราทราบกันดีว่าไวรัสส่วนใหญ่จะเป็นไฟล์ .exe และไฟล์อื่นๆเช่น .vb เราก็จะไม่ให้อับโหลดขึ้นไป โดยกำหนดเงื่อนไขได้ดังเช่น
ไฟล์ที่เราจะให้อับโหลดขึ้นไปได้เราก็นำมาตรวจสอบก่อนว่าตรงกับที่เราต้องการหรือไม่ เช่นต้องการอับโหลดได้เฉพาะไฟล์ภาพเท่านั้นที่มีนามสกุลไฟล์คือ .jpeg และ .gif เราสามารถเขียนโปรแกรมได้ดังนี้


[code]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Upload A File From A Form</title>
</head>
<body>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="2048000">
File: <input name="userfile" type="file" />

<input type="submit" value="Upload" />
</form>

<?php

if (($_FILES["userfile"]["type"] == "image/pjpeg")|| ($_FILES["userfile"]["type"] == "image/gif")
&& ($_FILES["userfile"]["size"] < 20000))