0

私は学校の私のプロジェクトチームのために時間登録システムを書いています。すべてがほとんど機能していますが、ユーザー権限の検証が機能していないようです。

検証は、user テーブル内の acctype フィールドで行われます。0 (ゲスト) の場合は時間のリストのみを表示できます。1 (スペシャリスト) の場合は自分の時間を追加でき、2 (プロジェクトマネージャー) の場合はユーザーが送信した時間を確認できます。

最初は $account クエリのみを使用していましたが、すべてを選択する代わりに acctype のみを選択しました。

誰かが私が間違っていることを知っていますか?

$cookie = $_COOKIE['user'];
$account = mysqli_query($conn, "SELECT * FROM user WHERE user = '" . $cookie . "'");
$acctype = mysqli_fetch_assoc($account->acctype);

if(isset($cookie) && $acctype >= 1) {

} else {

}

ジョナサン

4

1 に答える 1

1

ここにはいくつか問題があると思います。

  • Cookie が設定されているかどうかを確認する前に、Cookie を読み取っています。それは間違いです。Cookie があるかどうかを確認し、それを読み込む必要があります。別の変数を割り当てる必要もありません。

注: コメントで述べたように、ユーザー データは Cookie ではなくセッションにある必要があります。

  • あなたのDBスキーマがどのように見えるかはわかりませんが、あなたのクエリはSELECT * FROM user.$acctypeこれは明らかに整数ではありません。

acctype修正は、クエリを実行して結果を取得し、返された行を比較して、その部分のみをチェックすることだと思います。

if ($row['acctype'] >= 1){

}

ドキュメント: http://us1.php.net/mysqli_fetch_assoc

于 2014-02-19T15:57:00.560 に答える