PHP игнорирует обязательное поле и отправляет форму

У меня есть следующая форма, которую я создал в PHP, но по какой-то причине проверка ошибок не препятствует отправке формы. Я не являюсь разработчиком php, и любая помощь будет принята с благодарностью. По какой-то причине мои флажки с несколькими параметрами также не работают, и выдает ошибку

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>

<!DOCTYPE html>
<html lang="en">
<head>

<!-- Basic Page Needs
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta charset="utf-8">
<title>Submit Form</title>
<meta name="description" content="">
<meta name="author" content="">

<!-- Mobile Specific Metas
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- FONT
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css">

<!-- CSS
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/skeleton.css">

<script src='//cdn.tinymce.com/4/tinymce.min.js'></script>
<script>
tinymce.init({
selector: '#PContent',
theme: 'modern',
height: 300,
plugins: [
'advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker',
'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking',
'save table contextmenu directionality emoticons template paste textcolor'
],
content_css: 'css/content.css',
toolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor emoticons'

});
</script><!-- Favicon
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="icon" type="image/png" href="images/favicon.png"><style>
form label {
float: left;
width: 150px;
margin-bottom: 5px;
margin-top: 5px;
}
.clear {
display: block;
clear: both;
width: 100%;
}
</style>

</head>
<body onload="myUploadFunction()">
<!-- Primary Page Layout
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<div class="container">
<div class="row">
<div class="one-half column" style="margin-top: 2%"><?php

require 'xxx.php';

$fnameErr = $emailErr = $genderErr = $websiteErr = "";

