[英]PHP Validation form submit
在表格填写完成之前,如何停止发送给您的电子邮件。 当前,即使存在验证错误,但我通过适当的PHP检查发现了提交错误,也可以单击提交:
码:
if (isset($_POST['submitButton'])) {
$fullName = $_POST['fullName'];
$myGender = isset($_POST['myGender']) ? $_POST['myGender'] : '';
$email = $_POST['email'];
$age = $_POST['age'];
$myDate = isset($_POST['myDate']) ? $_POST['myDate'] : '';
$streetNum = $_POST['streetNum'];
$streetName = $_POST['streetName'];
$city = $_POST['city'];
$state = $_POST['state'];
$postCode = $_POST['postCode'];
$movie = $_POST['movie'];
//You need to se the $var
if (empty($fullName))
{
$errorfullName .= 'Please Enter Your Name';
}
if (!ctype_alpha(str_replace(array(" ", "-"), "",$fullName))) {
$errorfullName .= 'Your name should contain alpha characters only.';
}
if (strlen($fullName) < 3 OR strlen($fullName) > 40) {
$errorfullName .= 'First name should be within 3-40 characters long.';
}
/* Check Gender) */
if ($myGender != 'male' && $myGender != 'female') {
$errormyGender .= 'Please select your gender.';
}
/* Check Email */
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$erroremail .= 'Enter a valid email address.';
}
/* Age */
if (intval($age) == '') {
$errorage .= 'Please enter your current age';
}
if (intval($age) < 3 OR intval($age) > 200){
$errorage .= 'Age must be less than 200 years';
}
if(intval($age) == "/^[0-9]$/" ){
$errorage .= 'Must be numeric numbers';
}
/* check date using explode (breaks a string into an array.)if day is not 1-31, throw error*/
if(empty($myDate))
{
$errormyDate.= 'Please enter a current date';
}
$date_arr = explode ("-", $myDate);
$dateSplit = array_slice($date_arr, 0,1);
$dateYear = current($dateSplit);
if($dateYear > date('Y'))
{
$errormyDate .= 'Sorry your not born in the future';
}
/* Check Address House Number if its not numeric, throw error */
if (intval($streetNum) == '') {
$errorstreetNum .= 'Please add street Number';
}
/* Street Name */
if (strlen($streetName) < 3 OR strlen($streetName) > 200) {
$errorstreetName .= 'Street must be filled out and within 200 characters';
}
/*City Name */
if (strlen($city) < 3 OR strlen($city) > 200) {
$errorcity .= 'City must be filled out and within 200 characters';
}
/*State Name */
if (strlen($state) < 3 OR strlen($state) > 200) {
$errorstate .= 'State must be filled out and within 200 characters';
}
/* Check postCode */
if(intval($postCode) == "/^[0-9]$/" ){
$errorpostCode .= 'Post Code must be numeric numbers';
}
/* Check movie selection */
if (trim($movie) === "select") {
$errormovie .= 'Please select a favourite movie';
}
if ($fullName, $myGender, $email, $age, $myDate, $streetNum, $streetName, $city, $state, $postCode, $movie, == " "){
echo '$errorsuccess .= 'Please complete all sections of the form'';
}
else {
$success = "Thank you for submitting your form; We will be in contact soon";
//send mail
$to = "@yahoo.co.nz";
$subject = "Php form data";
$message = "<p>".$fullName."</p><p>".$myGender."</p><p>".$email."</p><p>".$age."</p><p>".$myDate."</p><p>".$streetNum."</p><p>".$streetName."</p><p>".$city."</p><p>".$state."</p><p>".$postCode."</p><p>".$movie."</p>";
$from = "@yahoo.co.nz";
mail($to,$subject,$message);
}
}
在代码的开头将$err
类的内容设置为false。 检测到错误时将其设置为true。 (即使它已经是真实的;设置它也比检查容易。)
然后,您可以将最终结果设置$err
。
原因是即使您在上面完成了几次验证,您以后也不会检查它们是否通过/未通过,您唯一的健全性检查在这里:
if ($fullName, $myGender, $email, $age, $myDate, $streetNum, $streetName, $city, $state, $postCode, $movie, == " "){
顺便说一句,它的自我是非常无用的。
一种更简单的方法是首先创建一个数组以保存所有错误。
$errors = array();
然后,当您进行个人检查时,将其作为密钥,例如:
if (empty($fullName))
{
$errors['fullname'] .= 'Please Enter Your Name';
}
和
if (intval($age) == '') {
$errors['age'] .= ' Please enter your current age.';
}
if (intval($age) < 3 OR intval($age) > 200){
$errors['age'] .= ' Age must be less than 200 years.';
}
if(intval($age) == "/^[0-9]$/" ){
$errors['age'] .= ' Must be numeric numbers.';
}
然后,您可以执行以下操作:
if($errors){
echo 'There are errors in the form. Please observe each of the errors and try again.'. PHP_EOL;
foreach($errors as $idx => $error){
echo ucfirst($idx). ': ' .$error;
}
}
为了发送电子邮件,您只需要为每个输入字段(从$ fullName到$ movie)输入一个值。
验证表单的位置(例如,当您使用if (empty($fullName))...
,如果表单填写不正确,则会产生不同的错误,除非您出于某种原因为此,我将坚持使用通用错误变量$formerror
。
然后在代码的最后部分中使用if($fullName...$movie == '')
,您可以将其更改为if($fullName...$movie === '' AND !empty($formerror))
这样,如果在验证表单期间发现任何错误,您将能够echo $formerror
;否则,将发送电子邮件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.