อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by oxygenyoyo » 14/08/2008 2:56 am

คือผม ต้องการป้องกันการ download แบบตรงเช่น

สมมติว่า ไฟล์ผมอยู่ที่ url : www.example.com/myfile.zip อย่างเนี้ยอ่ะครับ

เรามีวิธีป้องกันไม่ให้เค้าเข้ามาโหลดโดยตรงไหมครับ ?

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22235
Joined: 22/09/2008 6:18 pm
Contact:

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by mindphp » 14/08/2008 6:51 am

สร้าง ไฟล์ php ขึ้นมา แล้วกำหนดให้ไปอ่านไฟล์ ที่ต้องการให้ ดาวโหลด
แล้ว บอก header ของ php ให้มี ชนิดไฟล์ ที่ php ไปอ่านมา

ปล. อ่านไฟล์ มาเป็น binary ก่อนนะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by oxygenyoyo » 14/08/2008 9:15 pm

งงอ่ะครับคุณ mindphp

รบกวนช่วยอธิบายให้ละเอียดกว่านี้หน่อยครับผม

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22235
Joined: 22/09/2008 6:18 pm
Contact:

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by mindphp » 16/08/2008 7:43 am

Code: Select all

function download(){


   set_time_limit(0);	// ตั้งเผื่อไฟล์ ใหญ่ ให้ โปรแกรมทำงาน ได้นานกว่า ค่ามาตรฐาน 


     $dlfile="ชื่อไฟล์ที่จะให้ download ";
     if(file_exists($dlfile)){
            header("Content-Type: application/octet-stream"); // สามารถ ระบุเป็นชนิดไฟล์ อื่นๆ ก็ได้  เช่น 				header ("Content-type: application/pdf");
 สำหรับ pdf 
            header("Content-Disposition: attachment; filename=\"" . $filename . "\"");   // ตั้งชื่อไฟล์ ให้ คนโหลด
            header('Cache-Control: ');	// เกี่ยวกับ การป้องกัน ไม่ใช้ IE จำ Cache 
            header('Pragma: ');		// กำหนด เพื่อให้ โหลดแบบ https ได้
            header('Content-Length: '.(string)(filesize($dlfile)));
            
            อ่านเป็นไฟล์ ที่ต้องการให้ดาวน์โหลด ออกมา เป็น binary 
          }
      }else die("ไม่มีไฟล์ ");        
}
น่าจะละเอียดพอนะครับ ถ้าไม่เข้าใจตรงไหนก็ ถามเป็นจุดๆ ได้ครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by oxygenyoyo » 18/08/2008 5:22 pm

อ่านเป็นไฟล์ ที่ต้องการให้ดาวน์โหลด ออกมา เป็น binary
ผมงงตรงนี้อ่ะครับคือจะเป็นอย่างไรอ่ะครับ

แล้วก็
บอก header ของ php ให้มี ชนิดไฟล์ ที่ php ไปอ่านมา
ตรงจุดนี้เนี้ยถ้าผมไม่บอก กับบอกเนี้ยจะแตกต่างกันอย่างไรอ่ะครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22235
Joined: 22/09/2008 6:18 pm
Contact:

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by mindphp » 18/08/2008 10:55 pm

อ่านไฟล์ที่ ต้องการใช้คนมาดาวน์โหลด ด้วย
function fread() จะได้ เป็น Binary ออกมาแ
เมื่อเรากำหนดให้ header ของ ไฟล์ php เป็น อะไร browser ก็ จะมอง ว่า ไฟล์ที่เรา อ่านเป็น Binary แล้วนั้นเป็นไฟล์ ชนิดตามที่บอกใน header

ปล.ขอโทษทีครับ ข้อความก่อนผม รีบเขียนไปหน่อยอาจทำให้ งงบ้าง ช่วงนี้มีคนถามเยอะ แต่ไม่ค่อยมีคนตอบ ผมเลยพยายามตอบ ให้ครบ บางกระทู้เลยอาจได้ข้อมูลไม่ครบ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by oxygenyoyo » 19/08/2008 3:15 am

ผมเอาไปลองแล้วก็ยังงงอ่ะครับ

คือว่าตรงที่บอกว่า "ชื่อไฟล์ี่ที่จะให้ download" เนี้ยเป็น path หรือว่าเอาแต่ชื่อไฟล์อ่ะครับ

แล้วให้ใช้ฟังก์ชั่น fread() แล้วจะให้ fopen ตรงไหนอย่างไรอ่ะครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22235
Joined: 22/09/2008 6:18 pm
Contact:

Re: อยากทราบว่ามีวิธีป้องกันมาโหลด file โดยตรงไหมครับ

Post by mindphp » 19/08/2008 6:35 am

การใช้ fread() ก็ใช้ปกติครับ

เช่น

Code: Select all

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?> 
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 61 guests