2009-09-19 142 views
5

我是新来的dr​​upal。这是一个非常愚蠢的问题,我猜。 我已经启用了PHP过滤模块,以便我可以使用自己的PHP代码创建一个新页面。我希望只有经过身份验证的用户才能访问此特定页面,匿名用户不可见。我怎样才能做到这一点?我可以在drupal中为单个页面设置权限吗?还是有可能确定一个匿名用户试图通过PHP代码访问当前页面?设置页面访问权限在drupal

回答

5

既然你已经提到你是Drupal的新手,谨慎的一句话 - 为你的自定义代码使用PHP过滤器被认为是不好的做法。这是一个黑客攻击,这是一个安全问题。

编写自定义模块好多了,它可以实现自己的自定义权限,可以检查等等。有一个很好的sample module,你可以看看它看起来应该如何。显然,请查阅手册。这听起来并不难。

但回到你的问题。你可以在你的经过PHP过滤的页面中放入以下行:

global $user; 

这会让你访问一个代表当前用户的对象。 $user->roles是一个表示用户角色的数组。您可以检查它是否有authenticated user(或稍微好一点 - 您创建的自定义角色)。

+0

谢谢Eli :)对不起,我很感谢你。我非常重视你的谨慎言辞:)你的建议和Jordi的代码使它变得非常简单!尽管我很快用“简单访问”模块取代了它。它非常简单,完全符合我的要求。我将在未来使用您的链接创建自己的模块的示例模块。它是一个好的首发! – Nikhil 2009-10-14 09:49:15

2

为了防止匿名用户访问一个页面,您可以使用下面的PHP代码:

<?php 
// we have to access the content of the global-scope variable $user 
global $user; 

//Checking if the user is registered 
if (in_array('authenticated user', $user->roles)==FALSE) { 
header('Location:/content/restrictedaccess') ; 
} 
?> 

//页内容

- 更多关于我如何创建我的网站使用Drupal此信息:http://modeling-languages.com/content/how-i-created-site-drupal

4

阅读以上答案后,您可能还会考虑现成的simple access模块。它符合我的要求,如果您要避免使用PHP过滤,并且不想创建自己的模块(无论出于何种原因),则可以查看simple access

+0

谢谢!这帮了我。 – BigJoe714 2010-05-17 13:45:37