PHP関数を使用して登録フォームの入力を適切に検証するにはどうすればよいですか?

tonytonytony

私はPHPの初心者で、登録フォームを検証しようとしていますが、preg_match関数と電子メールフィルター関数が入力を検証していません。フォームが送信され、値がデータベースに挿入され、入力が検証されずに機能します。これが私のPHPです:

<?php

// define errors
$firstnameErr = $lastnameErr = $usernameErr = $passwordErr = $emailaddressErr = "";




if ($_SERVER["REQUEST_METHOD"] == "POST") {


  if (empty($_POST["firstname"])) {
    $firstnameErr = "First Name is required";
  } else {
    $firstname = ($_POST["firstname"]);
    // name only contains letters and space
    if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
      $firstnameErr = "Only letters and white space allowed";
    }
  }
    if (empty($_POST["lastname"])) {
    $lastnameErr = "Last Name is required";
  } else {
    $lastname= ($_POST["lastname"]);
    // name only contains letters and space
    if (!preg_match("/^[a-zA-Z ]*$/",$lastname)) {
      $lastnameErr = "Only letters and white space allowed";
    }
  }


 if (empty($_POST["emailaddress"])) {
    $emailaddressErr = "Email address is required";
  } else {
    $emailaddress = ($_POST["emailaddress"]);

    if (!filter_var($emailaddress, FILTER_VALIDATE_EMAIL)) {
      $emailaddressErr = "Invalid email format";
    }
  }


 if (empty($_POST["username"])) {
    $usernameErr = "A username is required";
  } else {
    $username = ($_POST["username"]);
  }



            if (empty($_POST["password"])) {
    $passwordErr = "A password is required";
  } else {

    $password = PASSWORD_HASH($_POST['password'], PASSWORD_DEFAULT);
        }

私のHTMLは以下の通りです。正規表現のために名はクライアント側で検証されると思いますが、preg_matchを使用してサーバー側でも検証する必要があります。私はこれを正しく行っているかどうかわかりません。

<form style="display:flex"; name="signupform" action="registration.php" method="post">


              <div class="container">
                <div class ="row justify-content-center">
                    <div class ="col-md-6">
                        <h1>Registration</h1>
                        <hr class="mb-3">

                        <label for="firstname"><b>First Name</b></label>
                        <input class= "form-control" type="text" placeholder="Enter your First Name" name="firstname" required>
                        <span class="error">* <?php echo $firstnameErr;?></span>

                        <label for="lastname"><b>Last Name</b></label>
                        <input class= "form-control" type="text" placeholder="Enter your Last Name" name="lastname" required>
                        <span class="error">* <?php echo $lastnameErr;?></span>

                        <label for="emailaddress"><b>Email Address</b></label>
                        <input class= "form-control" type="text" placeholder="Enter your Email Address" name="emailaddress" required>
                        <span class="error">* <?php echo $emailaddressErr;?></span>


                        <label for="username"><b>Username</b></label>
                        <input class= "form-control" type="text" placeholder="Enter your desired username" name="username" required>
                        <span class="error">* <?php echo $usernameErr;?></span>

                        <label for="password"><b>Password</b></label>
                        <input class= "form-control" type="password" placeholder="Enter a password" name="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" title="Must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters" required>
                        <span class="error">* <?php echo $passwordErr;?></span>
                        <em> Password must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters</em><br>


                        <hr class ="mb-3">
                        <input class="btn btn-block btn-primary" type="submit" name="create" value="Sign Up">
                        <hr class = "mb-3">


                    </div>

                </div>
            </div>  
    </form>
not_null

私はあなたのコードを単純化しました、これが役立つことを願っています:)

<?php
//define errors
$error_message = "";

$firstname="";
$lastname="";
$emailaddress="";
$username="";
$password="";

if(isset($_POST['create']) && $_SERVER["REQUEST_METHOD"] == "POST"){

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$emailaddress = $_POST['emailaddress'];
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);


