0

我有一个有 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> 
      '; } ?>
4

3 回答 3

1

您可以简单地将获胜者的 id 放入 中array,然后检查用户 id 是否在该数组中以显示链接。

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

if (in_array($id, $winners))
{
    echo "link";
}
于 2012-05-09T01:57:24.373 回答
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> 
      '; } ?>
于 2012-05-09T02:02:05.917 回答
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 将是“链接”,将包含三列 - id、链接和显示文本。表 2 将是“user_links”并包含两列 - linkId 和 userId。

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

于 2012-05-09T02:01:30.410 回答