Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > เช็คนามสกุลไฟล์ก่อนอับโหลด ไม่ให้อับโหลดไฟล์นามสกุล .exe ขอตัวอย่างโค้ดด้วยครับ โค้ด ที่check type ของผมอยู่ บรรทัดที่ 47



 

เช็คนามสกุลไฟล์ก่อนอับโหลด ไม่ให้อับโหลดไฟล์นามสกุล .exe ขอตัวอย่างโค้ดด้วยครับ โค้ด ที่check type ของผมอยู่ บรรทัดที่ 47

 



Topic : 129894



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์




Code (PHP)
<?php
session_start();
include "conn.php";
$Mem_ID = $_SESSION['ses_user_id'];

echo '<pre>';
print_r($_FILES);

?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title><?php echo $title_web; ?></title>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/style.css" rel="stylesheet">
	</head>
	<body>
	<?php

if(!empty($_FILES))
	{
		//*************************************Create Folder******************************		
		//เพื่อป้องกัน file ของ user ชื่อซ้ำกัน ตั้งfile_uploads/ID ของ user นั้น
		$folder = "file_uploads/" . $Mem_ID . '/';//เก็บไฟล์ไว้ที่ไหน
			if (!file_exists($folder))//ถ้าfloder นี้ไม่มีให้สร้าง folder ใน if
			{
				mkdir($folder, 0777);//0777 permission
		
			}
		//**********************************End Create Folder******************************

		$fileTamp = $_FILES['upfile']['tmp_name'];//ต้นทางไฟล์
		$fileName = $_FILES['upfile']['name'];//ชื่อไฟล์
		$fileSize = $_FILES['upfile']['size'];//ขนาดไฟล์
		$type = $_FILES['upfile']['type'];//นามสกุล
		
		//**********************************ที่อยู่ของไฟล์*********************************
		for($i=0;$i<count($fileName);$i++)
		{
			$targetFile[$i] = $folder.$fileName[$i];//เอาชื่อไฟล์กับ folder มาต่อกัน = เป้าหมายไฟล์
		}
		
		//**********************************จบ ที่อยู่ของไฟล์*********************************

		//************************Check Type**************************************************
		for($i=0;$i<count($type);$i++)
		{
			//strpos ตำแหน่งของ application อยู่ตำแหน่งที่ 0 และในชื่อไฟล์ มีคำว่า.exe อยู่
			//ถ้ามีไฟล์ .exe ไฟล์เดียว ก็จะยกเลิกทั้งหมด
			if (strpos($type[$i], 'application')===0 && strpos($fileName[$i],'.exe' )>0)
				{
					echo "<div class='error'> Can't upload " . $fileName[$i] . " because file type .exe</div>";
					exit;
				}
		}
		
		//************************END Check Type**************************************************


		//************************Check Size**************************************************
		//เช็คว่าใน Mem_storage เหลือเท่าไร
		$sql = mysqli_query($conn,"select * from member where Mem_ID = '$Mem_ID' ") or die (mysqli_error());
        $result = mysqli_fetch_assoc($sql);
        $total = $result['Mem_Storage'];//ผลรวมไฟล์ของสมาชิก แปลงเป็นหน่วย MB มาจาก ข้างล่างแล้ว

		//check ไฟล์ที่เพิ่งอับโหลดเข้าไป และ แปลงหน่วยจาก byte เป็น MB
		$filetotal = 0;
		for($i=0;$i<count($fileSize);$i++)
		{
			$fileSize[$i] = $fileSize[$i]/1024/1024;// แปลงขนาดไฟล์เป็น mb   fileมาเป็นmb/1024kb/1024b
			$filetotal += $fileSize[$i];//ผมรวมไฟล์ที่อับโหลดเข้ามา
		}

		
		if($total-$filetotal <= 0 )//ถ้าเกินไฟล์นึง ก็จะ ยกเลิกทั้งหมด
		{
			echo "<div class='error'> File Size Over Limit - Fail</div>";
					exit;
		}

		//************************END Check Size**************************************************


		



		//************************Upload Finnish**************************************************
		for($i=0;$i<count($fileName);$i++)
		{
			//**********************************gen url******************************
			$ret_char = "";//ค่าว่าง
			$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//0-61ตัว
	    	$num = strlen($chars);//ความยาวstr ได้62ตัว
	   		for($a = 0; $a < 9; $a++)
	   		{  
	        	$ret_char.= $chars[rand()%$num];//วนลูบ9รอบนำมาต่อกัน แรนด้อมเลขmodด้วยความยาวstr หารเอาเศษ
	   	 	}
			//**********************************End gen url******************************


			if (file_exists($targetFile[$i]))//ถ้ามีชื่อไฟล์อยุ่แล้วไม่ให้อับโหลด
			{
				echo "<div class='warning'>Upload File " . $fileName[$i] . " already exist! </div>";
			}
			else if(move_uploaded_file($fileTamp[$i], $targetFile[$i]))//ชื่อไฟล์,ปลายทางที่จะย้ายไฟล์ไฟล์
			{
				@mysqli_query($conn,"insert file_upload set Fil_File = '".$Mem_ID . '/' . $fileName[$i]."',Fil_Size = '".$fileSize[$i]."',Fil_Link = '$ret_char',Fil_DateCreate = now(), Fil_Expire = DATE_ADD(now(), INTERVAL 30 DAY ) ,Mem_ID = '$_SESSION[ses_user_id]'")or die (mysqli_error());
				echo "<div class='success'>Upload File " . $fileName[$i] . " sucess </div>";
				
				$sql = mysqli_query($conn,"select * from member where Mem_ID = '$Mem_ID' ") or die (mysqli_error());
        		$result = mysqli_fetch_assoc($sql);
				$total = $result['Mem_Storage']-$fileSize[$i];
				@mysqli_query($conn,"UPDATE member SET Mem_Storage = '$total' WHERE Mem_ID = '$Mem_ID' ") or die (mysqli_error());
			}
		}
		//************************End Upload Finnish**************************************************

		echo '<a href="upload.php">click to refresh!</a>';


	}

