PHP 如果所有preg_matches都很好,则执行查询


PHP execute query if all preg_matches are good

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

这是我的脚本:

<?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中尝试过的东西。(比如如果($1 && $2 ='goed'),但这无论如何都不起作用。

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

$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>';
}

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

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

在开始时添加

$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>";
}