2
我創建了一個類'validate'來驗證兩個字段,即'firstname'和'lastname'。它不能正常工作,當字段爲空時顯示錯誤,但當我使用非空字段提交表單時,錯誤仍然存在。如何在表單提交上執行此操作?如何使用面向對象技術在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>
如果我要做一個驗證類,我不會把所有的檢查都放在一個方法中。相反,我會針對不同規則的不同驗證制定不同的方法。我會像CodeIgniter一樣編寫我自己的validation.php庫(基於我自己的偏好),或者我會使用CI的庫(這也很棒)。它使驗證更容易和可重用。 – mzcoxfde
你應該刪除''if($ _ SERVER [「REQUEST_METHOD」] ==「POST」){''檢查你的類,並將它包裹在實例化對象的地方。 – alistaircol
謝謝alistaircol。我是PHP和OOP的新手。我刪除了構造函數,而是編寫了一個設置函數。有用。 –