验证表格OOP

时间:2018-11-03 10:18:02

标签: php html oop

我无法确保所有的表单输入都填写在OOP中。通常我可以做到这一点。但是,我在使用OOP进行编程方面是新手。我要确保当我单击按钮时。

它将控制我所有的表格是否为空。如果为空,则必须回显一条消息(该消息在荷兰语中,但基本上意味着您仍然有未填写的输入内容)。但是,它不起作用。该消息始终显示,即使我确实填写了输入内容并单击“提交”。我不知道我在做什么错。

我的代码:

<?php

  class UserForm{

//Making properties to later use
private $Vvoornaam;
private $Vachternaam;
private $Vemail;
private $Vbericht;
private $Bsubmit;
public function __contruct() {

//Giving the properties a value

$this->Vvoornaam = $_POST["voornaam"];
$this->Vachternaam = $_POST["achternaam"];
$this->Vemail = $_POST["email"];
$this->$Vbericht = $_POST["bericht"];
$this->$Bsubmit = $_POST["submit"];
}

public function Index() {

//Checking if a message has been posted yes or no. If yes, then execute the code from line 21 to 41

if(isset($_POST[$this->Bsubmit]) && empty($this->Vvoornaam) || empty($this->Vachternaam) || empty($this->Vemail) || empty($this->Vbericht)) {
    echo "U moet nog al uw gegevens invullen";
  }
}
}


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

   $userForm = new UserForm(); $userForm->Index(); 

}

?>

您所看到的问题是,当您提交并且输入为空时,应该会出现此消息。但是,此消息始终存在。

我希望你们能帮助我。那就太好了!

Newest notice after putting a s in my construct

enter image description here

3 个答案:

答案 0 :(得分:1)

您在s中缺少__contruct(),可以将其更新为:

public function __construct()

此外,我认为这将是空的empty($this->Vbericht)

尝试从$this->$删除开头的美元符号

更改

$this->$Vbericht = $_POST["bericht"];
$this->$Bsubmit = $_POST["submit"];

$this->Vbericht = $_POST["bericht"];
$this->Bsubmit = $_POST["submit"];

您的功能如下:

public function Index() {
    if (isset($this->Bsubmit) && empty($this->Vvoornaam) || empty($this->Vachternaam) || empty($this->Vemail) || empty($this->Vbericht)) {
        echo "U moet nog al uw gegevens invullen";
    }
}

答案 1 :(得分:-1)

您是否使用 if语句

if($this->Vvoornaam =='' || $this->Vachternaam=='' || $this->Vemail=='' || $this->$Vbericht==''){
echo "All field must be filled.";
exit();
}else{
echo "everything is filled";
}

答案 2 :(得分:-1)

还要确保在检查$_POST数组中的值是否为空或未设置后,再设置属性值。

我会做这样的功能

public function ValidateForm($data) {

    if(!isset($data["voornaam"]) && strlen($data["voornaam"]) < 1) {
      echo "Please fill in the 'voornaam' field";
      return false;
    }
    else {
      $this->SetData($data);
      return true;
    }

因此,现在我们确保在设置完所有输入后,可以调用函数:

public function SetData($data) {
  $this->voornaam = $data["voornaam"];
}

您的输入名称将是这样

name="data[voornaam]"

在您的html / php文件中,一旦设置了提交,就会触发该功能。

$obj = new UserForm();
if(isset($_POST["submit"]) { $obj->ValidateForm($_POST["data"]); }