0

基本的にここでやろうとしているのは、顧客のログイン詳細を使用してデータベースのテーブルから読み取り、この情報に一致するレコードを取得することです。このテーブルには、「AccountType」という列があり、平均的なユーザーと管理者を区別します。この列が 1 の場合、平均的なユーザーです。この列が 2 の場合、マネージャーです。

これをコードに実装する際に問題が発生しました。以下は、ログイン用のプロセス スクリプトのスニペットです。

<?php

***session_start()

$query = mysql_query("SELECT * FROM accounts WHERE username='$username' and password='$password'", $db) or die ("Query failed with error: ".mysql_error());

$count=@mysql_num_rows($query);

if(***$count == 1)
    {
    ***$user_row = mysql_fetch_array($result)

        $userid = $user_row["userid"];    
        $_SESSION['userid'] = $userid;

        $customername = $user_row["customername"];    
        $_SESSION['customername'] = $customername;

        $AccountType = $user_row["accounttype"];

        if ($AccountType == 2)
        { 
            $_SESSION['manager'] = $AccountType;
        }

これに応じて、すべてのページに含まれるログインスクリプトをチェックすると、アカウントの種類に応じてナビゲーションに特定のリンクが表示されます。ユーザーの場合は通常のリンクにアクセスできますが、マネージャーの場合はアクセスできます以下は、管理機能のコード スニペットです。

***session_start();
if (***isset($_SESSION['userid'])) 
{
    $employeeid = $_SESSION['userid'];
    $firstname = $_SESSION['customername'];

    if (***isset($_SESSION['manager'])) 
    {
        $User_Options .='Manager links go here';
    }

    else
    {
    $Links .='Normal Links go here';
    }   

}

これは単なる基本的な切り詰められたバージョンですが、それは私が達成しようとしていることの基礎を提供します. while ループを使用してセッションを上書きしていると推測していますが、これは理解していますが、検索している情報のレコードは 1 つしかありません。ある程度は機能しますが、AccountType が 1 の場合でも、2 のオプションが表示されます。

この問題を解決するために、誰でも私をさらに助けることができますか? ありがとうございました!

4

1 に答える 1

1

ログインフォームで次のようなものを使用します。

$_SESSION['manager'] = false;
if ($AccountType == 2) {
  $_SESSION['manager'] = true;
}

じゃあ後で:

if ($_SESSION['manager']) {
  // display manager-only options
} else {
  // display user-only options
}
// Display options for everyone here
于 2012-09-07T21:24:06.933 に答える