Página no encontrada al acceder a un perfil de usuario como anónimo

Un problema que puede ocurrir cuando se realiza una migración de usuarios, es que después de realizar la carga de los mismos, los usuarios anónimos no puedan acceder al perfil de estos usuarios nuevos, mientras que, tanto el usuario administrador (uid 1) y el resto de usuarios autentificados sí tienen permisos para acceder a los perfiles de todos.

El error que aparece es Página no encontrada (page not found), y se produce porque cuando se crea un usuario, hasta que éste no hace login por primera vez, no aparece en los listados que se muestran a los usuarios anónimos, ya que filtra la columna "access" de la tabla "users", si es igual a 0, no muestra los registros.

Tampoco serán visibles para los anónimos los nuevos usuarios que no se hayan identificado en ninguna ocasión en los diferentes listados o bloques, por ejemplo el de últimos usuarios. Como posible solución a este problema, en el caso de que sea el resultado de una migración, se pueden actualizar en la tabla de usuarios aquellos que no se hayan identificado nunca, poniendo su fecha de último acceso igual a su fecha de creación.

UPDATE users SET access=created WHERE access = 0;

O si solamente necesitamos que se muestren los últimos usuarios en un bloque, sin incluir aquellos que no se han llegado a identificar nunca, para evitar que a los usuarios anónimos se les muestre un contenido al que no van a poder acceder, podemos hacer un snipplet de código php con el filtro que necesitemos. En Administrar » Construcción del sitio » Bloques le damos a Añadir Bloque, le ponemos un nombre, por ejemplo "Últimos usuarios" y en el cuerpo añadimos algo como esto:

$sql = "SELECT * FROM {users} WHERE status !=0 AND access !=0 AND uid > 1 ORDER BY created DESC";
$result = db_query_range($sql,0,5);
echo '

    ';
    while($data = db_fetch_object($result)) {
    echo '
  • ';
    print l($data->name, 'user/'.$data->uid);
    echo '
  • ';
    }
    echo '

';
?>

Es importante que el filtro sea PHP Filter, para que se pueda ejecutar correctamente. El último paso es colocar el bloque en la región donde queramos mostrarlo.

Añadir nuevo comentario