2013-12-14 48 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

相关问题