我想用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条目(上面的代码中未显示)填充变量“username,mail”等。电话
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”。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
此处存在范围问题。你有一个带有名字的class属性。与Java不同,使用与类变量同名的局部变量会自动选择类属性,这与PHP不同。
基本上,您将输出保存在本地变量中,一旦离开函数,该变量就会被丢弃。将$error_blank[] = $result;
更改为$this->error_blank[] = $result;
,您应该没问题。
答案 1 :(得分:0)
首先,这似乎过于复杂的方式来完成一项简单的任务,但这实际上并不是问题。
您正在创建一个仅在函数范围内的新$ error_blank变量。如果你想使用类变量,你应该使用$ this-> error_blank []