0

PHP と MySQL の学習を始めてしばらく経ちましたが、まだ初心者だと思っています。
簡単な登録フォームを作成し、それを検証するための PHP コードも作成しました...
目標を達成するためのより適切でスマートな方法があるかどうかを知りたいです。私のフォームは、、、の
5 つの入力に基づいており、POST、その内容、およびボタンの値を送信します。サブミットの実行時に、次の条件をチェックする必要があります。 usernamepasswordrepeat passwordemailrepeat email

  • すべての入力が空の場合、「すべてのフィールドが空です」というエラーを表示します
  • すべてではなく 1 つ以上の入力が空の場合、「一部のフィールドが空です」というエラーを表示します
  • username長さは 20 文字までにする必要があります
  • passwordそしてrepeat password等しい必要があります
  • パスワードは 8 ~ 20 文字にする必要があります
  • emailrepeat email有効な電子メールである必要があり、等しい必要があります
  • 問題のエラーメッセージを表示する

上記のすべてを実行するこの関数 (クラス内にあります) を作成しましたが、反復コードを減らすために改善できますか? これに使用できる他の PHP 関数はありますか? 最後に、私のコードはどの程度安全ですか?

はい、これ!

public function processRegisterInfo($POSTArray = array())
{   
    if (count(array_filter($POSTArray)) > 1) // button don't have to be counted
    {
        if (count(array_filter($POSTArray)) < 6)
        {
            $this->errorMsg = "Some fields are empty";
            return FALSE;
        }
        else
        {
            $username = $POSTArray["username"];
            $password = $POSTArray["password"];
            $repPassword = $POSTArray["repPassword"];
            $email = $POSTArray["email"];
            $repEmail = $POSTArray["repEmail"];

            $isValid = TRUE;

            // Checking username length
            if (strlen($username) > 20)
            {
                $this->errorMsg .= " Username too long.";
                $isValid = FALSE;
            }

            // Checking password length and equality
            if (strcmp($password, $repPassword) == 0)
            {
                if (strlen($password) < 8)
                {
                    $this->errorMsg .= " Password must be at least 8 characters.";
                    $isValid = FALSE;
                }
                else if (strlen($password) > 20)
                {
                    $this->errorMsg .= " Password must be max 20 characters long.";
                    $isValid = FALSE;
                }
            }
            else
            {
                $this->errorMsg .= " Passwords don't match.";
                $isValid = FALSE;
            }

            // Checking email validation and equality
            if (strcmp($email, $repEmail) == 0)
            {
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    $this->errorMsg .= " Email provided is not valid.";
                    $isValid = FALSE;
                }
            }
            else
            {
                $this->errorMsg .= " Emails don't match.";
                $isValid = FALSE;
            }

            if (isset($this->errorMsg) && !empty($this->errorMsg))
                $this->errorMsg = substr($this->errorMsg, 1);

            return $isValid;
        }
    }
    else
    {
        $this->errorMsg = "All fields are empty";
        return FALSE;
    }
}

手伝ってくれてどうもありがとう!:)

4

1 に答える 1