'validate'クラスを作成して、 'firstname'と 'lastname'の2つのフィールドを検証しました。それは正常に動作していない、それはフィールドが空であるときにエラーを表示していますが、私は空ではないフィールドでフォームを送信すると、エラーはまだそこにあります。フォームの提出時にこれを実行する方法は?オブジェクト指向テクニックを使用してPHPでフォームフィールドを検証する方法
<?php
class validation {
public $firstName, $lastName, $errorFirstName = '', $errorLastName = '';
function __constructor($fName, $lName){
$this->firstName = $fName;
$this->lastName = $lName;
}
function check(){
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($this->firstName)){
$this->errorFirstName = 'First name is required';
} else {
$this->errorFirstName = 'Input is okay';
}
if(empty($this->lastName)){
$this->errorLastName = 'Last name is required';
} else {
$this->errorLastName = 'Input is okay';
}
}
}
}
$obj = new validation($_POST['firstname'], $_POST['lastname']);
$obj->check();
$errorF = $obj->errorFirstName;
$errorL = $obj->errorLastName;
?>
<!DOCTYPE html>
<html lang = "en-US" dir = "ltr">
<head>
<title>Home</title>
<meta charset = "UTF-8"/>
</head>
<body>
<form method = "POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<label>First Name: </label>
<input type = "text" name = "firstname" placeholder = "John"/>
<p class = "error"><?php echo $errorF;?></p>
<label>Last Name: </label>
<input type = "text" name = "lastname" placeholder = "Doe"/>
<p class = "error"><?php echo $errorL;?></p>
<input type="submit">
</form>
</body>
</html>
検証クラスを作成する場合、すべてのチェックを1つのメソッドに入れるわけではありません。代わりに、私は違う規則で異なるバリデーションのための異なるメソッドを作るでしょう。私はCodeIgniter(自分の好みに基づいて)のように独自のvalidation.phpライブラリを作成するか、CIのライブラリ(これも素晴らしい)を使用します。これにより、検証がより簡単になり、再利用可能になります。 – mzcoxfde
if($ _ SERVER ["REQUEST_METHOD"] == "POST"){class}クラスをチェックインし、オブジェクトをインスタンス化する場所を囲むようにしてください。 – alistaircol
ありがとうございました。私はPHPとOOPの初心者です。私はコンストラクタを削除し、代わりにset関数を書きました。できます。 –