对非成员隐藏导航链接


Hide Navigation Links From Non-Members

>我有一个包含文件,用于存储我网站的导航链接。我刚刚建立了一个仅限会员的部分,我想这样做,以便导航栏中的某些链接仅在有人登录时才可见。有哪些好方法可以做到这一点?

这完全取决于您如何检查用户是登录还是访问者,如果您有跟踪的变量

例如,$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" ?>

包含适当的链接

请记住对成员内部$isLoggedIn进行额外检查.php以及!

既然您说您已经建立了一个仅限会员的部分,我想您已经在使用会话来跟踪用户是否已登录。在包含文件中,检查用户的会话是否存在并显示相应的链接。

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

如果你在数据库中有 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);

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