0

特定のパラメーターとユーザー資格情報をチェックする条件を作成しようとしています。ユーザーが 2 つの資格情報のいずれかを持っておらず、正しいパラメーターを渡すと、安全なログイン画面に転送されます。

これは私がうまくいったことです:

if ($request->getParameter('profile_type') == 'foo' && !$this->getUser()->isAdmin())  {
      return $this->redirect('sfGuardAuth/secure');
    }

しかし、新しいユーザーグループを追加したので、次のようなものが必要です:

if ($request->getParameter('profile_type') == 'foo' && (!$this->getUser()->isAdmin() || !$this->getUser()->isFaculty())  {
      return $this->redirect('sfGuardAuth/secure');
    }

したがって、管理者または教職員でない場合は、リダイレクトを取得します。

これは構文またはロジックの問題ですか?

アップデート

これは機能していますが、論理的に間違っているようです

if (($request->getParameter('profile_type') == 'foo') && (!$this->getUser()->isAdmin() && !$this->getUser()->isFaculty())) {
            return $this->redirect('sfGuardAuth/secure');
    }
4

2 に答える 2

1
(!$this->getUser()->isAdmin() || !$this->getUser()->isFaculty())

する必要があります

!($this->getUser()->isAdmin() || $this->getUser()->isFaculty())

更新、詳細説明:両方の場合はユーザーをリダイレクトしてfalseisAdminisFaculty返し、どちらかがyesの場合はリダイレクトしないようにします。

両方がfalseの場合:

!(false || false)===== >リダイレクト===== !false>リダイレクトなしtrue
!(true || false)!truefalse

于 2012-06-08T08:06:01.133 に答える
0

質問に答えるために、これが私が仕事をしなければならないことです:

if (($request->getParameter('profile_type') == 'foo') && (!$this->getUser()->isAdmin() && !$this->getUser()->isFaculty())) {
            return $this->redirect('sfGuardAuth/secure');
    }

OR/AND 演算子が目的の結果を得るためにどのように機能しているかはわかりませんが、機能するため、妥協は問題ありません。

于 2012-07-26T21:43:59.677 に答える