0

我有一个脚本可以捕获用户在表单中填写的所有错误。现在,如果他们正确填写所有内容,则应该执行查询。

这是我的脚本:

<?php

if(preg_match("/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $wachtwoord) === 0)
{
echo '<font>Wachtwoord moet minstens 8 tekens lang zijn, een kleine letter, grote letter én cijfer bevatten.<br><font>';
}
else 
{
$wachtwoord = 'goed';
}

if(preg_match("/^[0-9]{10}+$/", $telefoonnummer) === 0)
{
echo '<font>Het telefoonnummer moet 10 cijfers bevatten.<br><font>';
}
else 
{
$telefoonnummer = 'goed';
}

if(preg_match("/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/", $gbdatum) === 0)
{
echo '<font>Geboorte datum moet op dit formaat ingevoerd worden: JJJJ-MM-DD<br><font>';
}
else 
{
$gbdatum = 'goed';
}

if(preg_match("/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", $email) === 0)
{
echo '<font>Email moet hier op lijken: email@provider.com<br><font>';
}
else 
{
$email = 'goed';
}

if(preg_match("/^[A-Z][a-zA-Z -]+$/", $voornaam) === 0)
{
echo '<font>Voornaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><font>';
}
else 
{
$voornaam = 'goed';
}

if(preg_match("/^[A-Z][a-zA-Z -]+$/", $achternaam) === 0)
{
echo '<font>Achternaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><font>';
}
else 
{
$achternaam = 'goed';
}

if ($geslacht == '') 
{
echo '<font>U heeft uw geslacht niet aangegeven<br><font>';
}
else 
{
$geslacht = 'goed';
}

if(preg_match("/^[a-zA-Z]+\ +[0-9]+$/", $adres) === 0)
{
echo '<font>Adres is verkeerd ingevoerd<br><font>';
}


if(preg_match("/^[a-zA-Z\s]+$/", $woonplaats) === 0)
{
echo '<font>Woonplaats is verkeerd ingevoerd<br><font>';
}

if (ABOVE STATEMENTS DONT APPLY)
{
mysql_query($query);
echo "<font>Uw registratie is succesvol verwerkt <br>Log <a href='login.php' MEDIA=screen>hier</a> in<font>";
}

?>

现在我要输入什么, if (ABOVE STATEMENTS DONT APPLY)所以如果所有内容都以正确的形式放置,它将运行脚本。

提前致谢!

编辑:

你可以无视

else 
{
$geslacht = 'goed';
}

这是我在上一个 IF 中尝试过的。(比如 if ($1 && $2 = 'goed') 但无论如何都没有用。

4

2 回答 2

3

一种方法是在文件顶部创建一个错误数组。然后,如果未正确填写字段,则向此数组添加错误。如果此数组最终为空,则可以执行查询。这样做的好处是您还可以立即以一种干净、简单且有效的方式来输出潜在错误。

$errors = array();

if ( invalid password ) {
    $errors[] = 'invalid password';
}

if ( invalid phone number ) {
    $errors[] = 'invalid phone number';
}

if ( empty($errors) ) {
    // execute query
} else {
    echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>';
}

您打印错误的方式可以通过多种方式完成。我上面所做的只是一个例子。

于 2012-06-19T11:09:05.203 回答
0

添加一个简单的包罗万象的布尔值。

在开始时添加

$canContinue=true;

紧接着<?php

然后,在您的条件检查中,如果其中任何一个失败,请将布尔值更改为false

if(preg_match("/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/", $gbdatum) === 0)
{
echo '<font>Geboorte datum moet op dit formaat ingevoerd worden: JJJJ-MM-DD<br><font>';
$canContinue=false;
}

如果您$canContinue=false;在所有语句中都包含它,则可以使用最后一个 if 语句,如下所示:

if ($canContinue)
{
mysql_query($query);
echo "<font>Uw registratie is succesvol verwerkt <br>Log <a href='login.php' MEDIA=screen>hier</a> in<font>";
}
于 2012-06-19T11:10:27.637 回答