因此,我遇到的问题是我无法获取用于在网站上进行用户注册的代码。如果代码是独立的,那会更容易。但是我已经使用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();
?>