No me muestra los mensajes de error
Publicado por raquel (27 intervenciones) el 27/06/2020 14:12:47
Muy buenas gente! Tengo un formulario de login sencillito, y estoy tratando de que me muestre los errores de error, como por ejemplo si se presiona el boton "login" sin introducir ningun campo, que aparezca un mensajito diciendo "campos requeridos".
En realidad me muestra los mensajes que saco con un "echo" pero quiero que me los muestre del array que tengo declarado para la variable $errors.
Este es el código del formulario:
Y este el .php
He marcado con unos "echo" para comprobar lo que imprime y lo que no, y en el archivo .php me imprime el echo "3", pero yo quisiera que los errores me los imprimiera en la pagina del formulario, donde se encuentra el echo "2".
No sé que estoy haciendo mal pero no hay manera de que me muestre ningún error ahí. Me podeis echar un cable??
Mil gracias!
En realidad me muestra los mensajes que saco con un "echo" pero quiero que me los muestre del array que tengo declarado para la variable $errors.
Este es el código del formulario:
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
<div class="container" style="padding:30px; margin:30px">
<div class="row">
<div class="col-md-4 offset-md-4 ">
<h3> FORMULARIO DE LOGIN </h3>
<form action="acceder.php" name="login" id="login" method="POST" enctype="multipart/form-data" autocomplete="off">
<?php
$errors = array();
$contra="";
$correo="";
echo "1";
if(count($errors)>0):
echo "2"; ?>
<div class="alert alert-danger">
<?php foreach($errors as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div class="form-group row">
<label for="email" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="email" name="email" placeholder="Email" >
<!--value="<?php//echo $correo; ?>"-->
<span id="Mail_error"></span>
</div>
</div>
<div class="form-group row">
<label for="password" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="pwd1" name="pwd1" placeholder="Password" >
<span id="Clave1_error"></span>
</div>
</div>
<div class="form-group my-3">
<button type="submit" class="btn btn-outline-primary" id="btn" name="login">Login</button>
</div>
<a href="recupera.php">Forgot your password?</a>
</form>
</div>
</div>
</div>
Y este el .php
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
91
92
93
94
95
<?php
ob_start();
session_start();
require_once("conexion.php");
$errors = array();
if(isset($_POST['login'])){
$correo=$_POST['email'];
$contra=$_POST['pwd1'];
if(empty($_POST['email']) || empty($_POST['pwd1'])) {
echo "3";
$errors['email'] = "Campo requerido";
$errors['pwd1'] = "Campo requerido";
}else{
$sql = "SELECT * FROM usuario WHERE email=:email LIMIT 1" ;
$resultado_consulta = $pdo->prepare($sql);
$resultado_consulta->bindParam(":email",$correo, PDO::PARAM_STR);
$resultado_consulta->execute();
$resultado = $resultado_consulta->fetch(PDO::FETCH_ASSOC);
$user = $resultado_consulta->rowCount();
if($user>0){
if(password_verify($contra, $resultado['clave'])){
$_SESSION['id_usuario'] = $user['id_usuario'];
$_SESSION['nombre'] = $user['nombre'];
$_SESSION['email'] = $user['email'];
$_SESSION['verified'] = $user['verified'];
//set flash message
$_SESSION['message']= "Está logueado!";
$_SESSION['alert-class'] = "alert-success";
header('location: homepage.php');
exit();
//header('location:dashboard.php');
//echo "login correcto";
}else{
/*echo "
<div class='container'>
<div class='row'>
<div class='col-md-6 offset-3'>
<div class='alert alert-danger text-center' role='lert'>
Contraseña Incorrecta.<br /><a href='registro2.php' class='alert-link'>Volver</a>.
</div>
</div>
</div>
</div>
";*/
$errors['login_fail'] = "Contraseña Incorrecta";
echo "<a href='login.php' class='alert-link'>Volver</a>";
}
}else{
$errors['login-fail'] = "El usuario no existe";
/*echo "
<div class='container'>
<div class='row'>
<div class='col-md-6 offset-3'>
<div class='alert alert-danger text-center' role='lert'>
El usuario no existe.<br /><a href='registro2.php' class='alert-link'>Volver</a>.
</div>
</div>
</div>
</div>
";*/
}
}
}
ob_end_flush();
?>
He marcado con unos "echo" para comprobar lo que imprime y lo que no, y en el archivo .php me imprime el echo "3", pero yo quisiera que los errores me los imprimiera en la pagina del formulario, donde se encuentra el echo "2".
No sé que estoy haciendo mal pero no hay manera de que me muestre ningún error ahí. Me podeis echar un cable??
Mil gracias!
Valora esta pregunta
0