注册表单HTML,PHP, mysql没有看到错误



我正在尝试为我的个人网页编码注册表单作为一个实验。

可以加载网页,但是任何事情都会发生。

数据库中没有插入任何内容。

这是HTML代码的形式(请注意,我使用require_once收费的php代码,因为行动="为空:):):sign-up.php

<!-- Incluimos el php de registro -->
<?php 
require_once('php/register.php');
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@300&display=swap" rel="stylesheet">
<title>Cristian Pinela | Página Personal</title>
</head>

<body>
<div id="header">
<h1 id="logo">Cristian Pinela</h1>
</div>
<ul id="menu">
<li><a href="index.html">Inicio</a></li>
<li><a href="log-in.php">Inicia Sesión</a></li>
<li><a href="sign-up.php">Registrate</a></li>
<li><a href="#">Contacto</a></li>
</ul>
<div id="content">
<h2>Formulario de registro</h2>
<!-- Mostramos los posibles errores que haya durante el registro -->
<?php echo $succes; ?>
<?php echo $error; ?>
<p>Por favor, rellena el formulario para crear tu cuenta</p>
<form method="POST" action=""> 
<label for="name">Nombre completo:</label>
<input type="text" id="name" name="name" required="required" >
<br>
<label for="email">email:</label>
<input type="email" id="email" name="email" required="required">
<br>
<label for="password">Contraseña:</label>
<input type="password" id="password" name="password" required="required">
<br>
<label for="confirm_password">Confirmar contraseña:</label>
<input type="password" id="confirm_password" name="confirm_password" required="required">
<br>
<input type="submit" id="submit" value="submit" name="submit">
</form>

</div>
<div id="footer">
<p>Todos los derechos reservados Cristian Pinela</p>
</div>

</body>
</html>
以下是注册过程的主要php代码:

Registration.php

<?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 = '';
/* Asignamos los parámetros con Bind parameters (s=string, i=int, b=blob, etc). En nuestro caso ponemos email con s, ya que es un string */
$query ->bind_param('s',$email);
$query ->execute();
//Almacenamos el resultado, así checkeamos si existe en la base de datos 
$query -> store_result();
if ($query->num_rows > 0){
$error .= '<p class="error">El correo ya se encuentra registrado </p>';
} 
else {
//Validamos la contraseña
if (strlen($password) < 6) {
$error .= '<p class="error">La contraseña debe tener al menos 6 carácteres</p>';
}
if (empty($confirm_password)) {
$error .= '<p class="error">Entra una contraseña de confirmación </p>';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= '<p class="error">Las contraseñas no coinciden </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"> Algo fue mal! </p>';
}

}

}
}
$query -> close();
$insertQuery -> close();
//Cerramos conexión DB
mysqli_close($db);
}
?>

下面是访问DB的config.phpconfig。

<?php
define('DBSERVER', 'localhost:3306'); //Servidor
define('DBUSERNAME', 'cristian.pinela'); //Usuario
define('DBPASSWORD', 'private'); //Contraseña
define('DBNAME', 'cristianpinela'); //Base de datos
/* Conectamos a la base MySQL: */
$db = mysqli_connect(DBSERVER, DBUSERNAME, DBPASSWORD, DBNAME);
// Check db connection
if ($db === false) {
die("Error: connection error. " . mysqli_connect_error());
}
?>

这里是检查会话的session.phpsession.php

<?php
//Iniciamos la sesión de la
session_start();
//Si el usuario está actualmente logeado, lo redirect al welcome page
if (isset($_SESSION["userid"]) && $_SESSION["userid"] == true) {
header("location: index.html");
exit;
}
?>

我已经花了好几天的时间在这上面,我没有看到任何错误。

如果有人能帮助我,我会非常感激。

非常感谢!

这里的交易是你没有加载你的表单上的脚本,当action=""它作为自页工作。

只需将动作更改为:

<form method="POST" action="/Registration.php">
//form
</form>

问题是:

$insertQuery = bind_param("sss",$fullname,$email,$password_hash);

我不得不写:

$insertQuery -> bind_param("sss",$fullname,$email,$password_hash);