MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-23, 05:56

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 8 篇文章 ] 
發表人 內容
文章發表於 : 2005-03-25, 22:10 
離線

註冊時間: 2005-01-15, 15:39
文章: 22
我用JavaScript寫了一個小程式
如果瀏覽者是使用ie瀏覽器的話
就執行
<object classid="CLSID:05589FA1-C356-11CE-BF01-00AA0055595A" data="[_db_name__].mp3" style="height:40px;width:200px;">
<param name="src" value="[__db_name__].mp3" valuetype="ref" />
<param name="autoStart" value="0" valuetype="data" />
<param name="DisplaySize" value="0" valuetype="data" />
<param name="Volume" value="100" valuetype="data" />
</object>

若不是ie 則執行
<object data="[__db_name__].mp3" type="audio/mpeg" style="height:40px;width:200px;">
<param name="src" value="[__db_name__].mp3" valuetype="ref" />
<param name="autoStart" value="1" valuetype="data" />
<param name="DisplaySize" value="0" valuetype="data" />
<param name="Volume" value="100" valuetype="data" />
</object>

後來為了防止盜連
所以我用php寫了一個防止外連的程式
把[__db_name__].mp3都改成
music.php?id=[__db_name__].mp3

卻發現改成這樣之後 ie可執行
Mozilla Firefox不行 (Orz)

請問有人知道問題出在哪嬤?
謝謝


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-25, 22:30 
離線

註冊時間: 2005-01-16, 13:34
文章: 131
MIME type沒設好罷...


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050213 Firefox/1.0+
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-26, 22:08 
離線

註冊時間: 2005-01-15, 15:39
文章: 22
不好意思
不曉得您指的是我程式裡面寫的MIME type
還是我Mozilla Firefox裡面的MIME type設定?


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-26, 23:14 
離線
[網站管理員]
頭像

註冊時間: 2002-01-07, 19:28
文章: 3080
來自: 台灣
sdcgf 寫:
所以我用php寫了一個防止外連的程式
把[__db_name__].mp3都改成
music.php?id=[__db_name__].mp3

只是問一下:你的 __db_name__ 裡應該不包括中文名稱對吧 :)

_________________
雜工 :: 柏強 / Bob Chao
發問討論請保持禮節,在志工社群裡沒有人有「義務」要為您做些什麼。

* MozTW 志工無限招募中,開放網路世界需要您的一臂之力


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 (ax)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-27, 01:38 
離線

註冊時間: 2005-01-16, 13:34
文章: 131
雖然不知道你防止盜連的"程式"的內容是什麼, 但既然能以這種方法使用的話, 相信是Redirect之類的...
我所指就是在PHP裡發出正確的MIME type...

當然我都是猜的...


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050213 Firefox/1.0+
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-27, 12:52 
離線

註冊時間: 2005-01-15, 15:39
文章: 22
BobChao 寫:
sdcgf 寫:
所以我用php寫了一個防止外連的程式
把[__db_name__].mp3都改成
music.php?id=[__db_name__].mp3

只是問一下:你的 __db_name__ 裡應該不包括中文名稱對吧 :)


全都用英文命名
[__db_name__]是樣版裡歌曲名稱的變數




李某人 寫:
雖然不知道你防止盜連的"程式"的內容是什麼, 但既然能以這種方法使用的話, 相信是Redirect之類的...
我所指就是在PHP裡發出正確的MIME type...

當然我都是猜的...


if(!file_exists($file_dir.$file_id.$file_key)){exit($_GET[id]."找不到");}
else{$file=fopen($file_dir.$file_id.$file_key,"r");
Header("Content-type:audio/mpeg");
Header("Content-Disposition:attachment;filename=".$file_id.$file_key);
while(!feof($file)){echo fread($file,50000);}fclose($file);}

這是PHP裡面的部分程式
MIME type與樣板裡面呼叫撥放器的MIME type一樣

在不使用這個PHP的防止盜連程式之前 Mozilla Firefox與Internet Explorer都可運行

使用後 則只剩下Internet Explorer可以

另外 不使用撥放器 直接在網址裡面輸入音樂檔案路徑
(如music.php?id=AAAAA.mp3)
則確定可以找的到AAAAA.mp3 下載且撥放
因此可以確定程式是找的到音樂的= =


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-29, 01:26 
離線
[網站管理員]
頭像

註冊時間: 2002-01-07, 19:28
文章: 3080
來自: 台灣
喔天啊我終於解開這個謎了,真令人感動... 由於缺乏對其他 HTTP header 的瞭解和在網路上放音樂的經驗,著實吃了點苦頭 =.=

簡言之: 不要用 Content-Disposition: attachment 的方法送檔案,然後也順便送出 Content-Length 就行了。

代碼:
$file=fopen("after_17.mp3","r");
header("Content-Type: audio/mpeg");
header("Content-Length: ".filesize("after_17.mp3"));
while(!feof($file)){echo fread($file,50000);}fclose($file);


----

以下是「遊記」,由於自以為蠻有趣就寫一下,沒興趣的看剛剛那段瞭解作法就好了..

----

由於我記得以前曾以送出「Content-Disposition: attachment; filename=something.pdf」的方式製作「下載 PDF 檔」的連結(使用者按下此連結後不會在瀏覽視窗中開啟 Acrobat Reader),或許問題就在那裡?所以做了這個測試。

1. 直接從位址列輸入網址,測試瀏覽器怎麼處理。

* Firefox: 以 plugin 開啟
* IE: 以 plugin 開啟

2. 撰寫與提問中相似的 PHP 程式碼,測試瀏覽器怎麼處理。

* Firefox: 下載檔案
* IE: 下載檔案

3. 以 LiveHTTPHeader 查閱直接輸入檔名與間接透過 PHP 接收檔案的差異。以下以加號代表「間接方式有」但「直接方式沒有」的項目,減號代表「直接方式有」但「間接方式沒有」的項目。

- Etag: "1c9d-285000-ca78dee4"
- Accept-Ranges: bytes
- Content-Length: 2641920
+ X-Powered-By: PHP/4.3.3
+ content-disposition: attachment; filename=after_17.mp3
+ Transfer-Encoding: chunked

經此研究獲得的結論如下:
* 不管是哪種方式,以輸入網址方法操作的話兩種瀏覽器處理方式都一樣。
* 兩種方式的 HTTP header 有不少差異

獲得假設:
* 可能是瀏覽器把接收到的檔案轉交給 plugin 的方式不同?
* 如果想辦法把兩種 header 都做到一樣,或許就可以了?

第一個假設如果成立的話,我們是鐵定無能為力的 XD

為了測試第二個假設,決定不用 attachment 作法傳檔案,直接把傳出去的東西當成音樂檔(ㄟ... 這樣講有點奇怪,反正就是不把他當成「網頁的 attachment」XD )。

哇,可以播了耶!不過沒送 Content-Length 會中斷,所以補上就 ok 了...

----
都說了我只是自以為有趣...

_________________
雜工 :: 柏強 / Bob Chao
發問討論請保持禮節,在志工社群裡沒有人有「義務」要為您做些什麼。

* MozTW 志工無限招募中,開放網路世界需要您的一臂之力


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 (ax)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2005-03-29, 09:05 
離線

註冊時間: 2005-01-15, 15:39
文章: 22
BobChao 寫:
----

以下是「遊記」,由於自以為蠻有趣就寫一下,沒興趣的看剛剛那段瞭解作法就好了..

----


老實說 遊記有很多我看不懂的地方 Orz
但是確實可執行了
感謝BobChao兄的幫忙
您的這一步 相信將會是網頁編寫者的一大步(哈)


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 8 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 9 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群