我想禁止用户直接访问我的网站上的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