JS验证后PHP注册表单无法提交数据至数据库的问题排查
JS验证后PHP注册表单无法提交数据至数据库的问题排查
我帮你梳理了代码里的几个关键问题,这应该就是导致数据存不进数据库的核心原因:
PHP标签语法错误
你在PHP代码段开头写了<<?php,这里多了一个多余的左尖括号<,正确的PHP起始标签应该是<?php。这个错误会让服务器完全无法解析你的PHP逻辑,哪怕表单验证通过提交了,后端也不会执行插入数据库的操作,这是最致命的问题。JavaScript提交逻辑的冗余判断
虽然不影响功能,但你在submit事件里的e.submitter && e.submitter.name === "signup"判断有点多余——你的表单里只有一个提交按钮,直接在验证通过后调用form.submit()就可以了,没必要额外判断提交源。
另外给你两个小优化建议,能让代码更健壮:
- 给确认密码的输入框加上
name="password2",保持表单元素的完整性(哪怕后端暂时用不到); - 在PHP里对用户输入做一下去空格处理,避免用户不小心输入的前后空格干扰数据:
$username = trim($_POST["username"]); $email = trim($_POST["email"]);
修复后的PHP代码开头应该是这样的:
<?php if(isset($_POST["signup"])) { require("connection.php"); try { $username = trim($_POST["username"]); $email = trim($_POST["email"]); $password = $_POST["password"]; $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $stmt = $db->prepare("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)"); $stmt->bindParam(':username', $username); $stmt->bindParam(':email', $email); $stmt->bindParam(':password', $hashedPassword); $stmt->execute(); // 注册成功后建议跳转到登录页,避免表单重复提交 header("Location: login.php"); exit(); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); } $db = null; } ?>
备注:内容来源于stack exchange,提问作者Pv33_
相关产品推荐
相关产品推荐

