我想禁止用戶直接訪問我的網站上的PHP腳本。不允許直接訪問htaccess中的文件?
此腳本應改爲從網站上的其他腳本訪問。
例如,「somepage.php」可以調用「upload.php」,但用戶不允許鍵入mywebsite.com/upload.php。不幸的是,我無法將我的腳本移動到特定的文件夾。
我想禁止用戶直接訪問我的網站上的PHP腳本。不允許直接訪問htaccess中的文件?
此腳本應改爲從網站上的其他腳本訪問。
例如,「somepage.php」可以調用「upload.php」,但用戶不允許鍵入mywebsite.com/upload.php。不幸的是,我無法將我的腳本移動到特定的文件夾。
根據我在其他答案中的評論,它已經變得很清楚,問題實際上提出了不同的問題。因爲我覺得其他答案與最初提出的問題有關,所以我不想編輯那個問題,而是增加這個額外的答案。
這將會回答:我如何停止從深層鏈接頁面顯示在我的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
好吧,你可以做到這一點與以下:
<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代碼。
你確定你不想使用,如果死了;常規?您可以在其他腳本中定義該常量,然後可以添加其他腳本。 – v010dya
如果可能,我想停止直接從htaccess訪問而不更改腳本。否則,我可能會考慮這種可能性。 – Giorgio