将自定义表单数据插入Wordpress网站

时间:2020-05-23 20:36:25

标签: wordpress

因此,我遇到的问题是我无法获取用于在网站上进行用户注册的代码。如果代码是独立的,那会更容易。但是我已经使用wordpress的CMS构建了该站点,整个前端都是基于其主题的。我需要我的代码对用户数据进行验证,并将用户数据推送到数据库中。

我已经尝试了论坛中的示例,但是它们与面向对象的php代码非常不同。我也不明白为什么我没有从用户验证中收到错误消息。下面是负责处理整个过程的代码。

    <?php
     /*Template Name: Customer Register Page*/
       get_header();
    ?>
    <?php 
    //error_reporting(0);//Line hides error. Nature of the error "count(): Parameter        
    //must be an array or an object that implements Countable".
      the_content();?>

      <style type="text/css">

       * {
           font-family: Arial;
           font-size: 17px;
         }

       h1 {
           font-size: 35px;
           text-align: center;
           color: white;
          }

       input[type=text], input[type=password], input[type=number], input[type=tel],     
       input[type=email] {
            width: 25%;
            padding: 15px;
            margin: 5px 0 22px 0;
            display: inline-block;
            border: 1px solid black;
            border-radius: 30px;
            background: #f1f1f1;
          }

          input[type=text]:hover, input[type=password]:hover,  
          input[type=number]:hover, input[type=tel]:hover, input[type=email]:hover {
            background-color: #FF8000;
            cursor: pointer;
          }

          input[type=text]:focus, input[type=password]:focus,  
          input[type=number]:focus, input[type=tel]:focus, input[type=email]:focus {
            background-color: #FFFF66;
            outline: none;
          }

       button.register {
            background-color: green;
            color: white;
            padding: 15px 20px;
            margin: 8px 0;
            cursor: pointer;
            width: 15%;
            opacity: 0.9;
          }

       button.register:hover {
           opacity: 1;
          }

       button.reset {
           background-color: red;
           color: white;
           padding: 15px 20px;
           margin: 8px 0;
           cursor: pointer;
           width: 15%;
           opacity: 0.9;
          }

       button.reset:hover {
           opacity: 1;
          }

       span.error {
           color: white;
           font-size: 15px;
           box-sizing: border-box;
          }

       span.error.active {
          padding: 0.3em;
          }

       div.first_name_elements, div.surname_elements, div.middle_name_elements,      
       div.id_number_elements, div.phone_number_elements,  
       div.alternative_phone_number_elements, div.email_elements, 
       div.address_elements, div.username_elements, div.password_elements, 
       div.confirm_password_elements, div.bottom_elements {
          color: white;
          padding-left: 10px;
          }

         </style>

         <?php
           require_once 'wp-config.php';

           $first_name = $surname = $middle_name = $id_number = $phone_number =  
           $alternative_phone_number = $email = $address = $username = $password =  
           $confirm_password = "";

           $first_name_error = $surname_error = $middle_name_error = 
           $id_number_error = $phone_number_error = $alternative_phone_number_error =   
           $email_error = $address_error = $username_error = $password_error =      
           $confirm_password_error = "";



    if($_SERVER["REQUEST_METHOD" == "POST"]) {
      global $wpdb;
     //Validate first name
    if(empty(trim($_POST["first_name"]))){
    $first_name_error = "Please enter your first name.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE first_name = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_first_name);

        // Set parameters
        $param_first_name = trim($_POST["first_name"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $first_name = trim($_POST["first_name"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate surname
if(empty(trim($_POST["surname"]))){
    $surname_error = "Please enter your  surname.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE surname = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_surname);

        // Set parameters
        $param_surname = trim($_POST["surname"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $surname = trim($_POST["surname"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate middle_name
if(empty(trim($_POST["middle_name"]))){
    $middle_name_error = "Please enter your middle name.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE middle_name = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_middle_name);

        // Set parameters
        $param_middle_name = trim($_POST["middle_name"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $middle_name = trim($_POST["middle_name"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate id_number
if(empty(trim($_POST["id_number"]))){
    $id_number_error = "Please enter your id number.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE id_number = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_id_number);

        // Set parameters
        $param_id_number = trim($_POST["id_number"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $id_number = trim($_POST["id_number"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate phone_number
if(empty(trim($_POST["phone_number"]))){
    $phone_number_error = "Please enter your phone number.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE phone_number = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_phone_number);

        // Set parameters
        $param_phone_number = trim($_POST["phone_number"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $phone_number = trim($_POST["phone_number"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate alternative_phone_number
if(empty(trim($_POST["alternative_phone_number"]))){
    $alternative_phone_number_error = "Please enter your alternative_phone_number.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE alternative_phone_number = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_alternative_phone_number);

        // Set parameters
        $param_alternative_phone_number = trim($_POST["alternative_phone_number"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $alternative_phone_number = trim($_POST["alternative_phone_number"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate email
if(empty(trim($_POST["email"]))){
    $email_error = "Please enter your email.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE email = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_email);

        // Set parameters
        $param_email = trim($_POST["email"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $email = trim($_POST["email"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate address
if(empty(trim($_POST["address"]))){
    $address_error = "Please enter your address.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE address = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_address);

        // Set parameters
        $param_address = trim($_POST["address"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

                $address = trim($_POST["address"]);

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

 // Validate username
if(empty(trim($_POST["username"]))){
    $username_error = "Please enter your username.";
} else{
    // Prepare a select statement
    $sql = "SELECT id FROM customers WHERE username = ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_username);

        // Set parameters
        $param_username = trim($_POST["username"]);

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // store result
            $stmt->store_result();

            if($stmt->num_rows == 1){
                $username_error = "This username is already taken.";
            } else{
                $username = trim($_POST["username"]);

            } 

        } else{
            echo "Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

// Validate password
if(empty(trim($_POST["password"]))){
    $password_error = "Please enter a password.";     
} elseif(strlen(trim($_POST["password"])) < 6){
    $password_error = "Password must have atleast 6 characters.";
} else{
    $password = trim($_POST["password"]);
}

// Validate confirm password
if(empty(trim($_POST["confirm_password"]))){
    $confirm_password_error = "Please confirm password.";     
} else{
    $confirm_password = trim($_POST["confirm_password"]);
    if(empty($password_error) && ($password != $confirm_password)){
        $confirm_password_error = "Password did not match.";
    }
}

// Check input errors before inserting in database
if(empty($first_name_error) && empty($surname_error) && empty($middle_name_error) && empty($id_number_error) && empty($phone_number_error) && empty($alternative_phone_number_error) && empty($email_error) && empty($address_error) && empty($username_error) && empty($password_error) && empty($confirm_password_error)){

    // Prepare an insert statement
    $sql = "INSERT INTO `customers` (`first_name`, `surname`, `middle_name`, `id_number`, `phone_number`, `alternative_phone_number`, `email`, `address`, `username`, `password`, `password_again`) VALUES ('first_name',
        'surname', 'middle_name', 'id_number', 'phone_number', 'alternative_phone_number', 'email', 'address', 'username', 
        'password', 'password_again')";

    if($stmt = $wpdb->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("sssssssssss", $param_first_name, $param_surname, $param_middle_name, $param_id_number, $param_phone_number, $param_alternative_phone_number, $param_email, $param_address, $param_username, $param_password, $confirm_password);

        // Set parameters
        $param_first_name = $first_name;
        $param_surname = $surname;
        $param_middle_name = $middle_name;
        $param_id_number = $id_number;
        $param_phone_number = $phone_number;
        $param_alternative_phone_number = $alternative_phone_number;
        $param_email = $email;
        $param_address = $address;
        $param_username = $username;
        $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
        $confirm_password = $param_password;

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            // Redirect to login page
            header("location: login.php");
            die();
        } else{
            echo "Something went wrong. Please try again.";
        }

        // Close statement
        $stmt->close();
    }
}

// Close connection
$mysqli->close();
    }

    ?>


    <h1>CUSTOMER REGISTRATION</h1>

    <form method="post" name="register" action="<?php echo  
      htmlspecialchars($_SERVER["PHP_SELF"]);?>" class="registration_form"  
    id="form_registration" onsubmit="return validate()">

    <div class="first_name_elements">
    <label for="first_name">First Name:</label>
    <input type="text" name="first_name" id="first_name" value="<?php echo 
      $first_name;?>" title="A minimum of 4 characters and a maximum of 17 characters"  
      minlenght="4" maxlength="17" placeholder="first name" required><br>
      <span class="error" id="first_name_loc">* <?php echo $first_name_error;?> 
      </span><br>
      </div><br>

     <div class="surname_elements">
     <label for="surname">Surname:</label>
     <input type="text" name="surname" id="surname" value="<?php echo $surname;?>"  
      title="A minimum of 4 characters and a maximum of 17 characters" minlength="4"  
      maxlength="17" placeholder="surname" required><br>
     <span class="error">* <?php echo $surname_error;?></span><br>
     </div><br>

     <div class="middle_name_elements">
     <label for="middle_name">Middle Name:</label>
     <input type="text" name="middle_name" id="middle_name" value="<?php echo 
      $middle_name;?>" title="A minimum of 4 characters and a maximum of 17 
      characters" minlength="4" maxlength="17" placeholder="middle name" required><br>
    <span class="error">* <?php echo $middle_name_error;?></span><br>
    <div><br>

    <div class="id_number_elements">
    <label for="id_number">ID Number:</label>
    <input type="number" name="id_number" id="id_number" value=""   
    placeholder="id_number" required><br>
    <span class="error">* <?php echo $id_number_error;?></span><br>
    </div><br>

    <div class="phone_number_elements">
    <label for="first_name">Phone Number:</label>
    <input type="tel" name="phone_number" id="phone_number" value="" 
    title="+1-876-9378146" placeholder="phone number" required><br>
    <span class="error">* <?php echo $phone_number_error;?></span><br>
    </div><br>

    <div class="alternative_phone_number_elements">
    <label for="alternative_phone_number">Alternative Phone Number:</label>
    <input type="tel" name="alternative_phone_number" id="alternative_phone_number" 
    value="" title="+1-876-9378146" placeholder="alternative_phone_number"  
    required><br>
    <span class="error">* <?php echo $alternative_phone_number_error;?></span><br>
    </div><br>

    <div class="email_elements">
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" value="<?php echo $email;?>" 
     title="yourmail@gmail.com" placeholder="email" required><br>
    <span class="error">* <?php echo $email_error;?></span><br>
    </div><br>

    <div class="address_elements">
    <label for="address">Address:</label>
    <input type="text" name="address" id="address" value="<?php echo $address?>" 
     placeholder="address" required><br>
    <span class="error">* <?php echo $address_error;?></span>
    </div><br>

    <div class="username_elements">
    <label for="username">Username:</label>
    <input type="text" name="username" id="username" value="<?php echo $username?>" 
     title="A minimum of 4 characters and a maximum of 17 characters" min="4" max="17"  
     required><br>
     <span class="error">* <?php echo $username_error;?></span><br>
    </div><br>

       <div class="password_elements">
       <label for="password">Password:</label>
       <input type="password" name="password" id="password" value="" pattern="(?=.*\d)
       (?=.*[a-z])(?=.*[A-Z]).{6,}" title="Minimum 6 characters containing lowercase,  
       uppercase, and at least one number" required>
       </div><br>

       <div class="confirm_password_elements">
       <label for="confirm_password">Re-type Password:</label>
       <input type="password" name="confirm_password" id="confirm_password" value="" 
       pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}" title="Minimum 6 characters  
       containing lowercase, uppercase, and at least one number" required>
       </div><br>

      <div class="bottom_elements">
      <button class="register" type="submit" name="submit"  
      value="Submit">Submit</button>
      <button class="reset" type="reset" name="reset" value="Reset">Reset</button>
      </div>

      </form>

    <?php
     get_footer();
    ?> 

0 个答案:

没有答案
相关问题