У меня есть следующая форма, которую я создал в 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>
Вы в некоторой степени проверяете входные данные, но в своих операторах if / else вам нужно сделать какой-то способ экранирования, если значения не заданы, вероятно, используя:
Если (! Исеть ($ значение)) {
Ошибки [] = ‘значение не установлено’;
}
If(isset($errors)){
Echo your error handling
} else {
The rest of your script
}
Вы должны использовать функцию exit () после вашего условия if, как это
if (empty($_POST["fname"])) {
$fnameErr = "Name is required";
exit();
}
Теперь это сначала проверит ваше имя, если оно пустое, оно выйдет
Я изменил ваш код, когда некоторые переменные размещены в вашем файле. Проверьте это, это, безусловно, решит вашу проблему.
Я успешно запустил этот код в моей системе.
<?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);
вернуть данные $;
}
?>
Проверьте этот код и попытайтесь понять его. Надеюсь, это сработает сейчас. Удачного кодирования 🙂