สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน

สอบถามการใช้งาน PhpSpreadsheet ป้องกัน Workbook ด้วยรหัสผ่าน
จากบทความนี้ ได้ลองทดสอบทำตามหัวข้อ "การจัดการการป้องกัน cell" สามารถล็อกการแก้ไขเซลล์ได้ปกติ
https://www.ninenik.com/กำหนด_Style_ให้กับพิกัด_Cell_ด้วย_PhpSpreadsheet_เบื้องต้น_ตอนที่_5-932.html

แต่ถ้าอยากป้องกันตั้งแต่ตอนเปิดไฟล์ให้ถามรหัสผ่านเหมือนในรูป สามารถทำได้ไหมครับ ขอบคุณครับ


Hardalways 02-05-2023 20:19:01

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
PhpSpreadsheet เท่าที่ได้ลองใช้ ยังไม่รองรับสำหรับการทำการป้องกัน workbook
ป้องกันได้เฉพาะ  cell แต่สามารถประยุกต์สร้างเป็นไฟล์ zip แล้วกำหนดรหัสผ่านให้กับไฟล์
zip แทนได้ โดยใช้  PhpZip PHP Library ตามลิ้งค์ที่แนะนำด้านล่าง 
หรืออีกวิธีลองใช้งานตัว Secure Spreadsheet มาใช้งานร่วมก็ได้ โดยเป็นลักษณะของการ
นำไฟล์ excel ที่เราสร้างด้วย PhpSpreadsheet มาเข้ารหัสอีกทีในรูปแบบคำสั่งง่ายๆ 
 
require "vendor/autoload.php";

use Nick\SecureSpreadsheet\Encrypt;

$test = new Encrypt();
$test->input('Book1.xlsx') // ไฟล์ต้นฉบับ
    ->password('111') // กำหนดรหัสผ่าน
    ->output('bb.xlsx'); // ไฟล์ที่มีการกำหนดรหัสผ่านเข้าไปแล้ว


บทความแนะนำที่เกี่ยวข้อง
แนะนำ PhpZip PHP Library สำหรับจัดการไฟล์ Zipอ่าน 6,945
ninenik 03-05-2023
 ความคิดเห็นที่ 2
จะเลือกใช้งาน Secure Spreadsheet แล้วมีข้อสงสัยครับ
คือ PhpSpreadsheet ผมใช้วิธีดาวน์โหลดไฟล์ Excel ทันทีที่มีการเรียกใช้งานการสร้างไฟล์ โดยที่ไม่ได้บันทึกไฟล์ไว้บน server ...แบบนี้จะสามารถใช้งานร่วมกันได้ไหมครับ ขอบคุณครับ

$writer = new Xlsx($spreadsheet);
 
// ชื่อไฟล์
$file_export= "Excel-".date("dmY-Hs");
 
 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$file_export.'.xlsx"');
header("Content-Transfer-Encoding: binary ");
 
$writer->save('php://output');
exit();


hardalways 04-05-2023 07:29
 ความคิดเห็นที่ 3
เท่าที่ดู Secure Spreadsheet น่าจะเข้ารหัสได้เฉพาะข้อมูลที่เป็นไฟล์ excel แล้ว
เบื้องต้นคงต้องสร้างเป็นไฟล์ก่อน แล้วถึงเข้ารหัสจึงจะได้ หากจะประยุกต์ อาจจะสร้าง
ไฟล์ชั่วคราวเพื่อสร้างไฟล์ต้นฉบับ หลังจากส่งออกแล้วก็ทำการลบไฟล์ต้นฉบับทิ้ง
แนวทางเบื้องต้นตามโค้ดด้านล่าง
 
$writer = new Xlsx($spreadsheet);
$output_file = "hello_world.xlsx"; // กำหนดชื่อไฟล์ excel ที่ต้องการ
$output_file_pass = "hello_world_pass.xlsx"; // กำหนดชื่อไฟล์ excel ที่ต้องการกำหนดรหัสผ่าน
$writer->save($output_file); // สร้างไฟล์ชั่วคราว

$test = new Encrypt();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$output_file_pass);
header("Content-Transfer-Encoding: binary "); 
$output = $test->input($output_file)
    ->password('111')
    ->output("php://output"); 
unlink($output_file); // ลบไฟล์


ninenik 04-05-2023
 ความคิดเห็นที่ 4
ทดสอบตาม คห.3 ใช้งานได้แล้ว ขอบคุณมากครับผม


hardalways 06-05-2023 08:13
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