/
thankyou.php
194 lines (131 loc) · 6.93 KB
/
thankyou.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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php
include("includes/general.inc.php");
include("includes/dbc.inc.php");
page_protect(false, true);
// Si no estamos en una sesión de registro -> error 404
if (!isset($_SESSION["email_registro"]))
{
header("HTTP/1.0 404 Not Found");
include("404.php");
exit();
}
// Cuando pulsamos submit del formulario entramos por aquí...
if (array_key_exists('doRegister', $_POST))
{
// Filtramos todos los campos del formulario, para evitar código malicioso
foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}
// Validamos los datos, y si son correctos creamos el usuario
do_register();
}
get_header("thankyou.php");
escribir_titulo("Cuenta pendiente de activación", "Mira tu buzón");
escribir_caja_resultado($_SESSION['hasSuccess'],"success");
escribir_caja_resultado($_SESSION['hasInfo'],"information");
// Mostramos una caja con los errores encontrados tras hacer submit
escribir_resultado_validaciones($hasError);
?>
<div class="contentArea">
<div class="full-page">
<div class="mensaje" id="mensaje_email">
<h1 class="title">Muchas gracias</h1>
<p>Hemos enviado un mensaje con un enlace de activación a la siguiente dirección de correo electrónico:</p>
<div id="email-confirm-show"><h2 class="headline"><?php echo $_SESSION['email_registro'] ?></h2></div>
<?php if ($_SESSION['email_registro_contador'] > 0) { ?>
<div id="oculto-inicialmente">
<form class="cmxform" id="CommentForm" method="post" action="<?= $_SERVER['PHP_SELF'] ?>" >
<fieldset>
<legend>Formulario de cambio de correo electrónico</legend>
<div>
<input id="CambioEmail" name="CambioEmail" class="textInput" <?php if(isset($_SESSION["email_registro"])) echo 'value="' . $_SESSION["email_registro"] . '"'; ?> />
<button name="doRegister" value="Register" type="submit" class="btn"><span>Cambiar correo</span></button>
</div>
</fieldset>
</form>
</div>
<?php } ?>
<p>Para activar tu cuenta en <?php echo $globals['nombrewebsite']; ?> haz clic sobre el enlace que aparece en ese mensaje. Deberás hacerlo en las próximas 72 horas o se anulará automáticamente.</p>
<p><strong>Atención:</strong> Si no recibes el email de activación en unos minutos búscalo en la carpeta de spam.</p>
<?php if ($_SESSION['email_registro_contador'] > 0) { ?>
<p>Si te has equivocado al introducir tu correo electrónico <a id="mostrar-cambio-email" href="#">pulsa aquí para corregirlo</a>.</p>
<?php } ?>
</div>
</div>
<!-- End of Content -->
<div class="clear"></div>
</div>
<!-- End of Content -->
<div class="clear"></div>
<?php
// Mostramos el pie de página
get_footer();
// FUNCIONES
function do_register() {
global $hasError, $data, $dbc, $globals;
// Generamos el nuevo código de activación
$activ_code = rand(1000,9999);
// email inicial
$usr_email_orig = $_SESSION['email_registro'];
$parts_orig = explode('@', $usr_email_orig);
$subparts_orig = explode('+', $parts_orig[0]); // se permiten direcciones del tipo user+extension@gmail.com, que debemos controlar para no permitir abusos
$usr_email_sinext_orig = strtolower($subparts_orig[0] . '@' . $parts_orig[1]);
// nuevo email
$usr_email = $data['CambioEmail'];
$parts = explode('@', $usr_email);
$subparts = explode('+', $parts[0]); // se permiten direcciones del tipo user+extension@gmail.com, que debemos controlar para no permitir abusos
$usr_email_sinext = strtolower($subparts[0] . '@' . $parts[1]);
if (($usr_email_orig == $usr_email) || ($usr_email_sinext_orig == $usr_email_sinext))
{
$hasError[] = "No ha cambiado el correo.";
return;
}
$rs_duplicate = mysql_query("select count(*) as total from users where user_email = '$subparts[0]@$parts[1]' or user_email LIKE '$subparts[0]+%@$parts[1]'") or die(mysql_error());
list($total) = mysql_fetch_row($rs_duplicate);
if ($total > 0)
{
$hasError[] = "El email ya está dado de alta por otro usuario.";
return;
}
$result = mysql_query("SELECT `id`,`approved`, `banned`, `md5_id` FROM users WHERE user_email = '$subparts_orig[0]@$parts_orig[1]' or user_email LIKE '$subparts_orig[0]+%@$parts_orig[1]'") or die (mysql_error());
$num = mysql_num_rows($result);
if ( $num == 0 )
{
$hasError[] = "Ya no existe dicho usuario.";
return;
}
else
{
list($id,$approved,$banned,$md5_id) = mysql_fetch_row($result);
if ($approved)
{
$hasError[] = "La cuenta ya está activada. Para cambiar el correo conéctese y vaya a su perfil.";
return;
}
if ($banned == 1)
{
$hasError[] = "El usuario está baneado.";
return;
}
}
if(empty($hasError)) {
// Actualizamos el nuevo email
$sql_update = "UPDATE `users` SET `user_email` = '$usr_email', `activation_code` = '$activ_code' WHERE `id` = '$id'";
mysql_query($sql_update,$dbc['link']) or die("Update Failed:" . mysql_error());
$_SESSION['email_registro_contador']--;
$_SESSION['email_registro'] = $usr_email;
$_SESSION['hasSuccess'] = "Se ha cambiado correctamente el correo y se ha enviado allí un nuevo mensaje de activación.";
if ($_SESSION['email_registro_contador'] == 1)
{
$_SESSION['hasInfo'] = "Sólo se te permitirá un cambio más.";
}
else if ($_SESSION['email_registro_contador'] == 0)
{
$_SESSION['hasInfo'] = "Por motivos de seguridad ya no se te permiten más cambios.";
}
enviar_correo_registro($usr_email,$md5_id,$activ_code);
header("Location: thankyou.php");
exit();
}
}
?>