隐藏非会员的导航链接

时间:2011-05-19 03:29:42

标签: php

我有一个包含存储我网站导航链接的包含文件。我刚刚建立了一个仅限成员的部分,我想这样做,只有当有人登录时,导航栏中的某些链接才可见。有什么好办法可以做到这一点?

4 个答案:

答案 0 :(得分:2)

这取决于您如何检查用户是否已登录或访问者,如果您有一个跟踪的变量

例如。 $ isLoggedIn用于跟踪用户是否已登录,您可以执行以下操作

<a href='home'>Home</a> |
<?php if ($isLoggedIn) { ?>
<a href='member.php'>Member Area</a> |
<?php } ?>
<a href='about'>About Us</a>

对于不同的用户组,您可能在数据库中有一个名为member_group的字段,其中member_group的编号。你可以拥有

<?php include "nav_group_{$memberGroup}.php" ?>

包含适当的链接

还要记得在member.php中对$ isLoggedIn进行额外的检查!

答案 1 :(得分:0)

由于您说您已经构建了仅限成员的部分,我猜您已经在使用会话来跟踪用户是否已登录。在包含文件中,检查用户的会话是否存在并显示相应的链接。

作为一个更强大的解决方案,如果您希望向不同的登录用户显示不同的链接集,您可以设置一个数据库表,其中包含每个用户或用户组的标志,指示应为其显示哪些链接。在包含文件中,您将检查用户的权限并显示相应的链接。

答案 2 :(得分:0)

如果您在数据库中有html源,则可以使用preg_replace:

$html = preg_replace('#<a[^>]*>.*?</a[^>]*>#is','<span class="linknomember">Only members...</span>',$html);

如果您有bbcode:

$html = preg_replace('#\[url[^\]]*].*?\[/url[^\]]*\]#is','<span class="linknomember">Only members...</span>',$html);

太,如果你想禁止一些网址:

$html = preg_replace('#http[s]?://(.*?)+[\b]#is','<span class="linknomember">Only members...</span>',$html);

答案 3 :(得分:0)

检查会话中是否存在用户名/用户ID,并根据该显示/隐藏导航块...