// STEP 0. Are we getting form submission or should we show the form's field for filling?
if(isset($_POST['add'])) {
// STEP 1. Get the connection// STEP 2. Validate user's input

if (empty($_POST["fname"])) {
$fnameErr = "Name is required";
} else {
$fname = test_input($_POST["fname"]);
}$lname = $_POST['lname'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$doservice = $_POST['doservice'];
$etype = $_POST['etype'];
$rtype = $_POST['rtype'];
$ptime = $_POST['ptime'];
$paddress = $_POST['paddress'];
$rtime = $_POST['rtime'];
$daddress = $_POST['daddress'];
$vtype = $_POST['vtype'];
$pcount = $_POST['pcount'];
$addetails = $_POST['addetails'];
$heardwhere = $_POST['heardwhere'];// STEP 3. Properly encode user input for SQL// STEP 4. Construct the SQL query//INSERT
$sql = " INSERT INTO QuotesInfo ( fname, lname, phone, email, doservice, etype, rtype,
ptime, paddress, rtime, daddress, vtype, pcount, addetails, heardwhere )
VALUES ('".$_POST["fname"]."','".$_POST["lname"]."','".$_POST["phone"]."','
".$_POST["email"]."','".$_POST["doservice"]."','".$_POST["etype"]."','".$_POST["rtype"]."','".$_POST["ptime"]."','
".$_POST["paddress"]."','".$_POST["rtime"]."','".$_POST["daddress"]."','".$_POST["vtype"]."','".$_POST["pcount"]."','
".$_POST["addetails"]."','".$_POST["heardwhere"]."') ";//$retval = mysql_query( $sql, $mysqli ); // procedural version
$retval = $mysqli->query($sql);

// STEP 5. Execute the SQL query
if(! $retval ) {
// STEP 5.1 Deal with insuccess
die('Could not enter data: ' . $mysqli->error);
}

// STEP 5.2 Deal with success
echo "Entered data successfully\n";

$to = "[email protected]";
$subject = "Contact mail";
$from=$_POST["email"];
$msg= $fname . " " . $lname . "\r\n" . $phone . "\r\n" . $email . "\r\n" . $doservice . "\r\n" . $etype . "\r\n" . $rtype . "\r\n" . $ptime . "\r\n" . $paddress . "\r\n" . $rtime . "\r\n" . $daddress . "\r\n" . $vtype . "\r\n" . $pcount . "\r\n" . $addetails . "\r\n" . implode(",  ", $heardwhere);
$headers = "From: $from";

mail($to,$subject,$msg,$headers);
echo "Email successfully sent.";// STEP 6. We're done, close the connection
//mysqli_close($mysqli);
$mysqli->close();
}else {
?><form id="form1" name="form1"  method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="fname">First Name</label><input type="text" name="fname" id="fname" />
<span class="error">* <?php echo $fnameErr;?></span>
<br class="clear" />
<label for="lname">Last Name</label><input type="text" name="lname" id="lname" />
<br class="clear" />
<label for="phone">Phone</label><input type="text" name="phone" id="phone" />
<br class="clear" />
<label for="email">Email</label><input type="text" name="email" id="email" />
<br class="clear" />
<label for="doservice">Date of Service</label><input type="text" name="doservice" id="doservice" />
<br class="clear" />
<label for="etype">Event type</label><select name="etype" id="etype">
<option value="Wedding">Wedding</option>
<option value="Quinceanera/Cotillion">Quinceanera/Cotillion</option>
<option value="Corporate/Business">Corporate/Business</option>
<option value="Homecoming/Prom/School Dance">Homecoming/Prom/School Dance</option>
<option value="Bachelor/Bachelorette">Bachelor/Bachelorette</option>
<option value="Concert">Concert</option>
<option value="Sporting Event">Sporting Event</option>
<option value="Birthday">Birthday</option>
<option value="Sweet 16">Sweet 16</option>
<option value="Night Out">Night Out</option>
</select>
<br class="clear" />
<label for="rtype">Rental type</label><select name="rtype" id="rtype">
<option value="Hourly Rental">Hourly Rental</option>
<option value="Round Trip">Round Trip</option>
<option value="One Way">One Way</option>
<option value="Shuttle Service">Shuttle Service</option>
</select>
<br class="clear" />
<label for="ptime">Pickup Time</label><input type="text" name="ptime" id="ptime" />
<br class="clear" />
<label for="paddress">Pick Up Address and City</label><input type="text" name="paddress" id="paddress" />
<br class="clear" />
<label for="rtime">Return Time</label><input type="text" name="rtime" id="rtime" />
<br class="clear" />
<label for="daddress">Drop Off Address, City</label><input type="text" name="daddress" id="daddress" />
<br class="clear" />
<label for="vtype">Type of Vehicle</label><select name="vtype" id="vtype">
<option value="10 passenger limousine">10 passenger limousine</option>
<option value="22 Passenger SUV">22 Passenger SUV</option>
<option value="22-30 Passenger Party Bus">22-30 Passenger Party Bus</option>
<option value="31 Passenger Shuttle Bus">31 Passenger Shuttle Bus</option>
</select>
<br class="clear" />
<label for="pcount">How many passengers</label><input type="text" name="pcount" id="pcount" />
<br class="clear" />
<label for="addetails">Additional Details</label><textarea name="addetails" id="addetails" cols="45" rows="5"></textarea>
<br class="clear" />
<label for="heardwhere">How did you hear about us</label>
<input type="checkbox" name="heardwhere[]" value="Facebook" id="heardwhere_0" />Facebook
<input type="checkbox" name="heardwhere[]" value="Twitter" id="heardwhere_1" />Twitter
<input type="checkbox" name="heardwhere[]" value="Google" id="heardwhere_2" />Google
<input type="checkbox" name="heardwhere[]" value="Referral" id="heardwhere_3" />Referral
<input type="checkbox" name="heardwhere[]" value="Website Ad" id="heardwhere_4" />Website Ad
<input type="checkbox" name="heardwhere[]" value="Flyer" id="heardwhere_5" />Flyer
<input type="checkbox" name="heardwhere[]" value="Bridal Show" id="heardwhere_6" />Bridal Show
<input type="checkbox" name="heardwhere[]" value="Quinceanera Show" id="heardwhere_7" />Quinceanera Show
<input type="checkbox" name="heardwhere[]" value="Yelp" id="heardwhere_8" />Yelp
<input type="submit" name="add" id="add" value="Save">
<br class="clear" />
</form></div><div class="one-half column" style="margin-top: 2%">

<?php$sqli = "SELECT fname, lname, phone, email, doservice, etype, rtype, ptime, paddress, rtime, daddress, vtype, pcount, addetails, heardwhere FROM QuotesInfo ";

$resulti = $mysqli->query($sqli);

if ($resulti->num_rows > 0) {
// output data of each row
while($row = $resulti->fetch_assoc()) {
echo "" . $row["fname"]. " " . $row["lname"]. " : " . $row["phone"]. "<br>". $row["email"]. " " . $row["doservice"]. " : " . $row["etype"]. "<br>". $row["rtype"]. " " . $row["ptime"]. " : " . $row["paddress"]. "<br>". $row["rtime"]. " " . $row["daddress"]. " : " . $row["vtype"]. "<br>". $row["pcount"]. " " . $row["addetails"]. " : " . $row["heardwhere"]. "<br>";
}
} else {
echo "0 results";
}?>

</div><?php
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?></div>
</div>
<!-- End Document
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
</body>
</html>

1

Решение

Вы в некоторой степени проверяете входные данные, но в своих операторах if / else вам нужно сделать какой-то способ экранирования, если значения не заданы, вероятно, используя:
Если (! Исеть ($ значение)) {
Ошибки [] = ‘значение не установлено’;
}

If(isset($errors)){
Echo your error handling
} else {
The rest of your script
}
0

Другие решения

Вы должны использовать функцию exit () после вашего условия if, как это

 if (empty($_POST["fname"])) {
$fnameErr = "Name is required";
exit();
}

Теперь это сначала проверит ваше имя, если оно пустое, оно выйдет

0

  1. Первое, что вам нужно сделать, это просто поместить весь ваш php-код в один блок. Я не знаю, что вы делаете, вы запускаете условие if в своем первом блоке и заканчиваете его в другом блоке.
  2. Используйте если еще Условие правильно. Я проверил ваш код и обнаружил, что вы запускаете условие if, а затем запускаете условие else, но после этого вы запускаете другое условие else. Хорошо, если все еще правильно.
  3. Я изменил ваш код, когда некоторые переменные размещены в вашем файле. Проверьте это, это, безусловно, решит вашу проблему.
    Я успешно запустил этот код в моей системе.

     <?php
    

    $ fnameErr = $ emailErr = $ sexErr = $ websiteErr = «»;

        // STEP 0. Are we getting form submission or should we show the form's field for filling?
    

    // если опубликовано имя
    if (isset ($ _ POST [‘fname’])) {
    // ШАГ 1. Получить соединение

            // STEP 2. Validate user's input
    
    if (empty($_POST["fname"])) {
    $fnameErr = "Name is required";
    

    } else {// else условие и помните все ваши условия if else должны быть
    // в этом блоке только не из этого
    $ fname = test_input ($ _ POST [«fname»]);
    $ lname = $ _POST [‘lname’];
    $ phone = $ _POST [‘phone’];
    $ email = $ _POST [’email’];
    $ doservice = $ _POST [‘doservice’];
    $ etype = $ _POST [‘etype’];
    $ rtype = $ _POST [‘rtype’];
    $ ptime = $ _POST [‘ptime’];
    $ paddress = $ _POST [‘paddress’];
    $ rtime = $ _POST [‘rtime’];
    $ daddress = $ _POST [‘daddress’];
    $ vtype = $ _POST [‘vtype’];
    $ pcount = $ _POST [‘pcount’];
    $ addetails = $ _POST [‘addetails’];
    $ hearwhere = $ _POST [‘hearwhere’];

            // STEP 3. Properly encode user input for SQL// STEP 4. Construct the SQL query
    

    // ВСТАВИТЬ
    $ sql = «INSERT INTO QuotesInfo (fname, lname, телефон, электронная почта, doservice, etype, rtype,
    ptime, paddress, rtime, daddress, vtype, pcount, addetails, услышали)
    VALUES (‘». $ _ POST [» fname «].»‘, ‘». $ _ POST [» lname «].»‘, ‘». $ _ POST [» phone «].»‘, ‘
    «$ _ POST [ «электронная почта»].» » «$ _ POST [ «doservice»].» » «$ _ POST [ «ETYPE»].» »». $ _ POST [ «RTYPE» ]. » »». $ _ POST [ «PTIME»]. » »
    «$ _ POST [ «Paddress»].» » «$ _ POST [ «RTIME»].» » «$ _ POST [ «Daddress»].» »». $ _ POST [ «VType» ]. » »». $ _ POST [ «pcount»]. » »
    «. $ _ POST [» addetails «].» ‘,’ «. $ _ POST [» hearwhere «].» ‘) «;

            //$retval = mysql_query( $sql, $mysqli ); // procedural version
    $retval = $mysqli->query($sql);
    
    // STEP 5. Execute the SQL query
    if(! $retval ) {
    // STEP 5.1 Deal with insuccess
    die('Could not enter data: ' . $mysqli->error);
    }
    
    // STEP 5.2 Deal with success
    echo "Entered data successfully\n";
    

    $ to = «[email protected]»;
    $ subject = «Контактная почта»;
    $ От = $ _ POST [ «электронная почта»];
    $ msg = $ fname. «» $ lname. «\ r \ n». $ телефон. «\ r \ n». $ email. «\ r \ n». $ doservice. «\ r \ n». $ etype. «\ r \ n». $ rtype. «\ r \ n». $ ptime. «\ r \ n». $ paddress. «\ r \ n». $ rtime. «\ r \ n». $ адрес «\ r \ n». $ vtype. «\ r \ n». $ pcount. «\ r \ n». $ addetails. «\ r \ n». implode («,», $ hearwhere);
    $ headers = «From: $ from»;

    почта ($ к, $ при условии, $ тзд, $ заголовки);
    echo «Письмо успешно отправлено.»;

            // STEP 6. We're done, close the connection
    //mysqli_close($mysqli);
    $mysqli->close();
    }
    // this is your else condition, make sure it will be also in else
    //condition above. I have commented this coz I have no database :P
    //else {
    $sqli = "SELECT fname, lname, phone, email, doservice, etype, rtype, ptime, paddress, rtime, daddress, vtype, pcount, addetails, heardwhere FROM QuotesInfo ";
    

    $ resulti = mysqli_query ($ con, $ sqli);

    if ($ resulti-> num_rows> 0) {
    // выводим данные каждой строки
    while ($ row = $ resulti-> fetch_assoc ()) {
    эхо «». $ Строки [ «имя_файла»]. «» $ Строки [ «LNAME»]. «:». $ Строки [ «телефон»]. «
    «. $ row [» email «].» «. $ row [» doservice «].»: «. $ row [» etype «].»
    «. $ row [» rtype «].» «. $ row [» ptime «].»: «. $ row [» paddress «].»
    «. $ row [» rtime «].» «. $ row [» daddress «].»: «. $ row [» vtype «].»
    «. $ row [» pcount «].» «. $ row [» addetails «].»: «. $ row [» hearwhere «].»
    «;
    }
    } еще {
    эхо «0 результатов»;
    }
    }

         function test_input($data) {
    

    $ data = trim ($ data);
    $ data = stripslashes ($ data);
    $ data = htmlspecialchars ($ data);
    вернуть данные $;
    }

            ?>
    

Проверьте этот код и попытайтесь понять его. Надеюсь, это сработает сейчас. Удачного кодирования 🙂

0
По вопросам рекламы [email protected]