フォームに完全に入力すると、データベースに既にある場合でも、メールの可用性チェックは失敗しますが、フィールドを空のままにしたり、必要とは反対の何かを入力したりすると、エラーが報告され、メールの可用性も報告されますそのメールはすでに使用されています。これにより、プロジェクトを進めることができなくなりました。
<?PHP
if(isset($_POST['submit']))
{
if (empty($_POST["firstName"]))
{$Err[] = "* First Name is required";}
else
{
$name = test_input($_POST["firstName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$Err[] = "Only letters are allowed in First Name";
}
}
if (empty($_POST["email"]))
{$Err[] = "* Email is required";}
else
{
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$Err[] = "Invalid email format";
}
else
{
$emailSQL = "SELECT email FROM userdetails WHERE email = ?";
$SQ = $conn->prepare($emailSQL) or die("ERROR: " . implode(":", $conn->errorInfo()));
$SQ->bindParam(1, $email);
$SQ->execute();
/* $result = $SQ->fetch(); */
$count = $SQ->rowCount();
if($count !== 0){
$Err[] = "Sorry, email is already in use by another user";
}}}
if (empty($_POST["surname"]))
{$Err[] = "* Surname is required";}
else
{
$surname = test_input($_POST["surname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$Err[] = "Only letters are allowed in Surname";
}
}
if (empty($_POST["password"]))
{$Err[] = "* Password is required";}
else
{
$password = test_input($_POST["password"]);
}
if (empty($_POST["userName"]))
{$Err[] = "* Username is required";}
else
{
$username = test_input($_POST["userName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$Err[] = "Only letters are allowed in Username";
}
}
if (count($Err > 0)) {
echo "<div id = 'errors'>";
foreach ($Err as $error) {
echo $error;
echo "<br />";
}
echo "</div>";
}
?>
これは、過去 5 日間の私の仕事を本当に窒息させています。前もって感謝します。