Salida de resultados en PHP - Duda
Publicado por Albert (49 intervenciones) el 03/01/2021 14:44:14
Buenos días: Tengo el siguiente PHP que me valida datos del formulario de registro:
Bién, el problema es el siguiente: Me muestra los errores correctamente abriéndose Register_KO.php, pero cuando cierro la ventana, me aparece por debajo "Registro_OK.php", y no lo entiendo, porque el INSERT no se efectua, y por lo tanto, no tendría que cargarme dicha página, ya que esta dentro del If "si no hay errores" ?¿? (Alguien sabe porque sucede esto??)
Gracias de antemano, y un saludo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php header('Content-Type: text/html; charset=utf-8');
/* Formulari.php - Validador de formulario */
// Incluimos el colector de funciones
require_once('db_fns.php');
include ('Register_OK.php');
$msj_require = "";
$msj_email = "";
$msj_user_exist = "";
$msj_email_exist = "";
# Se ha enviado el formulario?
if($_SERVER["REQUEST_METHOD"] == "POST") {
# Aqui se validan los datos
// Test para datos requeridos
if(empty($_POST['usuario']) || empty($_POST['password']) || empty($_POST['email'])
|| empty($_POST['re_password']) || empty($_POST['nombreLeft']) || empty($_POST['nombreRight'])
|| empty($_POST['sexoLeft']) || empty($_POST['sexoRight'])) {
$msj_require = "Debes rellenar todos los campos del formulario";
$errors = true;
}
$username = trim($_POST['usuario']);
$email = trim($_POST['email']);
$passwd = trim($_POST['password']);
$passwd2 = trim($_POST['re_password']);
$nameLeft = trim($_POST['nombreLeft']);
$sexLeft = $_POST['sexoLeft'];
$nameRight = trim($_POST['nombreRight']);
$sexRight = $_POST['sexoRight'];
//Validamos el formato de email
if (!filter_var(($email), FILTER_VALIDATE_EMAIL)){
$msj_email = "El formato de email introducido no es valido";
$errors = true;
}
// Conexión con DB
$con = db_connect();
$sql_user = "SELECT * FROM usuarios WHERE usuario = '$username'";
$user = mysqli_query($con, $sql_user);
$total_user = mysqli_num_rows($user);
if(mysqli_num_rows($user)>0) {
// Si es mayor a cero ya existe el usuario
$msj_user_exist = "El Nombre de pareja ya existe.";
$errors = true;
}
$sql_mail = "SELECT * FROM usuarios WHERE email = '$email'";
$mail = mysqli_query($con, $sql_mail);
$total_mail = mysqli_num_rows($mail);
if(mysqli_num_rows($mail)>0) {
// Si es mayor a cero ya existe el email
$msj_email_exist = "Este Email ya existe.";
$errors = true;
}
# Se procesa el formulario o tiene errores?
if($errors = false) {
$add = "INSERT INTO usuarios (usuario, email, password, nom_left, sexo_left, nom_right, sexo_right)
values ('$username','$email','$passwd','$nameLeft','$sexLeft','$nameRight','$sexRight')";
mysqli_query($con, $add);
if (mysqli_affected_rows()>0) {
//Si se agrego el registro sin errores llevar a pagina Register_OK
header ('Location: Register_OK.php');
}
//Liberamos recorset de ejecución del query y cerramos conexión
mysqli_close();
# Acabo la aplicación
exit;
}
else
$msj_require;
$msj_email;
$msj_user_exist;
$msj_email_exist;
}
# Cargo la página para que muestre los errores
include ('Register_KO.php');
?>
Bién, el problema es el siguiente: Me muestra los errores correctamente abriéndose Register_KO.php, pero cuando cierro la ventana, me aparece por debajo "Registro_OK.php", y no lo entiendo, porque el INSERT no se efectua, y por lo tanto, no tendría que cargarme dicha página, ya que esta dentro del If "si no hay errores" ?¿? (Alguien sabe porque sucede esto??)
Gracias de antemano, y un saludo.
Valora esta pregunta


0