Kullanıcı adı, parola ve parola doğrulama alanı içeren çok basit bir HTML formum var. Form giriş onayı için bir PHP dosyasına gönderilir. PHP doğrulama dosyası, İstisnalar ve bir try/catch bloğunu uygular. Şu anda çalışma şekli, form alanlarından herhangi birini girmeden formu gönderirseniz, yalnızca ilk alanda bir hata döndürür. Tüm alanların eksik olduğunu algılamak ve tüm eksik alanlar için bir hata atmak gibi. Herhangi bir yardım takdirPHP Özel durum hatası çalışmıyor
<?php
if (isset($_POST['register'])) {
//put the submitted values into regular variables
$user_name = $_POST['user_name'];
$pass_word = $_POST['pass_word'];
$pass_cfm = $_POST['pass_cfm'];
//make an array of field names and data types
$field_names = array("user_name" => "string",
"pass_word" => "string",
"pass_cfm" => "string");
try {
form_validate($field_names);
} catch (Exception $e) {
echo $e->getMessage();
echo "<br>";
}
if (!isset($e) and isset($_POST['register']))
{
echo "Thanks for your entry. We'll be in touch.";
}
else
{
echo "correct form";
}
}// main if
function form_validate($fns) {
foreach ($fns as $key => $value) {
$field_value = $key;
global $$field_value;
//echo "actual field value is " . $$field_value . "<br>";
switch ($value) {
Case "string";
if ((strlen($$field_value) < 1) or (strlen($$field_value) > 99)) {
throw new Exception("Please enter a string value between 1 and 100 characters in the <b>$key</b> field");
}
break;
default;
break;
}
}
}
// test_input
?>
:
<!DOCTYPE html>
<html>
<head>
<title>User Registration</title>
<meta charset="UTF-8">
</head>
<body>
<h3>Register new account</h3>
<form action="HW4_action_exceptions.php" method="post">
Username:
<br/>
<input type="text" name = "user_name"/>
<br/>
Password:
<br/>
<input type="password" name ="pass_word" />
<br/>
Confirm:
<br/>
<input type="password" name = "pass_cfm" />
<br/>
<input type="submit" name="register" value="Register">
</form>
</body>
</html>
İşte benim PHP dosyasıdır:
İşte benim HTML dosyasıdır. Teşekkürler!
Bir özel durum atmayın, yalnızca bir dizinin içindeki hata iletilerini kaydedin ve diziyi boş değilse, form_validate() işlevinin yanıtı olarak diziyi döndürün, sonra tüm hataları görüntüleyebilirsiniz. –