0

PHPのユーザー/ログインパネルに少し問題があります。ゲストが自分のパネルに私のページを見に来た場合、ログインと登録のオプションがあります。ユーザーには、次のようなメンバーパネルが表示されます。

(いくつかのIF関数があり、ベースにセッションIDがないことを確認してから、ゲストのオプションを表示します)

                  <?php
        else:
        ?>

<div> 
<h1>Members panel</h1>
<p>You can put member-only data here</p>
<p><a href="registered.php">View a member page</a></p>           
<p><a href="changepass.php">Edit your password</a></p>
<p>-----</p>
<a href="?logoff">Log off</a>

現在:ユーザーのいるデータベースには、ROLEという名前の列があります。ユーザーや管理者のような役割があります。管理者にそのパネルの別のセクションを表示させたい。私は次のような別のスイッチ/ケースとIF命令を試していました:

                  <?php
                  if (isset($_SESSION['role']) && ($_SESSION['role'] =='admin')); 
                  {    
                  }
                  ?>
                  (there is member panel) 
                  <div class="left right">      
        <h1>Administrator panel</h1>
        <a href="admin.php">View an admin page</a>

しかし、それは機能しません。(私にはセッション可変の役割があります。)何かアイデアはありますか?

4

2 に答える 2

1

';'を削除してみてください 後の場合

<?php
  if (isset($_SESSION['role']) && ($_SESSION['role'] =='admin')) {    
?>
<!--ADMIN PANEL GOES HERE-->
<?php
    } else {
?>
<!---USER PANEL GOES HERE-->
<?php
    }
?>
于 2012-08-09T10:57:54.803 に答える
1

まず、ビューとコントロールを分離する必要があります。つまり、htmlファイルにphpコードを入れないでください。これをもっときれいに保つための可能性はたくさんあります。たとえば、SMARTYフレームワークは非常に人気があります。

次に、役割は$ _SESSIONにどのように書き込まれますか(そしてその理由は?)。db-recordsetを渡す方がよいでしょう。擬似:

$rs = db->query(SELECT * FROM users ORDER BY userID)
if ($rs[&currentUserID]['role'] == 'admin') {
  ...
}

3番目:phpとhtmlをいじる場合は、少なくともphpを別の領域(明らかに出力の前)に生成し、たとえばヒアドキュメント構文を使用してHTMLを出力する必要があります。

<?php
  // do any PHP stuff here
  $panel = 'user logged in';
  if (admin) {
    $panel .= "i'm an admin";
  }
echo <<<OUT
<!DOCTYPE html>
<html>
  ... // put all HTML in here and use variables

  <body>
    <div>$panel</div>
  </body>
</html>
OUT;
?>

PS:あなたの質問はそれとは何の関係もないのでcssタグを削除してください

于 2012-08-09T11:33:18.597 に答える