Example #1
0
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;
    }
}
Example #2
0
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;
    }
}