2012-10-16 23 views
0

我想弄清楚是否有方法在PHP中打開用戶的桌面上的文件(即,用戶從PHP頁面上顯示的文件列表中選擇一個文件,然後用用戶桌面上的相應程序打開該文件,就好像用戶在GUI中雙擊它一樣。)搜索了一段時間後,我發現這可以通過一些使用COM對象的複雜外觀的代碼來實現在PHP中,但這隻適用於Windows用戶,我試圖保持這個平臺不可知論。將打開的文件請求傳遞到操作系統在PHP中

有沒有其他人曾試圖做到這一點,並取得成功?

+2

用戶會在他們的機器上安裝某種軟件,還是希望它能夠爲任何訪問該站點的Joe工作?因爲我打賭後者是不可能的(可能故意這樣做,這可能是一個非常危險的操作)。 – MrLore

+0

@MrLore:我已經考慮過這個安全問題,這就是爲什麼我不希望有辦法做到這一點 - 至少不容易。 我試圖爲我的工作場所的用戶創建一個PHP系統,他們可以在瀏覽器中提取文件列表(文件將在網絡共享上),他們可以從列表中選擇一個文件,它會打開它們進行編輯,就好像他們已經雙擊它一樣。所以,一種簡單的文件管理系統。 可能將不得不尋找另一種方式來做到這一點,但我認爲這值得提問。 – inkswamp

+1

如果它在你的工作,那麼你肯定可以在你想要的功能的計算機上安裝一些東西?如果是這樣,也許看看Seth的答案:http:// stackoverflow。com/questions/4200398/launch-file-on-clients-computer-from-php – MrLore

回答

1

如果沒有漫長的「用戶同意」過程,或者用戶自願(並且理想情況下,明智地)安裝某些軟件組件,則無法在用戶計算機上執行應用程序。

我認爲最簡潔的方式可能是使用(signed!)Java小程序。

否則,你可以嘗試讓用戶註冊一個特定的協議,用合適的協議處理程序,那你讓下載和安裝在用戶的系統上攔截諸如exec://format%20C%2C ;-)

不幸的是一個鏈接, file://協議(可以理解)受到限制。例如,在Firefox中,如果您在地址欄中手動插入「C:\」並導航,則它將起作用(有點)。如果你點擊那些鏈接,它們會(有點)工作。複製不同安全上下文(例如Internet)中的文檔中的相同鏈接,並注意,它不起作用。

另一種可能性是使用REXECd(大多數平臺上可用)或某個克隆爲所有Intranet客戶端後門。然後,當用戶點擊時,您將命令從PHP發送到用戶的工作站。由於現在的個人電腦是多用戶平臺,因此您需要一些快速的工作來確定如何去做。例如。在Linux機器上,您必須運行具有適當所有權和DISPLAY值的X應用程序。

你也可以「識別」,用戶的平臺,讓用戶下載相應的批處理文件,無論是.sh.bat.cmd;但他們需要點擊下載,一個批准,一個打開可執行文件。

+0

啊,我沒有考慮過一些很棒的想法。我確信其中的一個會以某種形式或另一種形式爲我的情況工作。非常感謝反饋。 – inkswamp

0

您無法在客戶端上運行文件。這是一個很大的安全漏洞,瀏覽器不會允許你這樣做。

在windows上您可以使用ActiveX,但客戶端必須允許安裝ActiveX組件,並且您將遇到許多問題。

相關問題