
Proteger formulario después de validación
Publicado por Miguel (9 intervenciones) el 12/04/2022 20:25:50
Hola, tengo un proceso de validación de correo electrónico realizado en JavaScript, este lo realizo en la pagina índex, donde le pregunto al usuario el correo electrónico. el usuario recibe un código que debe poner en la pagina y así le redirecciona a un formulario.
El problema que tengo es que intento evitar que puedan entrar en el formulario sin pasar por índex, pero no me funciona la opción de session_start();
Mi archivo índex es el siguiente:
Y en la pagina de de formulario, estoy poniendo esto en la cabecera, y aunque valide, me esta redireccionando a index, no me coge la verificación.
¿Qué estoy haciendo mal
El problema que tengo es que intento evitar que puedan entrar en el formulario sin pasar por índex, pero no me funciona la opción de session_start();
Mi archivo índex es el siguiente:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!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 href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>Análisis de optimización IT</title>
</head>
<body>
<div class="container mt-2">
<div class="row">
<div class="col-md-4 offset-md-4">
<div class="alert" role="alert"></div>
<div class="login-form bg-light mt-4 p-4 shadow">
<div class="row g-3">
<img src="img\logo_konica.png">
<h4 class="text-center">Análisis de optimización IT</h4>
<div class="col-12">
<label id="lbl">Ingrese correo corporativo</label>
<input type="text" id="mail" class="form-control">
</div>
<div class="col-12">
<button id="submit" class="btn btn-dark float-end">solicitar</button>
</div>
</div>
<hr class="mt-4">
<div class="col-12">
<p class="text-center mb-0 fs-6">Ingrese su correo corporativo y se le enviará un código de verificación</p>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous">
</script>
<script>
let dism = '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>';
const alerta = document.querySelector('.alert');
submit.addEventListener('click', (e) => {
limpiaAlerta(alerta);
if (submit.innerHTML == 'solicitar') {
e.preventDefault();
if (mail.value == '') {
alerta.classList.add('show', 'alert-danger', 'alert-dismissible', 'fade');
alerta.innerHTML = 'Se requiere ingrese un correo' + dism;
} else {
limpiaAlerta(alerta);
if (validaEmail(mail.value)) {
alerta.classList.add('show', 'alert-info', 'alert-dismissible', 'fade');
alerta.innerHTML = 'Estamos enviando un codigo a su correo...';
submit.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"></div>';
fetch('php/recibe.php', {
method: 'POST',
body: JSON.stringify({
'mail': mail.value
}),
headers: {
'Content-Type': 'application/json'
}
}).then(res => res.text()).then(res => {
if (res.trim() == 'enviado') {
submit.innerHTML = 'Ingrese';
limpiaAlerta(alerta);
alerta.classList.add('show', 'alert-secondary', 'alert-dismissible',
'fade');
alerta.innerHTML = 'Ingrese el codigo enviado a su correo';
mail.value = '';
lbl.innerHTML = 'Ingrese codigo:';
} else {
submit.innerHTML = 'solicitar';
limpiaAlerta(alerta);
alerta.classList.add('show', 'alert-danger', 'alert-dismissible', 'fade');
alerta.innerHTML = 'No se pudo enviar el correo';
}
});
} else {
limpiaAlerta(alerta);
alerta.classList.add('show', 'alert-warning', 'alert-dismissible', 'fade');
alerta.innerHTML = 'El correo no es valido' + dism;
}
}
} else {
submit.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"></div>';
fetch('php/verifica.php', {
method: 'POST',
body: JSON.stringify({
'codigo': mail.value
}),
headers: {
'Content-Type': 'application/json'
}
}).then(res => res.text()).then(res => {
limpiaAlerta(alerta);
if (res.trim() == 'verificado') {
alerta.classList.add('show', 'alert-success', 'alert-dismissible', 'fade');
alerta.innerHTML = 'Bienvenido' + dism;
window.location.href = "from/solicitud.php";
submit.innerHTML = 'solicitar';
submit.disabled = true;
} else {
alerta.classList.add('show', 'alert-danger', 'alert-dismissible', 'fade');
alerta.innerHTML = 'No pudimos verificar su codigo' + dism;
submit.innerHTML = 'Ingrese';
}
});
}
});
const limpiaAlerta = (elem) => {
elem.classList.remove('show', 'alert-danger', 'alert-warning', 'alert-success', 'alert-info',
'alert-secondary', 'alert-dismissible', 'fade');
elem.innerHTML = '';
}
const validaEmail = (valor) => {
let verificacion = /^(?!\.)[a-zA-Z0-9._-]+@gmail+.[a-zA-Z]{2,4}$/;
return verificacion.test(valor);
}
</script>
</body>
</html>
Y en la pagina de de formulario, estoy poniendo esto en la cabecera, y aunque valide, me esta redireccionando a index, no me coge la verificación.
1
2
3
4
5
6
7
8
9
10
<?php
// Initialize the session
session_start();
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== 'verificado'){
header("location: ../index.php");
exit;
}
?>
¿Qué estoy haciendo mal
Valora esta pregunta


0