Php 表单验证问题服务器端代码未验证
我在验证我的表单时遇到问题。我按照建议遵循了w3schools指南,但我无法让它与我的网站一起工作。我正在使用Bootstrap4,它似乎在检查表单输入是否为空,但就是这样,所以我在php文件中添加了一系列验证。然而,当我提交时,只要输入不是空的,表单就被提交了。因此,前端验证正在工作,而服务器端则没有。这是我的密码 html:Php 表单验证问题服务器端代码未验证,php,html,bootstrap-4,Php,Html,Bootstrap 4,我在验证我的表单时遇到问题。我按照建议遵循了w3schools指南,但我无法让它与我的网站一起工作。我正在使用Bootstrap4,它似乎在检查表单输入是否为空,但就是这样,所以我在php文件中添加了一系列验证。然而,当我提交时,只要输入不是空的,表单就被提交了。因此,前端验证正在工作,而服务器端则没有。这是我的密码 html: * * * * 发送 php: “我遵循了w3schools指南”-这是你的第一个错误:/看起来您创建了一系列…Err变量,但您从未使用过它们。正如@jh
*
*
*
*
发送
php:
“我遵循了w3schools指南”-这是你的第一个错误:/看起来您创建了一系列…Err
变量,但您从未使用过它们。正如@jh1711所说,但准确地说,您在发送电子邮件之前实际上没有检查错误变量。您的mail
功能目前不依赖任何内容,您需要将其放在检查表单是否有效的条件中,否则,您只需检查表单的有效性,然后发送电子邮件,不管是否通过。确切地说,您需要包装邮件($to,$email\u subject,$email\u body,$headers)代码>检查有效性的条件语句中的一部分。首先创建一个变量以确定是否存在错误(即$errors=1;
),如果所有字段都有效,请将其更改为$errors=0如果$errors==0
<div class="container">
<div class="col-sm-8 col-sm-push-2">
<form class="form inline d-flex justify-content-center" action="contact.php" method="POST" role="form">
<br style="clear:both">
<div class="col-sm-6">
<div class="form-group">
<input type="text" class="control" id="first_name" name="first_name" placeholder="First Name" required>
<span class="error">* <?php echo $nameErr;?></span>
</div>
<div class="form-group">
<input type="text" class="control" id="email" name="email" placeholder="Email" required>
<span class="error">* <?php echo $emailErr;?></span>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="text" class="control" id="last_name" name="last_name" placeholder="Last Name" required>
<span class="error">* <?php echo $nameErr;?></span>
</div>
<div class="form-group">
<input type="text" class="control" id="phone" name="phone" placeholder="Phone" required>
<span class="error">* <?php echo $phoneErr;?></span>
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<textarea name="message" class="control" id="message" placeholder="What's on your mind?" rows="3"></textarea>
</div>
<button type="submit" id="submit" name="submit" class="btn btn-primary">SEND</button>
</form>
</div>
</div>
<?php
$nameErr = $emailErr = $phoneErr = "";
$first_name = $last_name = $email = $phone = $message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
if (empty($first_name)) {
$nameErr = "First name is required";
} else {
$first_name = check_input($first_name);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($last_name)) {
$nameErr = "Last name is required";
} else {
$last_name = check_input($last_name);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$last_name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($email)) {
$emailErr = "Email is required";
} else {
$email = check_input($email);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($phone)) {
$phoneErr = "Phone number is required";
} else {
$phone = check_input($phone);
if (!preg_match("'^(([\+]([\d]{2,}))([0-9\.\-\/\s]{5,})|([0-9\.\-\/\s]{5,}))*$'",$phone)) {
$phoneErr = "Invalid Phone Number";
}
}
if (empty($message)) {
$message = "";
} else {
$message = check_input($message);
}
$email_from =' Client, llc';
$email_subject = 'New Message From A Guest';
$email_body = "Name: $first_name $last_name\n".
"Email: $email\n".
"Phone: $phone\n".
"Message: $message.\n";
$to ="me@work.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $email \r\n";
mail($to,$email_subject,$email_body,$headers);
header("location: thanks.html");
}
function check_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>