if(empty($firstname) || $firstname == ""){
$error_message = "First Name is required!";
}
elseif( !preg_match("/^[a-zA-Z ]*$/",$firstname) ){
$error_message = "Only letters and white space allowed!";
}
elseif(empty($lastname) || $lastname == ""){
$error_message = "Last Name is required!";
}
elseif( !preg_match("/^[a-zA-Z ]*$/",$lastname) ){
$error_message = "Only letters and white space allowed!";
}
elseif(empty($emailaddress) || $emailaddress == ""){
$error_message = "Email address is required!";
}
elseif(!filter_var($emailaddress, FILTER_VALIDATE_EMAIL)){
$error_message = "Invalid email format!";
}
elseif(empty($username) || $username == ""){
$error_message = "Username is required!";
}
elseif(empty($password) || $password == ""){
$error_message = "Password is required!";   
}
else{
//insert query
}

}

?>

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form style="display:flex"; name="signupform" action="" method="post">


          <div class="container">
            <div class ="row justify-content-center">
                <div class ="col-md-6">
                    <span class="error">* <?php echo $error_message;?></span>
                    <h1>Registration</h1>
                    <hr class="mb-3">

                    <label for="firstname"><b>First Name</b></label><br>
                    <input class= "form-control" type="text" placeholder="Enter your First Name" name="firstname" value="<?php echo $firstname; ?>"><br>


                    <label for="lastname"><b>Last Name</b></label><br>
                    <input class= "form-control" type="text" placeholder="Enter your Last Name" name="lastname" value="<?php echo $lastname; ?>"><br>


                    <label for="emailaddress"><b>Email Address</b></label><br>
                    <input class= "form-control" type="text" placeholder="Enter your Email Address" name="emailaddress" value="<?php echo $emailaddress; ?>"><br>


                    <label for="username"><b>Username</b></label><br>
                    <input class= "form-control" type="text" placeholder="Enter your desired username" name="username" value="<?php echo $username; ?>"><br>


                    <label for="password"><b>Password</b></label><br>
                    <input class= "form-control" type="password" placeholder="Enter a password" name="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" title="Must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters" value="<?php echo $password; ?>"><br>

                    <em> Password must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters</em><br>


                    <hr class ="mb-3">
                    <input class="btn btn-block btn-primary" type="submit" name="create" value="Sign Up" style="cursor: pointer;">

</body>
</html>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Railsの検証:数値フィールドの無効な非数値入力を適切に検証するにはどうすればよいですか?

分類Dev

Rails検証を使用して、「LearnRuby」などのフレーズをホワイトリストに登録するにはどうすればよいですか。

分類Dev

jQueryを使用して挿入されたajaxフォームで複数の検証を行うにはどうすればよいですか?

分類Dev

jQueryを使用してフォームの入力フィールドの変更を検出するにはどうすればよいですか?

分類Dev

JavaScriptを使用してフォームを検証するにはどうすればよいですか?

分類Dev

ASP.NET Razor構文を使用してブートストラップv4アルファのフォーム入力検証クラスを適用するにはどうすればよいですか?

分類Dev

DJangoのBootstrapを使用してユーザー登録フォームのスタイルを設定するにはどうすればよいですか?

分類Dev

TypeScript:Object.entriesを使用してこの関数に適切な入力を追加するにはどうすればよいですか?

分類Dev

この検証関数をすべての入力に適用するにはどうすればよいですか?

分類Dev

Rの入力として複数のdata.framesを使用してカスタム関数を適用するにはどうすればよいですか?

分類Dev

ユーザーからのフォーム入力を使用してショートコードを登録するにはどうすればよいですか?

分類Dev

複数の入力ファイルでPHPの「SWITCH」関数を使用して、HTMLフォームから複数のファイルをアップロードするにはどうすればよいですか?

分類Dev

Scannerクラスを使用してユーザーの入力を登録するメソッドを作成するにはどうすればよいですか?

分類Dev

jQueryとhtmlを使用してhtmlフォームを送信するときに検証関数がエラーをスローした場合に他の関数のトリガーを停止するにはどうすればよいですか?

分類Dev

Dataloaderを使用して適切な形状の入力を作成するにはどうすればよいですか?

分類Dev

Crispyフォームを使用して入力テキストにセッション変数を入力するにはどうすればよいですか?

分類Dev

検証を使用してフォーム内のすべてのフィールドに等しい幅を与えるにはどうすればよいですか?

分類Dev

ディレクティブReactiveフォームを使用して検証ルールを適用するにはどうすればよいですか?

分類Dev

フォームの数値入力を変数データとして使用するにはどうすればよいですか?

分類Dev

mechanizeを使用して検索フォームに入力し、結果を取得するにはどうすればよいですか?

分類Dev

