1

我想用 php 验证表单。

为此,我创建了一个类“benutzer”和该类的公共函数“benutzerEintragen”来验证表单:

class benutzer
{
private $username = "";
private $mail = "";
private $mail_check = "";
private $passwort = "";
private $passwort_check = "";
public $error_blank = array();
public $error_notSelected = array();
public $error_notEqual = array();

    public function benutzerEintragen () {
    $textfields[0] = $this->username;
    $textfields[1] = $this->mail;
    $textfields[2] = $this->mail_check;
    $textfields[3] = $this->passwort;
    $textfields[4] = $this->passwort_check;
    foreach ($textfields as $string) {
      $result = checkFormular::emptyVariable($string);
      $error_blank[] = $result; 
    }

在函数“benutzerEintragen”中,我用适当的 $_POST 条目填充了变量“用户名,邮件”等等(上面的代码中没有显示)。通话

checkFormular::emptyVariable($string) 

如果该字段未设置或为空,则返回“TRUE”,否则返回 FALSE。

现在,当我尝试创建此类的新实例时,执行该函数并访问 $error_blank[0] 数组为空!

 if (($_SERVER['REQUEST_METHOD'] == 'POST')){ 
 $BENUTZER = new benutzer();
 $BENUTZER->benutzerEintragen();
 echo $BENUTZER->error_blank[0];}

所以最后一行导致“注意:未定义的偏移量:0”。它似乎与数组结构有关,因为如果我这样做

 echo $BENUTZER->mail;

我得到了我在表格中写的任何输入,这是正确的。此外,当我在 phpEd 中运行调试器时,foreach 循环似乎做了正确的事情,但似乎在函数执行后数组“error_blank”被删除了。

任何帮助将不胜感激。提前致谢。

4

2 回答 2

0

这里存在范围问题。您确实有一个带有名称的类属性。不像在 Java 中使用与类变量同名的局部变量会自动选择类属性,这在 PHP 中不是这种情况。

基本上,您将输出保存在一个局部变量中,一旦您离开该函数,该变量就会被丢弃。更改$error_blank[] = $result;$this->error_blank[] = $result;,你应该没问题。

于 2012-10-25T22:15:42.287 回答
0

首先,完成一项简单任务的方法似乎过于复杂,但这实际上不是问题。

您正在创建一个仅在函数范围内的新 $error_blank 变量。如果你想使用类变量,你应该使用 $this->error_blank[]

于 2012-10-25T22:17:02.963 回答