php - 表单数据不显示在数据库中
问题描述
在网站上,有一个表单,管理员可以创建帐户,这些帐户可以是用户或管理员,目前在网站上,当我填写表单字段并将表单数据发布到表单处理文件时,发生了一些事情,我一直环顾四周,但我似乎找不到任何解决方案。
<?php
session_start();
if (!isset($_SESSION['accessRights']) || $_SESSION['accessRights'] == false) {
header("location:../../index.php");
}
if (!isset($_SESSION['accessRights']) || $_SESSION['accessRights'] == "user") {
header("location:../../index.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../css/regform.css">
<link rel="stylesheet" type="text/css" href="../css/bookstore.css">
<script src="../js/formValidation.js" defer></script>
<title>Bookstore</title>
</head>
<body>
<!--nav bar-->
<header>
<div class="logo"><img src="../images/logo.png" alt="book logo"></div>
<nav>
<ul>
<li id="chanlog"><a href="../pages/changelog.php">Changelog</a></li>
<li><a href="../pages/viewBook.php">View Book</a></li>
<li><a href="../pages/addBookForm.php">Add Book</a></li>
<li class="active"><a href="../pages/regForm.php">Create Account</a></li>
<li><a href="../pages/logout.php">Logout</a></li>
</ul>
</nav>
<div class="menu-toggle"></div>
</header>
<div class="reg-title">
<h1>Create Account</h1>
</div>
<!--reg form-->
<div id="form-container" class="sub-heading">
<h2>Login Details</h2>
<form id="regform" action="../../controller/processRegistration.php" method="POST">
<div class="form-col">
<div class="field-icon">
<label for="uname">Username<span class="required"></span></label>
<i class="fas fa-user"></i>
<input type="text" name="user" placeholder="Username" required>
<div class="error hide">Username is required</div>
</div>
<div class="field-icon">
<label for="upass">Password<span class="required"></span></label>
<i class="fas fa-lock"></i>
<input type="text" name="pass" placeholder="Password" required>
<div class="error hide">Password must contain at least 8 characters</div>
</div>
<div class="field-icon">
<label for="urole">Access Rights<span class="required"></span></label>
<i class="fas fa-key"></i>
<input type="text" name="access" placeholder="Access Rights" required>
<div class="error hide">Access rights is required</div>
</div>
</div>
<!--extra details-->
<h2>User Details</h2>
<div class="form-col-2">
<div class="field-icon">
<label for="fname">First Name<span class="required"></span></label>
<i class="fas fa-user"></i>
<input type="text" name="fname" placeholder="First Name" required>
<div class="error hide">Firstname is required</div>
</div>
<div class="field-icon">
<label for="lname">Last Name<span class="required"></span></label>
<i class="fas fa-user"></i>
<input type="text" name="lname" placeholder="Last Name" required>
<div class="error hide">Lastname is required</div>
</div>
<div class="field-icon">
<label for="email">Email<span class="required"></span></label>
<i class="fas fa-at"></i>
<input type="text" name="email" placeholder="Email" required>
<div class="error hide">Email must contain @ symbol</div>
</div>
</div>
<div class="btn-submit">
<input type="submit" id="send-form" value="Sign Up">
</div>
</form>
</div>
<footer><p>2020 Bookstore. All rights reserved.</p></footer>
</body>
</html>
\下面是注册表单中的表单数据的发送位置
<?php
session_start();
require("../model/dbConnection.php");
require("../model/dbFunctions.php");
require("inputFilter.php");
if (!empty([$_POST])) {
$Uname = inputFilter($_POST['user']);
$mypass = inputFilter($_POST['pass']);
$accRights = inputFilter($_POST['access']);
$Fname = inputFilter($_POST['fname']);
$Lname = inputFilter($_POST['lname'])
$Email = inputFilter($_POST['email']);
$LogID = inputFilter($_POST['loginid']);
// password hashed with PASSWORD_HASH()
$hPass = password_hash($mypass, PASSWORD_DEFAULT);
$query = $conn->prepare("SELECT username FROM login WHERE username = :user");
$query->bindValue(":user", $Uname);
$query->execute();
if ($query->rowCount() < 1) { //check if the user exists
newUser($Uname, $hPass, $accRights, $Fname, $Lname, $Email);
echo "User account has been created";
// redirect them to homepage
header('location:../view/pages/viewBook.php');
}
else {
echo "User already exists";
}
}
?>
\下面是插入数据库的函数
function newUser($Uname, $hPass, $accRights, $Fname, $Lname, $Email)
{
global $conn;
try {
$conn->beginTransaction();
$stmt = $conn->prepare("INSERT INTO login(username, password, accessRights)
VALUES (:user, :pass, :access)");
$stmt->bindValue(':user', $Uname);
$stmt->bindValue(':pass', $hPass);
$stmt->bindValue(':access', $accRights);
$stmt->execute();
$lastUserID = $conn->lastInsertId();
$stmt = $conn->prepare("INSERT INTO users(firstName, lastName, email, loginID)
VALUES (:fname, :lname, :email, :loginID)");
$stmt->bindValue(':fname', $Fname);
$stmt->bindValue(':lname', $Lname);
$stmt->bindValue(':email', $Email);
$stmt->bindValue(':loginID', $lastUserID);
$stmt->execute();
$conn->commit(); // save to the db
}
catch (PDOException $ex) {
$conn->rollBack(); // if problem rollback
throw $ex;
}
}
解决方案
推荐阅读
- amazon-web-services - 创建 Dynamodb 复合键
- python - 如何在 linux 上的 VSCode 中保存 .py 文件并且只写一次管理员密码?
- sql - 基于邻接表的分层数据递归查询
- python - 如果 numpy 已经链接到 BLAS(例如 MKL),则值得使用 cython
- android - 在 BLE Android 中写入后无法获得读取特性
- c# - 我应该假设每个拥有的实例都实现 IDisposable 吗?
- machine-learning - 为什么它只适用于在 SVM 分类器中设置 kernel:'rbf'?
- go - 如何检查go文件中是否存在函数
- java - 请求绑定不适用于 Kotlin 类
- javascript - 停止函数直到用户按下输入 jQuery