Функция электронной почты в скрипте регистрации PHP вызывает ошибку

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

Я получаю следующую ошибку:

Предупреждение: mysqli_stmt_close () ожидает, что параметр 1 будет mysqli_stmt, логическое значение приведено в /storage/ssd4/573/2779573/public_html/pt-5-register.php в строке 190`

Строка 190 является пятой от последней строки в блоке кода ниже. Строка 190 показывает этот код; mysqli_stmt_close($stmt);,

Ниже приведен скрипт PHP, который включает в себя функцию электронной почты:

<?php
// Include config file
require_once 'config.php';

// Define variables and initialize with empty values
$username = $email = $password = $confirm_password = "";
$username_err = $email_err = $password_err = $confirm_password_err = "";// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{

// Validate username
if(empty(trim($_POST["username"])))
{
$username_err = "Please enter a username.";
}

else
{

// Prepare a select statement
$sql = "SELECT id FROM users WHERE username = ?";

if($stmt = mysqli_prepare($connect, $sql))
{

// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_username);

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

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt))
{

/* store result */
mysqli_stmt_store_result($stmt);

if(mysqli_stmt_num_rows($stmt) == 1)
{
$username_err = "This username is already taken.";
}

else
{
$username = trim($_POST["username"]);
}

}

else
{
echo "Oops! Something went wrong. Please try again later.";
}

}

// Close statement
mysqli_stmt_close($stmt);
}// Validate password
if(empty(trim($_POST['password'])))
{
$password_err = "Please enter a password.";
}

elseif(strlen(trim($_POST['password'])) < 6)
{
$password_err = "Password must have atleast 6 characters.";
}

else
{
$password = trim($_POST['password']);
}// Validate confirm password
if(empty(trim($_POST["confirm_password"])))
{
$confirm_password_err = 'Please confirm password.';
}

else
{
$confirm_password = trim($_POST['confirm_password']);
if($password != $confirm_password)
{
$confirm_password_err = 'Password did not match.';
}
}// Validate email
if(empty(trim($_POST["email"])))
{
$email_err = "Please enter your email.";
}

else
{

// Prepare a select statement
$sql = "SELECT id FROM users WHERE email = ?";

if($stmt = mysqli_prepare($connect, $sql))
{

// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_email);

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

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt))
{

/* store result */
mysqli_stmt_store_result($stmt);

if(mysqli_stmt_num_rows($stmt) == 1)
{
$email_err = "This email is already taken.";
}

else
{
$email = trim($_POST["email"]);
}

}

else
{
echo "Oops! Something went wrong. Please try again later.";
}

}

// Close statement
mysqli_stmt_close($stmt);
}// Check input errors before inserting in database
if(empty($username_err) && empty($password_err) &&
empty($confirm_password_err) && empty($email_err))
{

// Prepare an insert statement
$sql = "INSERT INTO users (username, password, email) VALUES (?, ?)";

if($stmt = mysqli_prepare($connect, $sql))
{

// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password,
$param_email);

// Set parameters
$param_username = $username;

$param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a
password hash

$param_email = $email;

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt))

{
// Redirect to login page
header("location: pt-5-login.php");
}

else
{
echo "Something went wrong. Please try again later.";
}
}

// Close statement
mysqli_stmt_close($stmt);

}
mysqli_close($connect);

}

?>

HTML не проблема, но если вы хотите увидеть HTML-код, пожалуйста, дайте мне знать, и я покажу вам код. То же самое можно сказать и о файле конфигурации config.php,

Ниже приведен PHP-скрипт рабочей страницы регистрации, без функции электронной почты:

<?php
// Include config file
require_once 'config.php';

// Define variables and initialize with empty values
$username = $password = $confirm_password = "";
$username_err = $password_err = $confirm_password_err = "";

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{

// Validate username
if(empty(trim($_POST["username"])))
{
$username_err = "Please enter a username.";
}

else
{

// Prepare a select statement
$sql = "SELECT id FROM users WHERE username = ?";

if($stmt = mysqli_prepare($connect, $sql))
{

// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_username);

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

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt))
{

/* store result */
mysqli_stmt_store_result($stmt);

if(mysqli_stmt_num_rows($stmt) == 1)
{
$username_err = "This username is already taken.";
}

else
{
$username = trim($_POST["username"]);
}

}

else
{
echo "Oops! Something went wrong. Please try again later.";
}

}// Close statement
mysqli_stmt_close($stmt);
}

// Validate password
if(empty(trim($_POST['password'])))
{
$password_err = "Please enter a password.";
}

elseif(strlen(trim($_POST['password'])) < 6)
{
$password_err = "Password must have atleast 6 characters.";
}

else
{
$password = trim($_POST['password']);
}

// Validate confirm password
if(empty(trim($_POST["confirm_password"])))
{
$confirm_password_err = 'Please confirm password.';
}

else
{
$confirm_password = trim($_POST['confirm_password']);
if($password != $confirm_password)
{
$confirm_password_err = 'Password did not match.';
}
}

// Check input errors before inserting in database
if(empty($username_err) && empty($password_err) && empty($confirm_password_err))
{

// Prepare an insert statement
$sql = "INSERT INTO users (username, password) VALUES (?, ?)";

if($stmt = mysqli_prepare($connect, $sql))
{

// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);

// Set parameters
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt))

{
// Redirect to login page
header("location: pt-5-login.php");
}

else
{
echo "Something went wrong. Please try again later.";
}
}

// Close statement
mysqli_stmt_close($stmt);
}

// Close connection
mysqli_close($connect);

}

?>

Пожалуйста, покажите мне, где я ошибаюсь с введением функции электронной почты. Большое спасибо

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector