1

私はこのフォームを持っていますリンク 検証では、有効な電話番号が入力されているかどうかを検証する必要があります。入力されていない場合は、エラーテキスト「Bitte geben Sie eine gültige Telefonnummer an」が表示されますが、検証では常に同じメッセージ「Bitte geben Sie Ihre Telefonnummer an」が表示されます。英語では、無効な文字を入力しても電話番号を入力してください。

PHP:

function setParams($post)
{
    if ( ! $this->name = strip_tags(trim($post['name'])))
    {
        $this->error[] = 'Bitte geben Sie Ihren Namen an.';
    }
    if ( ! $this->phone = strip_tags(trim($post['phone'])))
    {
        $this->error[] = 'Bitte geben Sie Ihre Telefonnummer an.';
    } else if ( preg_match('#[^0-9\+\-\040/]#', $phone) )
    {
        $this->error[] = 'Bitte geben Sie eine gültige Telefonnummer an.';
    }   

    if ( ! $this->email = strip_tags(trim($post['email'])))
    {
        $this->error[] = 'Bitte geben Sie Ihre E-Mail-Adresse an.';
    } else if ( ! filter_var($this->email, FILTER_VALIDATE_EMAIL) || strstr($this->email, '@') === FALSE)
    {
        $this->error[] = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
    }
    if ( ! $this->body = strip_tags(trim($post['message'])))
    {
        $this->error[] = 'Bitte geben Sie einen Nachrichtentext ein.';
    }

HTML:

<form action="kontakt.php" method="post">
            <label for="name">Ihr Name:</label><input class="get1" type="text"     name="name" value="" /><br />
            <label for="telefon">Telefonnummer (bitte nur Ziffern):</label><input     class="get1" type="text" name="phone" value="" /><br />
            <label for="email">E-Mail-Adresse:</label><input class="get1" type="text"     name="email" value="" /><br />
            <label for="message">Ihre Mitteilung an uns:</label><textarea cols="20"     rows="5" name="message"></textarea><br />
            <label>Welche Leistungen interessieren Sie besonders?    </label>
            <label style="display:inline;" for="dachstuehle">Dachstühle</label>  <input     class="kaestchen" type="checkbox" name="interessen[]" id="dachstuehle" value="dachstuehle"     />
            <label style="display:inline;" for="holzbau">Holzbau</label>         <input class="kaestchen" type="checkbox" name="interessen[]" id="holzbau" value="holzbau" />
            <label style="display:inline;" for="innenausbau">Innenausbau</label> <input class="kaestchen" type="checkbox" name="interessen[]" id="innenausbau" value="innenausbau" />
            <label style="display:inline;" for="trocken">Trockenbau</label>      <input class="kaestchen" type="checkbox" name="interessen[]" id="trockenbau" value="trockenbau" /><br /><br />
            <input type="hidden" value="1" name="s" />
            <input type="submit" value="Nachricht versenden" name="submit" />
            </form>

なにが問題ですか?

4

1 に答える 1

1

したがって、取得して'Bitte geben Sie Ihre Telefonnummer an.'いる理由は、$post['phone'];が空または false であるか、トリミングされてタグが削除された後に空/false になるためです。$post['phone']if ステートメントの直前でエコーアウトして、その内容を確認してください。telephoneをチェックしているにもかかわらず、フォームが投稿されるという小さな問題がある可能性がありますphone

空であることに加えて$post['phone']、preg マッチ行にエラーがあります。あなたが$phoneする必要があるときにやっています$this->phone

} else if ( preg_match('#[^0-9\+\-\040/]#', $this->phone) )
于 2013-06-11T04:10:48.563 に答える