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

これを行う1つの方法は、ファイルの先頭にエラー配列を作成することです。次に、フィールドが正しく入力されていない場合は、この配列にエラーを追加します。この配列が空になった場合は、クエリを実行できます。これの利点は、潜在的なエラーを出力するためのクリーンでシンプルかつ効率的な方法もすぐに利用できることです。

$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 に答える