2

フォームからユーザーを作成しています。フォームの一部は、チェックボックスを選択してユーザーのアクセス権を指定します。検証時に、これらの値を次のような文字列にグループ化します: 111 、 011 、 101 、chmod コードと同様.

私がやっている方法は非常に反復的であるように見えるので、それを行うためのより効率的な方法があるかどうか、またはこれが正しい方法であるかどうか疑問に思っています。

HTMLチェックボックスなど

<input type="checkbox" name="access[1]" id="ac1"/> <label for="ac1">Consumer</label>
<input type="checkbox" name="access[2]" id="ac2"/> <label for="ac2">Retailer</label>
<input type="checkbox" name="access[3]" id="ac3"/> <label for="ac3">Admin</label>

コントローラ

$access = $this->input->post('access');
$user_access = '';  
if(!empty($access[1])) {
    $user_access .= '1';
} else {
    $user_access .= '0';
}
if(!empty($access[2])) {
    $user_access .= '1';
} else {
    $user_access .= '0';
}
if(!empty($access[3])) {
    $user_access .= '1';
} else {
    $user_access .= '0';
}
4

2 に答える 2

1

アクセスレベルのタイプをデータベースのテーブルに保存します。

そうすれば、将来、ログインしたら、このような情報を確認できます。

$stmt = $pdo->prepare("SELECT access_level FROM user WHERE ID = :userId");
$stmt->execute(array(":userId", $userId));

$userAccessLevel = $stmt->fetch();

$stmt = $pdo->prepare("SELECT access_level FROM access");
$stmt->execute();

foreach($stmt->fetch() as $key => $value)
{
    $retailAccessLevel = array($key => $value);
}

if($userAccessLevel == $retailAccessLevel[0])
{
    // do stuff
}
else if($userAccessLevel == $retailAccessLevel[1]
{
    // do stuff
}
else
{
    // Tough luck user.
}

次に、簡単にアクセスできる変数を用意します。1 つはユーザー権限を持ち、もう 1 つは一連の権限を持ちます。これにより、型を簡単に変更したり、将来的にアクセス レベルを追加したりできます。すべてのコードを絶えず調べて追加情報を変更する必要はありません。私は PDO を使用しましたが、私よりも PDO を使用するより良い方法があることを覚えておいてください。これは単なる例でした。

于 2013-07-17T10:38:28.927 に答える