基于登录状态PHP的条件显示链接

时间:2012-05-09 01:45:31

标签: php mysql login

我有一个有200名成员的小网站。以下是登录/注销链接的代码,在登录时显示“更改密码”,“报告”和“注销”链接。未登录时,将显示“登录”和“忘记密码”链接。

最近我们举办了一场有14名获胜者的比赛,而我想要实现的目标是将代码链接到只有14位获奖者才能看到的代码,而不是剩下的成员。

我不太确定从哪里开始,是否可以在此代码中为14个用户ID /电子邮件地址添加条件,或者我最好将新字段放入用户的数据库?任何帮助或推动正确的方向将不胜感激!

     <?php # loginnav.php> 

     // Display links based upon the login status. 

     // Show LOGIN links if this is the LOGOUT page. 

      if (isset($_SESSION['user_id']) 
      AND (substr($_SERVER['PHP_SELF'], -10) 
      !='logout.php')) 

      { echo 
      '<li><a href="logout.php">Logout</a></li>
       <li><a href="change_password.php">Change Password</a></li> 
       <li><a href="report.php">Report</a></li>  
     '; } else { 

     // Not logged in.   
     echo 
     ' <li><a href="login.php">Login</a></li> 
     <li><a href="forgot_password.php">Forgot Password?</a></li> 
      '; } ?>

3 个答案:

答案 0 :(得分:1)

您只需将获奖者的ID放在array中,然后检查用户ID是否在该数组中以显示该链接。

$winners = array(1, 2, 3, 4, 5);

if (in_array($id, $winners))
{
    echo "link";
}

答案 1 :(得分:1)

     $winners_array = array('userid1', 'userid2', 'userid3', 'userid4', ...);  
          // This array contains users IDs who are winners
          // You can write it manualy right intj the login file, 
          //include it from external file or form from your Data Base

    if (isset($_SESSION['user_id']) 
      AND (substr($_SERVER['PHP_SELF'], -10) 
      !='logout.php')) 
      { 
      echo 
      '<li><a href="logout.php">Logout</a></li>
       <li><a href="change_password.php">Change Password</a></li> 
       <li><a href="report.php">Report</a></li>  
      '; 
      if(in_array($_SESSION['user_id'], $winners_array)){
         // If current ID is in winners list we add special link for him
         echo '<li><a href="winer_page.php">Winner link</a></li>';
      }
      } else { 
     // Not logged in.   
     echo 
     ' <li><a href="login.php">Login</a></li> 
     <li><a href="forgot_password.php">Forgot Password?</a></li> 
      '; } ?>

答案 2 :(得分:0)

一个选项是添加用户ID的条件检查,如果它与您的ID列表匹配,请添加链接。这段代码的缺点是它是硬编码的,如果您计划在未来为某些成员设置更多竞赛或其他链接,则可能会成为维护问题。 (你最终会得到几个代码块)

首先将您的获胜者ID设置为数组,如下所示:

$winningIds = array(1,2,3,4,5,6,7,8,...);

然后在您打印链接的echo块中执行以下操作:

if (in_array($_SESSION['user_id'], $winningIds))
{
     echo '<li><a href="newlink.php">New Link</a></li> ';
}

编辑:我意识到我没有提到我正在考虑的其他选项,即存储一个“独特”的列表。每个用户的数据库中的链接。然后在echo块之后,为每个用户打印唯一链接。

我将此视为另外两张桌子。表1将是&#39;链接&#39;并将有三列 - id,link和display text。表2将是&#39; user_links&#39;并将包含两列 - linkId和userId。

您加入表并拥有链接(这是您的href)并显示user_links表中关联的文本显示。