首页 文章

以联系表格验证电话号码

提问于
浏览
1

我有这个表格Link验证应该验证是否输入了有效的电话号码,如果没有,则给出错误文本"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="" />
<label for="telefon">Telefonnummer (bitte nur Ziffern):</label><input class="get1" type="text" name="phone" value="" />
<label for="email">E-Mail-Adresse:</label><input class="get1" type="text" name="email" value="" />
<label for="message">Ihre Mitteilung an uns:</label><textarea cols="20" rows="5" name="message"></textarea>
<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" />

<input type="hidden" value="1" name="s" /> <input type="submit" value="Nachricht versenden" name="submit" /> </form>

怎么了?

1 回答

  • 1

    所以你得到 'Bitte geben Sie Ihre Telefonnummer an.' 的原因是因为 $post['phone']; 为空或假,或者在if语句之前's trimmed and the tags are stripped. Try echo'之后变为空/假,以查看它的内容 . 即使您正在检查 phone ,您的表单也可能会发布一个小问题 telephone .

    除了 $post['phone'] 为空之外,preg匹配行还有一个错误 . 当你需要做 $this->phone 时,你正在做 $phone

    } else if ( preg_match('#[^0-9\+\-\040/]#', $this->phone) )
    

相关问题