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」では、変数「username、mail」などに適切な $_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 に答える