【发布时间】:2017-09-08 11:38:31
【问题描述】:
我创建了一个“验证”类来验证两个字段,即“名字”和“姓氏”。它工作不正常,当字段为空时显示错误,但是当我提交带有非空字段的表单时,错误仍然存在。如何在表单提交时执行此操作?
<?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 的库(这也很棒)。它使验证变得更加容易和可重用。
-
您应该删除
if($_SERVER["REQUEST_METHOD"] == "POST"){签入您的类并将其包裹在您实例化对象的位置。 -
感谢 alistaircol。我是 PHP 和 OOP 的新手。我删除了构造函数并写了一个 set 函数。它有效。
标签: php forms validation oop