Página 1 de 1

Problema con miembro mas reciente  Tema Solucionado

Publicado: 12 Mar 2012, 16:57
por 50l3r
Saludos

Verán, poseo un phpbb3 basado en prosilver. Y externamente a el he creado un registro de usuarios en el cual crea un usuario inactivo. El script es este:
SPOILER_SHOW

Código: Seleccionar todo

<?php
    /*
     * Script para registrar usuarios en phpBB3 desde una página externa.
     * Implementado por Alorse para phpBB-es.COM
     */
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'foro/'; // Cambiar ./foro por la ruta de tu foro
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    require($phpbb_root_path . 'includes/functions_user.' . $phpEx); // Archivo necesario para el registro
    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    // Si el usuario ya se encuentra registrado e idenficado le mustra un aviso en vez del formulario de registro
    if ($user->data['is_registered'] || isset($_REQUEST['not_agreed'])) {
        echo '#usreger';
    }


        //Buscamos cual es el grupo por defecto
        $coppa = (isset($_REQUEST['coppa'])) ? ((!empty($_REQUEST['coppa'])) ? 1 : 0) : false;
        $group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
        $sql = 'SELECT group_id
            FROM ' . GROUPS_TABLE . "
            WHERE group_name = '" . $db->sql_escape($group_name) . "'
                AND group_type = " . GROUP_SPECIAL;
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $group_id = $row['group_id'];

        // Tomamos los valores del formulario.
        $username = request_var('username', '');
        $email = request_var('email', '');
        $password = phpbb_hash(request_var('password', '', true));

        // Pasamos todos lo datos de registro a un vector.
        $user_row = array(
            'username' => $username,
            'user_email' => $email,
            'user_password' => $password,
            'group_id' => $group_id,
            'user_type' => '1',
            'user_new' => 1, // Entrara al grupo de nuevos usuarios registrados.
        );

        $query = 'SELECT username, user_email
            FROM ' . USERS_TABLE . '
            WHERE username = "' . $username . '"
                OR user_email = "' . $email . '"';
        $res = $db->sql_query($query);

        // Verificamos que el usuario no exista y que las contraseñas sean iguales.
        if ($db->sql_fetchrow($res)) {
            echo '#usreger';
        } else {
            // La funcion user_add() del /includes/functions_user.php se encarga del resto.
            user_add($user_row);
            echo '#usrgreat';
        }

    ?>
El usuario me lo registra bien, pero no me sale en miembros mas recientes. Creia que seria porque no estaba activado el usuario, pero, manualmente lo activo tocando en base de datos:

Código: Seleccionar todo

mysql_query("UPDATE foro.phpbb_users set user_type='0' WHERE username = '".$com['UsuarioNombre']."' and user_email='".$com ['UsuarioCorreo']."'");
Quisiera saber el orgien del "miembro mas reciente", es decir, donde se realiza la funcion, o si vosotros supieseis que es lo que ocurre me lo dijeseis.

Muchisimas gracias :P

Re: Problema con miembro mas reciente

Publicado: 12 Mar 2012, 18:15
por Alorse
Lo que pasa es que no lo puedes activar manualmente, supongo que eso pasa porque no tienes activada la opción de registros en el foro y obviamente por más que queden registrados en la base de datos no se van a activar, hay 2 maneras de solucionarlo, la primera y más obvia es que habilites los registros en el foro.
La segunda es que debajo de la función add_user() agregues la función user_active_flip('activate', $user_id);, pero la variable $user_id debes obtenerla de la base de datos, es el último ID que hay en la USERS_TABLE.

Espero te halla sido de ayuda la información.