注册表格正在工作,但错误未显示



我在网页上使用php为我的网站制作了一个注册表格,并将其连接到mySQL。数据库似乎可以工作,注册用户的数据确实出现在其中;注册成功";或者显示任何错误,例如"错误";电子邮件已注册";但这些查询似乎有效,因为它只在符合条件的情况下注册帐户。如果您能帮我把信息传达出去,我将不胜感激。

附件是有问题的代码:

注册表格:

<?php

require_once "config.php";
require_once "session.php";
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) {

$fullname = trim($_POST['name']);
$email = trim($_POST['email']);
$password = trim($_POST['password']);
$confirm_password = trim($_POST['confirm_password']);
$password_hash = password_hash($password, PASSWORD_BCRYPT);

if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
//Bind parameters (s=string, i=int, b=blob, etc), in our case the username is a string so we use "s"
$query->bind_param('s', $email);
$query->execute();
//Store the result so we can check if account exists in database
$query->store_result();
if ($query->num_rows > 0) {
$error .= '<p class="error">The email address is already registered!</p>'; 
} else {
//Validate password
if (strlen($password) < 6) {
$error .= '<p class="error">Password must have atleast 6 characters</p>';
}
//Validate confirm password
if (empty($confirm_password)) {
$error .= '<p class="error">Please enter confirm password.</p>';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= '<p class="error">Passwords did not match</p>';
}
}
if (empty($error)) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?,?,?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= '<p class="success">Your registration was successful</p>';
} else {
$error .= '<p class="error">Something went wrong!</p>';
}
$insertQuery->close();
}               
}
}
$query->close();
//Close DB connection
mysqli_close($db);
}
?>

config.php:

<?php
define('DBSERVER', 'localhost'); //Database server
define('DBUSERNAME', 'root'); //Database username
define('DBPASSWORD',''); //Database password
define('DBNAME', 'users'); //Database name

/* connect to MySQL databse */
$db = mysqli_connect(DBSERVER, DBUSERNAME, DBPASSWORD, DBNAME);
//check db connection
if($db === false){
die("Error: connection error.".mysqli_connect_error());
}
?>

session.php:

<?php
//Start the session
session_start();
//if the user is already logged in then redirect user to welcome page
if (isset($_SESSION["userid"]) && $_SESSION["userid"] === true) {
header("location: loggedinuserhome.html");
exit;
}
?>

我是根据教程制作这个表格的,所以对这个主题缺乏深入的了解,所以如果有人能指导我完成它并明确指出错误,我会很高兴。非常感谢。

您已将消息存储在$error中,但尚未显示。根据使用回声的条件显示它们。

echo$error;

您的Registration Successful消息也存储在$error变量中,但在您打印$error的地方,缺少该消息。

相关内容