function do_register() { global $hasError, $data, $dbc, $globals, $mostrar_captcha; borrar_usuarios_no_activados_antiguos(); if ($mostrar_captcha) { validar_captcha($hasError); } $user_ip = $globals['ip']; // hash sha1 de la clave $sha1pass = PwdHash($data['Password']); // Generamos el código de activación $activ_code = rand(1000, 9999); $usr_email = $data['Email']; $user_name = $data['UserName']; // Valido si existe ya el usuario $rs_duplicate = mysql_query("select count(*) as total from users where user_name='{$user_name}'") or die(mysql_error()); list($total) = mysql_fetch_row($rs_duplicate); if ($total > 0) { $hasError[] = "El usuario ya está dado de alta."; } // Valido si existe ya el email $parts = explode('@', $usr_email); $subparts = explode('+', $parts[0]); // se permiten direcciones del tipo user+extension@gmail.com, que debemos controlar para no permitir abusos $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."; } if (empty($hasError)) { // Insertamos el Nuevo Usuario $sql_insert = "INSERT into `users`\n (`user_email`,`pwd`,`date`,`users_ip`,`activation_code`,`user_name`)\n VALUES\n ('{$usr_email}','{$sha1pass}',now(),'{$user_ip}','{$activ_code}','{$user_name}')\n "; mysql_query($sql_insert, $dbc['link']) or die("Insertion Failed:" . mysql_error()); $user_id = mysql_insert_id($dbc['link']); $md5_id = md5($user_id); mysql_query("update users set md5_id='{$md5_id}' where id='{$user_id}'"); log_insert("register_ok", ip2long($globals['ip'])); $_SESSION['email_registro'] = $usr_email; $_SESSION['email_registro_contador'] = 3; $_SESSION['hasSuccess'] = null; enviar_correo_registro($usr_email, $md5_id, $activ_code); header("Location: thankyou.php"); exit; } }
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; } }