2016-09-08 7 views
1

У меня есть следующая форма, которую я создал на 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> 

ответ

0

Вашего подтверждения вклада в каком-то степени, но в вашем если/другом заявления вам нужно сделать какое-то бежать, если значения не установлены, возможно, используя: If (! isset ($ value)) { Ошибки [] = 'значение не установлено'; }

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

Я не понимаю, о чем вы говорите. Вы используете «$ errors», о которых я не упоминал в моем примере скрипта. Таким образом, я не понимаю, где бы я добавил этот новый блок кода. Вы предлагаете заменить «if (isset ($ _ POST ['add']))?? –

0

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

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

Теперь это первый проверяет FName, если он пустой, он выйдет

+0

Нет, все еще отправляет форму. –

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

    <?php 
    

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

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

    // если имя_файла размещена если (Исеть ($ _ POST [ 'имя_файла'])) {// ШАГ 1.Получить соединение

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

    } еще {// еще Condtion и помнить все ваши, если другое условие должно быть // в этом блоке только не из этого
    $ имя_файла = test_input ($ _ POST [ «имя_файла» ]); $ 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 (имя_файла, LNAME, телефон, электронная почта, doservice, ETYPE, RTYPE, PTIME, Paddress, RTIME, Daddress, VType, pcount, addetails, heardwhere)
    VALUES ($. POST ["fname"]. $ _POST [ "электронная почта"]. " ''". $ _ POST [ "doservice"]. " ''". $ _ POST [ "ETYPE"]. " ''". $ _ POST [ "RTYPE"]. Msgstr "" ". $ _ POST [" ptime "]. _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 = "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 (",", $ hearwhere); $ headers = "От: $ from";

    mail ($ to, $ subject, $ msg, $ headers); echo «Электронная почта успешно отправлена.»; (0 долл. США);

    , если ($ resulti-> num_rows> 0) {// выходные данные каждой строки в то время как ($ строки = $ resulti-> FETCH_ASSOC()) { эхо "". $ Строки [ "имя_файла"]. "". $ Строки [ "LNAME"]. ":". $ Строки [ "телефон"]. "
    " . $ Строка [ "электронная почта"]. "". $ Строки [ "doservice"]. ":". $ Строки [ "ETYPE"]. "
    " . $ Строки [ "RTYPE"]. "". $ Строки [ "PTIME"]. ":". $ Строки [ "Paddress"]. "
    " . $ Строки [ "RTIME"]. "". $ Строки [ "Daddress"]. ":". $ Строки [ "VType"]. "
    " . $ Строки [ "pcount"]. "". $ Грести [ "addetails"]. ":". $ Строки [ "heardwhere"]."
    "; } } else { echo "0 results"; Данные }}

     function test_input($data) { 
    

    $ = обрезки ($ данных); $ data = stripslashes ($ data); $ data = htmlspecialchars ($ data); return $ data; }

     ?> 
    

Проверьте этот код и попытаться понять его. Надеюсь, теперь это сработает. Happy Coding :)

Смежные вопросы