PHP Проверка формы с preg_match и регулярными выражениями - PullRequest
0 голосов
/ 07 апреля 2020

Привет всем, я сейчас пытаюсь проверить ввод данных пользователем в форме. Я использую регулярные выражения и функцию php preg_match. Я пытаюсь сделать это с помощью электронной почты, номера телефона и почтового индекса. Однако, когда пользователь вводит электронное письмо, номер телефона или почтовый индекс, который не соответствует регулярному выражению, ничего не происходит, пользователь должен получить сообщение об ошибке, когда это произойдет. Поэтому я считаю, что мое регулярное выражение не читается, и я понятия не имею, почему. Спасибо за любую помощь.

Вот мой код:

  <?php


  if(isset($_POST['order'])){
    $fname = trim(htmlspecialchars($_POST['first_name']));
    echo $fname;
    $address = trim(htmlspecialchars($_POST['address']));
    echo $address;
    $city = trim(htmlspecialchars($_POST['city']));
    echo $city;
    $zipcode = trim(htmlspecialchars($_POST['zip_code']));
    echo $zipcode;
    $email = trim(htmlspecialchars($_POST['email']));
    echo $email;
    $validzip = "/^\d{5}$|^\d{5}-\d{4}$/";
    $validemail = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/";
    $state = $_POST['states'];
    echo $state;
    $lname = trim(htmlspecialchars($_POST['last_name']));
    echo $lname;
    $phonenumber = trim(htmlspecialchars($_POST['phone_number']));
    echo $phonenumber;
    $vaildpn = "/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/";




    if(isset($_POST['first_name']) && $fname!= "" && isset($_POST['address'])&& $address !="" && isset($_POST['city']) && $city != "" && isset($_POST['zip_code']) && $zipcode != ""&& isset($_POST['email']) && $email != "" && isset($_POST['last_name']) && $lname != "" && isset($_POST['phone_number']) && $phonenumber != "" && isset($_POST['card_Number']) && $cardnumber != "" && isset($_POST['exp_date']) && $expdate != "" && isset($_POST['cvc']) && $cvc != "" && preg_match($validzip, $zipcode) && preg_match($validemail, $email)){


        header("Location: orderplaced.php");
    }

}

   ?>




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

  <head>         
    <title>Confrimation</title>     
    <meta charset="utf-8">     
    <meta name="viewport" content="width=device-width, initial-scale=1">     
    <link rel="shortcut icon" href="images/favicon.ico">     
    <link rel="stylesheet" href="css/normalize.css">     
    <link rel="stylesheet" href="css/confirm.css"> 
</head>     

<body>     

    <header>
        <h1>Order Confrimation</h1>
    </header>

