我有一个包含存储我网站导航链接的包含文件。我刚刚建立了一个仅限成员的部分,我想这样做,只有当有人登录时,导航栏中的某些链接才可见。有什么好办法可以做到这一点?
答案 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,并根据该显示/隐藏导航块...