สวัสดีครับทุกท่าน
ตอนนี้ผมกำลังพัฒนาเว็บไซต์ที่ต้องมีการเล่นวีดีโอด้วยภาษา php ครับ
โดนตัว web player ที่ผมใช้ตอนนี้คือ JW Player
และไฟล์วีดีโอของผมจะวางอยู่ที่ Server อีกตัวหนึ่งและมีการเข้ารหัสแบบ Basic Authentication ไว้หนึ่งชั้น
วิธีที่ผมทำตอนนี้คือใช้ JW Player เรียกไฟล์ php ไฟล์นึงที่วางอยู่ที่เซิฟเวอร์ของตัวเองและส่งพารามิเตอร์ที่เป็นค่าของหนังที่จะเล่นเข้าไป
http://localhost/mywebsite/php/play.php?groupID=69&idx=0
และในไฟล์ play.php จะมีการรับค่า username มาจาก $_SESSION ครับ จากนั้นจะทำการเช็คว่า username นี้ได้มีการจ่ายเงินจริงถึงจะเล่นหนังได้
ขั้นต่อก็คือจะสร้าง path ขึ้นมาจาก API เมื่อ username นั้นมีการเสียเงินแล้ว
$path = "https://[MOVIE_SERVER]";
ต่อมาก็คือการใช้ curl เรียก path นั้นและส่ง header ที่เป็นรหัสของ basic authen ครับ
$username = '[USER]';
$password = '[PASS]';
$credentials = $username.":".$password;
$headers = array(
"Authorization: Basic " . base64_encode($credentials)
);
$ch = curl_init($path);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
หากไม่มีขั้นตอนนี้นำลิ้งไปเล่นปกติ พอกด play จะเด้ง popup ถาม user/pass ขึ้นมาครับ แต่พอทำแบบ curl มีการใส่ header แบบนี้พอกด play หนังก็จะเล่นได้ตามปกติ แต่จะ skip ข้ามไปส่วนที่ยังโหลดไม่เสร็จไม่ได้ แต่ตรงนี้ผมไม่ซีเรียสเท่าไรครับ
ส่วนที่ผมอยากเพิ่มตอนนี้คือการป้องกันการดาวโหลดจากโปรแกรมดูดหนังเช่น IDM (Internet Download Manager), Firefox download Helper ซึ่งตอนนี้ พอกันเบื้องต้นได้อยู่แต่ถ้ามีโปรแกรมดูดวีดีโอแล้ว พอกด Play มันจะสามารถโหลดได้ทันทีเลยครับ ตรงนี้เราพอมีวิธีกันบ้างไหมครับ ขอบคุณครับ
การป้องกันการดาวโหลดวีดีโอจาก IDM ครับ
ตอนนี้ผมกำลังพัฒนาเว็บไซต์ที่ต้องมีการเล่นวีดีโอด้วยภาษา php ครับ
โดนตัว web player ที่ผมใช้ตอนนี้คือ JW Player
และไฟล์วีดีโอของผมจะวางอยู่ที่ Server อีกตัวหนึ่งและมีการเข้ารหัสแบบ Basic Authentication ไว้หนึ่งชั้น
วิธีที่ผมทำตอนนี้คือใช้ JW Player เรียกไฟล์ php ไฟล์นึงที่วางอยู่ที่เซิฟเวอร์ของตัวเองและส่งพารามิเตอร์ที่เป็นค่าของหนังที่จะเล่นเข้าไป
http://localhost/mywebsite/php/play.php?groupID=69&idx=0
และในไฟล์ play.php จะมีการรับค่า username มาจาก $_SESSION ครับ จากนั้นจะทำการเช็คว่า username นี้ได้มีการจ่ายเงินจริงถึงจะเล่นหนังได้
ขั้นต่อก็คือจะสร้าง path ขึ้นมาจาก API เมื่อ username นั้นมีการเสียเงินแล้ว
ต่อมาก็คือการใช้ curl เรียก path นั้นและส่ง header ที่เป็นรหัสของ basic authen ครับ
$password = '[PASS]';
$credentials = $username.":".$password;
$headers = array(
"Authorization: Basic " . base64_encode($credentials)
);
$ch = curl_init($path);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
หากไม่มีขั้นตอนนี้นำลิ้งไปเล่นปกติ พอกด play จะเด้ง popup ถาม user/pass ขึ้นมาครับ แต่พอทำแบบ curl มีการใส่ header แบบนี้พอกด play หนังก็จะเล่นได้ตามปกติ แต่จะ skip ข้ามไปส่วนที่ยังโหลดไม่เสร็จไม่ได้ แต่ตรงนี้ผมไม่ซีเรียสเท่าไรครับ
ส่วนที่ผมอยากเพิ่มตอนนี้คือการป้องกันการดาวโหลดจากโปรแกรมดูดหนังเช่น IDM (Internet Download Manager), Firefox download Helper ซึ่งตอนนี้ พอกันเบื้องต้นได้อยู่แต่ถ้ามีโปรแกรมดูดวีดีโอแล้ว พอกด Play มันจะสามารถโหลดได้ทันทีเลยครับ ตรงนี้เราพอมีวิธีกันบ้างไหมครับ ขอบคุณครับ