PHP と MySQL の学習を始めてしばらく経ちましたが、まだ初心者だと思っています。
簡単な登録フォームを作成し、それを検証するための PHP コードも作成しました...
目標を達成するためのより適切でスマートな方法があるかどうかを知りたいです。私のフォームは、、、の
5 つの入力に基づいており、POST、その内容、およびボタンの値を送信します。サブミットの実行時に、次の条件をチェックする必要があります。 username
password
repeat password
email
repeat email
- すべての入力が空の場合、「すべてのフィールドが空です」というエラーを表示します
- すべてではなく 1 つ以上の入力が空の場合、「一部のフィールドが空です」というエラーを表示します
username
長さは 20 文字までにする必要がありますpassword
そしてrepeat password
等しい必要があります- パスワードは 8 ~ 20 文字にする必要があります
email
repeat 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;
}
}
手伝ってくれてどうもありがとう!:)