简体   繁体   中英

PHP Form Validation with preg_match and regular expressions

Hello everyone I am currently trying to validate user input in a form. I am using regular expressions and the php preg_match function. I am trying to do this with the email, phone number, and zip code. However, when the user enters an email, phone number, or zip code that doesn't fit the regular expression, nothing happens, the user is supposed to get an error message when this happens. So I believe my regular expression is not being read and I have no idea why. Thank you for any help.

Here is my code:

  <?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>

There is no $_POST['order'] being submitted. Try adding this to your form:

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

I would also advise you to use better validation methods like filter_var

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM