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

1つのオプションは、ユーザー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> ';
}

編集:私が考えていた他のオプションについては言及しなかったことに気づきました。それは、各ユーザーのデータベースに「一意の」リンクのリストを保存することです。次に、エコーブロックの後に、ユーザーごとに一意のリンクを印刷します。

私はこれを2つの追加のテーブルとして想定しています。表1は「リンク」であり、id、link、displaytextの3つの列があります。表2は「user_links」であり、linkIdとuserIdの2つの列が含まれます。

テーブルを結合し、user_linksテーブルに関連付けられているリンク(これはあなたのhref)と表示テキストを表示します。

于 2012-05-09T02:01:30.410 に答える