2013-12-14 63 views
0

我想禁止用戶直接訪問我的網站上的PHP腳本。不允許直接訪問htaccess中的文件?

此腳本應改爲從網站上的其他腳本訪問。

例如,「somepage.php」可以調用「upload.php」,但用戶不允許鍵入mywebsite.com/upload.php。不幸的是,我無法將我的腳本移動到特定的文件夾。

+0

你確定你不想使用,如果死了;常規?您可以在其他腳本中定義該常量,然後可以添加其他腳本。 – v010dya

+0

如果可能,我想停止直接從htaccess訪問而不更改腳本。否則,我可能會考慮這種可能性。 – Giorgio

回答

0

根據我在其他答案中的評論,它已經變得很清楚,問題實際上提出了不同的問題。因爲我覺得其他答案與最初提出的問題有關,所以我不想編輯那個問題,而是增加這個額外的答案。

這將會回答:我如何停止從深層鏈接頁面顯示在我的iframe中的其他網站?

要正確地做到這一點,可以使用PHP會話。在主頁面中,您將啓動一個會話,如果該會話實際上已經啓動,則該用戶將只能查看「內部」頁面。

假設你有兩個頁面:index.php和inner.php。你會把下面的index.php文件的開頭:

if (session_status() !== PHP_SESSION_ACTIVE) session_start(); 

在inner.php你將有:

if (session_status() !== PHP_SESSION_ACTIVE) die("Deep linking detected"); 

,你絕對無法從htaccess的或任何其他地方做過這樣的事在頁面本身的代碼之外。

參考:(!定義(常量))http://www.php.net/manual/en/function.session-status.php

+0

你是對的Volodya,實際上是讓PHP解決方案工作,我測試了管理員是否登錄(使用會話)。感謝您的澄清和新的答案。 – Giorgio

+0

我很高興我能幫上忙。但是,將來請更明確地陳述你想要達到的目標。有時候最好按照序列來說明:「我希望用戶來到帶有此代碼的頁面1並看到它,但是當它們到來並加載2時,它們應該看到像這樣的錯誤」。 – v010dya

1

好吧,你可以做到這一點與以下:

<Files yourfile.inc.php> 
    order allow,deny 
    deny from all 
</Files> 

不過,我還是建議你這樣做從PHP中,要做到這一點,你添加到您的包含文件:

if (!defined('YOURPROGRAM')) 
{ 
    echo <<<EOT 
You cannot display this file 
EOT; 
    exit(1); 
} 

然後在您要訪問此文件中的文件,你需要做的:

define('YOURPROGRAM', 1); 

這樣你代碼可以在幾個平臺上共享,包括ngynx等。

參考文獻:http://htpasswdgenerator.com/apache/htaccess.html和MediaWiki代碼。

+0

感謝分享這兩個解決方案Volodya,我沒有考慮由不同平臺引起的可能問題。 – Giorgio

+0

我很抱歉再次提醒你,但我正在嘗試htaccess解決方案,它阻止了所有的訪問我的PHP文件(甚至從網站內的其他腳本)。我該如何才能保護這個文件,而不是直接訪問並讓其他腳本使用它? – Giorgio

+0

你是如何訪問它的?用require_once? – v010dya

相關問題