Exemplo n.º 1
0
function do_register()
{
    global $hasError, $data, $dbc, $globals, $mostrar_captcha;
    validar_captcha($hasError);
    // PENDIENTE: VALIDAR EMAIL ... y en register.php
    $user_email = $data['Email'];
    // Valido si existe ya el email
    $parts = explode('@', $user_email);
    $subparts = explode('+', $parts[0]);
    // se permiten direcciones del tipo user+extension@gmail.com, que debemos controlar para no permitir abusos
    $rs_check = mysql_query("select `id` from users where (user_email = '{$subparts['0']}@{$parts['1']}' or user_email LIKE '{$subparts['0']}+%@{$parts['1']}') AND banned=0 limit 1") or die(mysql_error());
    $num = mysql_num_rows($rs_check);
    if ($num <= 0) {
        $hasError[] = "El correo electrónico introducido no está registrado o la cuenta está anulada.";
        return;
    }
    if (empty($hasError)) {
        $new_pwd = GenKey();
        $pwd_reset = PwdHash($new_pwd);
        list($id) = mysql_fetch_row($rs_check);
        $rs_activ = mysql_query("update users set pwd='{$pwd_reset}' WHERE \n                                    id={$id}") or die(mysql_error());
        enviar_correo_recover($user_email, $new_pwd);
        $_SESSION['hasSuccessRecover'] = "Te hemos enviado un mensaje a {$user_email} con tu nueva contraseña.";
        $_SESSION['hasInfoRecover'] = "Si no recibes el correo en unos instantes revisa también en la carpeta de spam.";
        header("Location: login.php");
        exit;
    }
}
Exemplo n.º 2
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;
    }
}
Exemplo n.º 3
0
function do_register()
{
    global $hasError, $data, $dbc, $globals, $mostrar_captcha;
    if ($mostrar_captcha) {
        if (!validar_captcha($hasError)) {
            return;
        }
        // si no introduce correctamente el código de seguridad no debemos mirar nada más... porque podría sacar por fuerza bruta usuario/clave.
    }
    $user_email = $data['UserNameEmail'];
    $pass = $data['Password'];
    if (strpos($user_email, '@') === false) {
        $user_cond = "user_name='{$user_email}'";
    } else {
        $parts = explode('@', $user_email);
        $subparts = explode('+', $parts[0]);
        // se permiten direcciones del tipo user+extension@gmail.com, que debemos controlar para no permitir abusos
        $user_cond = "(user_email='{$subparts['0']}@{$parts['1']}' or user_email LIKE '{$subparts['0']}+%@{$parts['1']}')";
    }
    $result = mysql_query("SELECT `id`,`pwd`,`user_name`,`approved`,`banned`,`user_level` FROM users WHERE {$user_cond} limit 1") or die(mysql_error());
    $num = mysql_num_rows($result);
    if ($num > 0) {
        list($id, $pwd, $user_name, $approved, $banned, $user_level) = mysql_fetch_row($result);
        if ($banned) {
            $hasError[] = "Cuenta anulada.";
            return;
        }
        if (!$approved) {
            $hasError[] = "Cuenta registrada pero aún no activada. Revisa tu buzón de correo y sigue el enlace que allí aparece.";
            return;
        }
        if ($pwd === PwdHash($pass, substr($pwd, 0, 9))) {
            log_insert("login_ok", $id, $id);
            session_regenerate_id(true);
            //prevent against session fixation attacks.
            // this sets variables in the session
            $_SESSION['user_id'] = $id;
            $_SESSION['user_name'] = $user_name;
            $_SESSION['user_level'] = $user_level;
            $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
            //update the timestamp and key for cookie
            $stamp = time();
            $ckey = GenKey();
            mysql_query("update users set `ctime`='{$stamp}', `ckey` = '{$ckey}' where id='{$id}'") or die(mysql_error());
            //set a cookie
            if (isset($_POST['remember'])) {
                setcookie("user_id", $_SESSION['user_id'], time() + 60 * 60 * 24 * COOKIE_TIME_OUT, "/");
                setcookie("user_key", sha1($ckey), time() + 60 * 60 * 24 * COOKIE_TIME_OUT, "/");
                setcookie("user_name", $_SESSION['user_name'], time() + 60 * 60 * 24 * COOKIE_TIME_OUT, "/");
            }
            header("Location: myaccount.php");
            exit;
        } else {
            $hasError[] = "Contraseña incorrecta. Vuelve a intentarlo.";
        }
    } else {
        $hasError[] = "Usuario o correo electrónico inexistente.";
    }
}