2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用該$msg變量作為數(shù)組而不是字符串來保存特定字段的錯(cuò)誤。
<?php
$msg = [];
if(filter_has_var(INPUT_POST,'submit')){
//...
// Check Required Fields
if(!empty($email) && !empty($name) && !empty($message)){
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false ){
$msg['email'] = [
'msg' => 'Please use a valid email'
'class' => 'alert-danger'
];
} else {
//...
if(mail($toEmail, $subject, $body, $headers)){
// Email Sent
$msg['default'] = [
'msg' => 'Your email has been sent'
'class' => 'alert-success'
];
} else {
// Failed
$msg['default'] = [
'msg' => 'Your email was not sent'
'class' => 'alert-danger'
];
}
}
} else {
// Failed
$msg['default'] = [
'msg' => 'Please fill in all fields'
'class' => 'alert-danger'
];
}
}
?>
現(xiàn)在,在 HTML 中,您可以檢查特定錯(cuò)誤或消息是否存在,并將其顯示在正確的位置;頂部的默認(rèn)消息和電子郵件輸入下的電子郵件錯(cuò)誤:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Contact US</title>
</head>
<body>
<nav class="navbar">
<div class="container">
<div class="navbar-header">
<a href="index.php" class="navbar-brand">My Website</a>
</div>
</div>
</nav>
<div class="container">
<!-- HERE -->
<?php if(isset($msg['default'])): ?>
<div class="alert <?php echo $msg['default']['class']; ?>"><?php echo $msg['default']['msg']?></div>
<?php endif; ?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<!-- ... -->
<div class="form-group">
<label for="name">Email</label>
<input type="text" name="email" class="form-control" value="<?php echo isset($_POST['email']) ? $email : ''; ?>">
<!-- AND HERE -->
<?php if(isset($msg['email'])): ?>
<div class="alert <?php echo $msg['email']['class']; ?>"><?php echo $msg['email']['msg']?></div>
<?php endif; ?>
</div>
<!-- ... -->
</form>
</div>
</body>
</html>
實(shí)際上,您也可以對(duì)您想要的任何其他輸入執(zhí)行相同的操作。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以將驗(yàn)證警告存儲(chǔ)在數(shù)組類型變量中,而不是字符串中。
例如,這一行:
$msg = '請(qǐng)使用有效的電子郵件';
你可以這樣做:
$msg['email'] = 'Please use a valid email';
另外,我認(rèn)為您想驗(yàn)證每個(gè)必填字段是否都存在單獨(dú)的if檢查,而不是全部一起存在,例如:
if(!empty($email) && !empty($name) && !empty($message)){
您可以實(shí)施為:
if (empty($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$msg['email'] = 'Please use a valid email';
}
if (empty($name)) {
$msg['name'] = 'Please enter a name';
}
if (empty($message)) {
$msg['message'] = 'Please enter a message';
}
然后,在 HTML 部分的每個(gè)相關(guān)輸入字段下方,您可以添加:
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" value="<?php echo isset($_POST['name']) ? $name : ''; ?>">
<?php if(isset($msg['name'])): ?>
<p> <?php echo $msg['name']; ?>
<?php endif; ?>
</div>
然而,總的來說,我不得不說這是一種非常老式的 PHP 使用方式,您可以將邏輯代碼與顯示代碼混合在一起。
當(dāng)你掌握了它的竅門后,也許你會(huì)想研究 Laravel、Symfony 甚至 CodeIgniter 是如何工作的,在那里你可以使用所謂的 MVC 將顯示與邏輯分開。
此外,您最終可以使用像 Blade 或類似的模板引擎來回顯您的變量。
- 2 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)