我有这个表格Link 验证应验证是否输入了有效的电话号码,如果没有,则验证 给出错误文本“Bitte geben SieeinegültigeTelefonnummeran”,但验证总是给出相同的消息“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>
有什么问题?
答案 0 :(得分:1)
因此,您获得'Bitte geben Sie Ihre Telefonnummer an.'
的原因是因为$post['phone'];
为空或假,或者在修剪标签后将其变为空/假。尝试在if语句之前回显$post['phone']
以查看它的内容。即使您正在检查telephone
,您的表单也会在phone
发布时遇到小问题。
除$post['phone']
为空外,您还会在preg匹配行中出错。当您需要执行$phone
时,您正在执行$this->phone
:
} else if ( preg_match('#[^0-9\+\-\040/]#', $this->phone) )