すべてのWebフォームで1つのjquery検証関数を再利用するにはどうすればよいですか?

分類Dev

PHP 7のDockerコンテナにボリュームの場所を適切に登録するにはどうすればよいですか?

分類Dev

数字または数字のLaravel検証を使用して自動数値入力を検証するにはどうすればよいですか?

分類Dev

リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

分類Dev

フック経由の正規表現を使用して、reactで入力フィールドを検証するにはどうすればよいですか?

分類Dev

parsley.jsを使用してdiv内のすべてのフォームフィールドを検証するにはどうすればよいですか?

分類Dev

Flaskを使用してHTMLフォームからPython関数入力を渡すにはどうすればよいですか?

分類Dev

PHPのHTMLフォームからの入力値を処理してMySQLクエリに挿入するにはどうすればよいですか?

分類Dev

このSwift関数を適切にフォーマットして配列をマップするにはどうすればよいですか?

Related 関連記事

  1. 1

    Railsの検証:数値フィールドの無効な非数値入力を適切に検証するにはどうすればよいですか?

  2. 2

    Rails検証を使用して、「LearnRuby」などのフレーズをホワイトリストに登録するにはどうすればよいですか。

  3. 3

    jQueryを使用して挿入されたajaxフォームで複数の検証を行うにはどうすればよいですか?

  4. 4

    jQueryを使用してフォームの入力フィールドの変更を検出するにはどうすればよいですか?

  5. 5

    JavaScriptを使用してフォームを検証するにはどうすればよいですか?

  6. 6

    ASP.NET Razor構文を使用してブートストラップv4アルファのフォーム入力検証クラスを適用するにはどうすればよいですか?

  7. 7

    DJangoのBootstrapを使用してユーザー登録フォームのスタイルを設定するにはどうすればよいですか?

  8. 8

    TypeScript:Object.entriesを使用してこの関数に適切な入力を追加するにはどうすればよいですか?

  9. 9

    この検証関数をすべての入力に適用するにはどうすればよいですか?

  10. 10

    Rの入力として複数のdata.framesを使用してカスタム関数を適用するにはどうすればよいですか?

  11. 11

    ユーザーからのフォーム入力を使用してショートコードを登録するにはどうすればよいですか?

  12. 12

    複数の入力ファイルでPHPの「SWITCH」関数を使用して、HTMLフォームから複数のファイルをアップロードするにはどうすればよいですか?

  13. 13

    Scannerクラスを使用してユーザーの入力を登録するメソッドを作成するにはどうすればよいですか?

  14. 14

    jQueryとhtmlを使用してhtmlフォームを送信するときに検証関数がエラーをスローした場合に他の関数のトリガーを停止するにはどうすればよいですか?

  15. 15

    Dataloaderを使用して適切な形状の入力を作成するにはどうすればよいですか?

  16. 16

    Crispyフォームを使用して入力テキストにセッション変数を入力するにはどうすればよいですか?

  17. 17

    検証を使用してフォーム内のすべてのフィールドに等しい幅を与えるにはどうすればよいですか?

  18. 18

    ディレクティブReactiveフォームを使用して検証ルールを適用するにはどうすればよいですか?

  19. 19

    フォームの数値入力を変数データとして使用するにはどうすればよいですか?

  20. 20

    mechanizeを使用して検索フォームに入力し、結果を取得するにはどうすればよいですか?

  21. 21

    すべてのWebフォームで1つのjquery検証関数を再利用するにはどうすればよいですか?

  22. 22

    PHP 7のDockerコンテナにボリュームの場所を適切に登録するにはどうすればよいですか?

  23. 23

    数字または数字のLaravel検証を使用して自動数値入力を検証するにはどうすればよいですか?

  24. 24

    リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

  25. 25

    フック経由の正規表現を使用して、reactで入力フィールドを検証するにはどうすればよいですか?

  26. 26

    parsley.jsを使用してdiv内のすべてのフォームフィールドを検証するにはどうすればよいですか?

  27. 27

    Flaskを使用してHTMLフォームからPython関数入力を渡すにはどうすればよいですか?

  28. 28

    PHPのHTMLフォームからの入力値を処理してMySQLクエリに挿入するにはどうすればよいですか?

  29. 29

    このSwift関数を適切にフォーマットして配列をマップするにはどうすればよいですか?

ホットタグ

アーカイブ