?>
	</body>
</html>





Tag : PHP, MySQL, HTML5, Ajax, Appserv, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-01-10 01:11:20 By : lemon29 View : 2567 Reply : 9
 

 

No. 1



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ผมต้องการ ที่จะเขียนให้เป็น
1. ชื่อไฟล์ a.exe ไม่สามารถอับโหลดได้ แม้จะเปลี่ยนชื่อไฟล์ เป้น a.jpg ก็ไม่สามารถอับโหลดได้
2.ตรวจสอบนามสกุลไฟล์ ไม่ให้อับโหลด .exe ได้เช่น a.exe.jpg.txt นามสกุลคือ .txt สามารถอับโหลดได้
แต่ถ้า a.exe ไม่สามารถอับได้

ขอบคุณล่วงหน้าครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-10 01:12:34 By : lemon29
 


 

No. 2



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ถ้าแบบข้อ 2 ก็พอจะเช็คได้
Code (PHP)
if( 'exe' == end(($x=explode('.', $filename))){
    die('file type error');
}
//หรือ 
if( preg_match('/\.exe$/', $filename)){
    die('file type error');
}


แต่ถ้าแบบข้อ 1 คุณต้องรู้เรื่อง format ของไฟล์ แต่ละชนิด
นามสกุล .exe มีรูปแบบอย่างไร ถึงจะสามารถ เช็คได้
นามสกุล .com มีรูปแบบอย่างไร ปวดหัวตาย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-10 01:27:16 By : Chaidhanan
 

 

No. 3



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับ Chaidhanan พอดีผมมือใหม่ครับ

ส่วนของข้อ2 เขียนแบบนี้ได้เหมือนกันไช่มะครับ
Code (PHP)
for($i=0;$i<count($type);$i++)
		{
			//substr หา 4ตัวท้าย มีคำว่า.exe อยู่
			//ถ้ามีไฟล์ .exe ไฟล์เดียว ก็จะยกเลิกทั้งหมด
			if (substr($fileName[$i],-4) == ".exe")
			{
				echo "<div class='error'> Can't upload " . $fileName[$i] . " because file type .exe</div>";
				exit;
			}
		}



ส่วนข้อ 1 ผมลอง ดู
https://stackoverflow.com/questions/8444638/how-to-read-header-of-a-file-uploaded-in-php


อันนนี้เป้นรายชื่อไฟล์
http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types


ส่วนของ นามสกุล .exe มี mine type เป็นแบบนี้ึีครับ
application/x-msdownload exe dll com bat msi



แต่ผมยังหาวิทีใช้ยังไม่ได้ครับ พอมีแนวทางไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-10 14:47:36 By : lemon29
 


 

No. 4



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


การกำหนดใน mimetype เป็นการอนุญาตให้ transfer file ได้
ถ้าไม่อนุญาต ก็ไม่ต้องใส่ ใน mimetype แต่ก็เป็นการเช็คแค่ นามสกุลเท่านั้น

แต่อยากรู้ว่าจะทำอะไรถึงต้องการ security ถึงขนาดนั้น

คือถ้าเราไม่ไปสั่ง execute มันก็เหมือนไฟล์ขยะเท่านั้นเอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-10 17:40:02 By : Chaidhanan
 


 

No. 5



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุนครับ ตอนนี้ผมใช้ is_executable แล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-15 18:42:52 By : lemon29
 


 

No. 6



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : lemon29 เมื่อวันที่ 2018-01-15 18:42:52
รายละเอียดของการตอบ ::
แจ่ม หาจนเจอ ผมไม่ได้นึกถึงคำสั่งนี้ เลย แบบลืมไปเลย


ส่วนใหญ่ก็จะเซท permission ใน folder ซะมากกว่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-15 20:14:14 By : Chaidhanan
 


 

No. 7



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ขอสอบถามอีกนิดครับ
ระหว่าง ฟั่งก์ชั่น

is_executable กับ FILEINFO_MIME_TYPE มันต่างกันยังไงหรอครับ พอทราบไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-24 02:05:38 By : lemon29
 


 

No. 8



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ผมรบกวนขอ E-mail ติดต่อสอบถามหน่อยได้หรือเปล่าครับ พอดีทำโปรเจคจบเรื่องนี้อยู่ครับ ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-24 02:16:06 By : lemon29
 


 

No. 9



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


upload class. https://rundiz.com/web-resources/downloads/php-upload-v2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-01-24 06:07:54 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เช็คนามสกุลไฟล์ก่อนอับโหลด ไม่ให้อับโหลดไฟล์นามสกุล .exe ขอตัวอย่างโค้ดด้วยครับ โค้ด ที่check type ของผมอยู่ บรรทัดที่ 47
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

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

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่