<main> 
        <nav>
        <ul>
        <form action="cart.php">
    <li><button type="submit" name="back" value="Back to Cart">Back to Cart</button></li>
    </form>

    <form action="index.php">
        <li><button type="submit" action="index.php" name="shopping">Return to Shopping</button></li>
        </form>
        </ul>
    </nav>  



    <form method="post" name="shipping" action="confirm.php"> 
    <h2>Please enter your shipping information:</h2>
        <label for="fname">First Name:</label>
        <input type="text" id="fname" name="first_name"
        <?php
                if(isset($_POST['first_name'])&& $fname==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['fname'])){
                    echo "value=$fname>";
                }
                else{
                    echo"><span>*</span>";
                }
          ?>
            <input type="hidden" name="fname2" value="<?php echo "$fname2"; ?>" />
        <br>    

        <label for="lname">Last Name:</label>
        <input type="text" id="lname" name="last_name"
        <?php
                if(isset($_POST['last_name'])&& $lname==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['lname'])){
                    echo "value=$lname>";
                }
                else{
                    echo"><span>*</span>";
                }
         ?>
        <br>    
        <label for="email">Email:</label>
        <input type="text" id="email" name="email"
        <?php
                if(isset($_POST['email'])&& $email==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['email'])){
                    echo "value=$email>";
                }
                else if(isset($_POST['email']) && !preg_match($validemail, $email)){
                    echo "value=$email>";
                    echo "<span>Please enter a vaild email</span>";
                }
                else{
                    echo"><span>*</span>";
                }

        ?>


        <br>    
        <label for="address">Address:</label>
        <input type="text" id="address" name="address"
        <?php
                if(isset($_POST['address'])&& $address==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['address'])){
                    echo "value=$address>";
                }
                else{
                    echo"><span>*</span>";
                }
          ?><br>
        <label for ="state">State</label>
        <select name="states">
            <option value="AL"<?php echo (isset($_POST['states']) && $_POST['states'] == 'AL') ? 'selected="selected"' : ''; ?>>Alabama</option>
            <option value="AK"<?php echo (isset($_POST['states']) && $_POST['states'] == 'AK') ? 'selected="selected"' : ''; ?>>Alaska</option>
            <option value="AZ"<?php echo (isset($_POST['states']) && $_POST['states'] == 'AZ') ? 'selected="selected"' : ''; ?>>Arizona</option>
            <option value="AR"<?php echo (isset($_POST['states']) && $_POST['states'] == 'AR') ? 'selected="selected"' : ''; ?>>Arkansas</option>
            <option value="CA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'CA') ? 'selected="selected"' : ''; ?>>California</option>
            <option value="CO"<?php echo (isset($_POST['states']) && $_POST['states'] == 'CO') ? 'selected="selected"' : ''; ?>>Colorado</option>
            <option value="CT"<?php echo (isset($_POST['states']) && $_POST['states'] == 'CT') ? 'selected="selected"' : ''; ?>>Connecticut</option>
            <option value="DE"<?php echo (isset($_POST['states']) && $_POST['states'] == 'DE') ? 'selected="selected"' : ''; ?>>Delaware</option>
            <option value="FL"<?php echo (isset($_POST['states']) && $_POST['states'] == 'FL') ? 'selected="selected"' : ''; ?>>Florida</option>
            <option value="GA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'GA') ? 'selected="selected"' : ''; ?>>Georgia</option>
            <option value="HI"<?php echo (isset($_POST['states']) && $_POST['states'] == 'HI') ? 'selected="selected"' : ''; ?>>Hawaii</option>
            <option value="ID"<?php echo (isset($_POST['states']) && $_POST['states'] == 'ID') ? 'selected="selected"' : ''; ?>>Idaho</option>
            <option value="IL"<?php echo (isset($_POST['states']) && $_POST['states'] == 'IL') ? 'selected="selected"' : ''; ?>>Illinois</option>
            <option value="IN"<?php echo (isset($_POST['states']) && $_POST['states'] == 'IN') ? 'selected="selected"' : ''; ?>>Indiana</option>
            <option value="IA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'IA') ? 'selected="selected"' : ''; ?>>Iowa</option>
            <option value="KS"<?php echo (isset($_POST['states']) && $_POST['states'] == 'KS') ? 'selected="selected"' : ''; ?>>Kansas</option>
            <option value="KY"<?php echo (isset($_POST['states']) && $_POST['states'] == 'KY') ? 'selected="selected"' : ''; ?>>Kentucky</option>
            <option value="LA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'LA') ? 'selected="selected"' : ''; ?>>Louisiana</option>
            <option value="ME"<?php echo (isset($_POST['states']) && $_POST['states'] == 'ME') ? 'selected="selected"' : ''; ?>>Maine</option>
            <option value="MD"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MD') ? 'selected="selected"' : ''; ?>>Maryland</option>
            <option value="MA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MA') ? 'selected="selected"' : ''; ?>>Massachusetts</option>
            <option value="MI"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MI') ? 'selected="selected"' : ''; ?>>Michigan</option>
            <option value="MN"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MN') ? 'selected="selected"' : ''; ?>>Minnesota</option>
            <option value="MS"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MS') ? 'selected="selected"' : ''; ?>>Mississippi</option>
            <option value="MO"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MO') ? 'selected="selected"' : ''; ?>>Missouri</option>
            <option value="MT"<?php echo (isset($_POST['states']) && $_POST['states'] == 'MT') ? 'selected="selected"' : ''; ?>>Montana</option>
            <option value="NE"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NE') ? 'selected="selected"' : ''; ?>>Nebraska</option>
            <option value="NV"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NV') ? 'selected="selected"' : ''; ?>>Nevada</option>
            <option value="NH"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NH') ? 'selected="selected"' : ''; ?>>New Hampshire</option>
            <option value="NJ"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NJ') ? 'selected="selected"' : ''; ?>>New Jersey</option>
            <option value="NM"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NM') ? 'selected="selected"' : ''; ?>>New Mexico</option>
            <option value="NY"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NY') ? 'selected="selected"' : ''; ?>>New York</option>
            <option value="NC"<?php echo (isset($_POST['states']) && $_POST['states'] == 'NC') ? 'selected="selected"' : ''; ?>>North Carolina</option>
            <option value="ND"<?php echo (isset($_POST['states']) && $_POST['states'] == 'ND') ? 'selected="selected"' : ''; ?>>North Dakota</option>
            <option value="OH"<?php echo (isset($_POST['states']) && $_POST['states'] == 'OH') ? 'selected="selected"' : ''; ?>>Ohio</option>
            <option value="OK"<?php echo (isset($_POST['states']) && $_POST['states'] == 'OK') ? 'selected="selected"' : ''; ?>>Oklahoma</option>
            <option value="OR"<?php echo (isset($_POST['states']) && $_POST['states'] == 'OR') ? 'selected="selected"' : ''; ?>>Oregon</option>
            <option value="PA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'PA') ? 'selected="selected"' : ''; ?>>Pennsylvania</option>
            <option value="RI"<?php echo (isset($_POST['states']) && $_POST['states'] == 'RI') ? 'selected="selected"' : ''; ?>>Rhode Island</option>
            <option value="SC"<?php echo (isset($_POST['states']) && $_POST['states'] == 'SC') ? 'selected="selected"' : ''; ?>>South Carolina</option>
            <option value="SD"<?php echo (isset($_POST['states']) && $_POST['states'] == 'SD') ? 'selected="selected"' : ''; ?>>South Dakota</option>
            <option value="TN"<?php echo (isset($_POST['states']) && $_POST['states'] == 'TN') ? 'selected="selected"' : ''; ?>>Tennessee</option>
            <option value="TX"<?php echo (isset($_POST['states']) && $_POST['states'] == 'TX') ? 'selected="selected"' : ''; ?>>Texas</option>
            <option value="UT"<?php echo (isset($_POST['states']) && $_POST['states'] == 'UT') ? 'selected="selected"' : ''; ?>>Utah</option>
            <option value="VT"<?php echo (isset($_POST['states']) && $_POST['states'] == 'VT') ? 'selected="selected"' : ''; ?>>Vermont</option>
            <option value="VA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'VA') ? 'selected="selected"' : ''; ?>>Virginia</option>
            <option value="WA"<?php echo (isset($_POST['states']) && $_POST['states'] == 'WA') ? 'selected="selected"' : ''; ?>>Washington</option>
            <option value="WV"<?php echo (isset($_POST['states']) && $_POST['states'] == 'WV') ? 'selected="selected"' : ''; ?>>West Virginia</option>
            <option value="WI"<?php echo (isset($_POST['states']) && $_POST['states'] == 'WI') ? 'selected="selected"' : ''; ?>>Wisconsin</option>
            <option value="WY"<?php echo (isset($_POST['states']) && $_POST['states'] == 'WY') ? 'selected="selected"' : ''; ?>>Wyoming</option>
        </select>
        <label for ="city">City:</label>
        <input type="text" id="city" name="city"
        <?php
                if(isset($_POST['city'])&& $city==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['city'])){
                    echo "value=$city>";
                }
                else{
                    echo"><span>*</span>";
                }

         ?>

        <br>    
        <label for ="zipcode">Zip Code:</label>
        <input type="text" id="zipcode" name="zip_code"
        <?php
                if(isset($_POST['zip_code'])&& $zipcode==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['zip_code'])){
                    echo "value=$zipcode>";
                }
                else if(isset($_POST['zip_code'])&& !preg_match($validzip, $zipcode) ){
                    echo "value=$zipcode>";
                    echo "<span>Please enter a vaild zip-code</span>";
                }
                else{
                    echo"><span>*</span>";
                }

            ?>

        <br>    
        <label for ="phonenumber">Phone Number:</label>
        <input type="text" id="phonenumber" name="phone_number"
        <?php
                if(isset($_POST['phone_number'])&& $phonenumber==""){
                    echo"><span>This field is required</span>";
                }
                else if(isset($_POST['phone_number'])){
                    echo "value=$phonenumber>";
                }
                else if(isset($_POST['phone_number'])&& !preg_match($vaildpn, $phonenumber)){
                    echo "value=$phonenumber>";
                    echo "<span>Invaild Phone Number, please enter between 7-10 digts</span>";
                }
                else{
                    echo"><span>*</span>";
                }
         ?>

        <button type="submit" name="order" id="order" value="Checkout">Checkout</button>
    </form> 

    </main>

<footer>        
        Sierra Sprungl – CS3800 Final Project - Spring 2020     
    </footer>

1 Ответ

0 голосов
/ 07 апреля 2020

Не отправлено $_POST['order']. Попробуйте добавить это к вашей форме:

<input type="hidden" value="1" name="order">

Я бы также посоветовал вам использовать лучшие методы проверки, такие как filter_var

...