2013-07-22 109 views
0

我有以下問題: 我在plesk下運行的服務器上有一些大文件,我想從常規plesk備份中排除它們,但就我而言看到這是不可能的。PHP:託管在另一臺服務器上的文件

因此,我想將這些大文件存儲在另一臺服務器上,並通過運行在第一臺服務器上的網絡應用程序提供服務。

問題是應該爲用戶隱藏文件的url。現在我已經實現了與PHP的頭()。 當然,他們應該直接提供給用戶,而不是通過第一臺服務器,因爲這些文件真的很大!

總之,我需要的是,當用戶點擊文件下載鏈接時,他應該從第二個服務器接收文件,但文件url不應該被他看到。

進出口使用我的應用程序和Apache的Web服務器, PHP的我將是對如何處理這個問題的任何建議感激,

哈利

編輯:我忘了提,用戶有從第一臺服務器接受下載文件。這就是爲什麼我需要隱藏文件的URL。

回答

0

可以使用include或require_once函數從這些文件中獲取數據,而不實際「查看」文件。

+0

我忘了提及下載文件的用戶必須有資格/允許下載它。這些信息存儲在第一臺服務器的數據庫中。 –

+0

如果您使用數據庫只使用mysqli_connect命令,並且可以在其中輸入用戶名/密碼。如果您希望該用戶有權下載該文件,請先讓他們登錄。請記住使用POST而不是GET來隱藏URL中的信息。 – Llama

0

如果用戶接收從server2.domain.com一個文件,那麼有沒有辦法讓除非文件經過server.domain.com他們認爲它是從server.domain.com來

如果用戶直接從第二個服務器請求文件,然後他們將能夠找出它來自哪裏。

從用戶完全隱藏其他服務器證據的唯一真正方法是通過服務器1代理文件。您可以使用代理服務器或通過使用php讀取和回顯文件來執行此操作。

+0

hm好的,事情是,用戶應該只能訪問這個文件請求,如果他有他的帳戶,服務器不應該隱藏,但文件的url本身。如果我應該服務的第二臺服務器的URL沒有知道用戶是否有資格下載文件,我可以將會話數據傳遞給第二臺服務器嗎? –

+0

使文件下載url成爲連接到第一臺服務器數據庫的php腳本,以查看他們是否有權下載文件。由於它們是不同的服務器,除非將會話數據存儲在數據庫中,否則它們將不會共享會話數據。另一種方法是在生成URL時在URL中包含加密的過期時間,並在允許它們下載文件之前在服務器2上對其進行解碼。 – Anigel

+0

這似乎是一個合法的解決方法。我認爲它只能在第一臺服務器上以某種方式實現,只需使用curl或者其他方式來獲得文件,或者這意味着該文件也會「通過第一臺服務器」呢? –

相關問題