Primer acceso de usuario - Forum

Forum Navigation
You need to log in to create posts and topics.

Primer acceso de usuario

Buenas noches.

Necesito saber si un usuario que accede a mi web lo hace por primera vez o no, es decir, después de darse de alta a la web con neoPhpUserInsert. Una vez dado de alta (esto me funciona bien) el usuario se loguea usando neoPhpUserLogin (puede ser un minuto después o tres días después), y necesito saber si es la primera vez que entra o no, para poder inicializar una serie de valores en otras tablas.

He probado tratando de leer el id cuando el usuario se da de alta en la tabla neousers pero no me funciona (o al menos no lo consigo o no sé cómo hacerlo...).

Otra cosa que he probado es, cuando el usuario se loguea, tratar de leer el id en otra tabla diferente (por ejemplo, clientes) y comprobar si existe o no... si existe es porque el usuario NO es la primera vez que entra en la web, pero si no existe es porque aún no se ha logueado nunca y ahí sería cuando se inicializarían los valores para ese id en otras tablas. Consigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).

La idea es tener en varias tablas un id que estará asociado al id de la tabla neousers (lo que es establecer relaciones de toda la vida).

Agradezco toda ayuda.

Saludos.

Consigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).

@manugarciaeu si un SELECT no encuentra ningún resultado devolverá un Array con cero elementos. Es decir, te basta con utilizar ArrayLen en la subrutina donde recoges los datos y comprobar si el valor es cero. Algo así:

CreateEmptyArray [arrayData]
SetVar [arrayData] [data]
ArrayLen [arrayData] [totalRecords]
If [totalRecords] == 0
  .Es la primera vez que entra
EndIf

Donde [data] es la información recogida de la base de datos por neoPHP.

Saludos

CDY@44 has reacted to this post.
CDY@44

Cierto, la verdad es que no caí en ese detalle. Si la longitud es 0 en la consulta, es porque no hay registros. Pero ahora tengo otra duda, la variable [totalRecords] es local, ¿no? Cuando salga del procedimiento, ¿podré comprobar su valor?

Gracias.

@manugarciaeu no, todas las variables son globales excepto las que se reciben como parámetros. En este caso [data]

Saludos

Perfecto, gracias. Luego pruebo y te comento.

Otro de los problemas que estoy teniendo en con el "level acces" de los usuarios cuando se registran, 0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?

-1 es para quien no se haya logueado y pueda ejecutar sentencias SQL, ¿existe alguno más? Creo que con esto despejo ya todas las dudas.

Gracias.

@manugarciaeu en realidad puedes tener todos los niveles que quieras. Cuando tu le asignas un nivel de acceso a una SQL o a un archivo, cualquier usuario con ese nivel o inferior puede realizar la consulta. Excepto -1 que es de acceso para cualquiera incluso si no está logueado.

0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?

Esto es sólo una sugerencia para que se entienda mejor como está organizado.

Gracias a ti

Buenas.

Lo acabo de probar y funciona en parte. Cuando hago lo siguiente:

CreateEmptyArray [arrayDatosGuion]
SetVar [arrayDatosGuion] [data]
ArrayLen [arrayDatosGuion] [totalRegistrosGuion]
SetVar [registroActual] 0
SetVar [idGuion] [arrayDatosGuion([registroActual]).id]
SetVar [comboElegirCapa] [arrayDatosGuion([registroActual]).capa]
SetVar [comboElegirCaperuz] [arrayDatosGuion([registroActual]).caperuz]
SetVar [comboElegirTunica] [arrayDatosGuion([registroActual]).tunica]

MessageBox "Número de Registros" "[totalRegistrosGuion]" "" ""

Me muestra de forma correcta el número de registros, que siempre va a ser 1. Cuando intento leer la variable fuera de la subrutine, me dice undefined. Por ejemplo, esto no funciona:

If [totalRegistrosGuion] == 0
    MessageBox "[totalRegistrosGuion]" "No existe el guion" "" ""
    neoPhpExecSql "db1" "insertguionC" "[idusuario]::blanco::blanco::blanco::0" ""
Else
    MessageBox "[totalRegistrosGuion]" "YES" "" ""
Endif

Siempre se va al ELSE y [totalRegistrosGuion] me dice que es Undefined.

¿Qué hago mal? Aplicando mis conocimientos de cliente/servidor, ¿quizá se deba a que el If/Else está en la misma página que la sentencia neoPhpExecSql que llama a la subrutina? Al no hacer una nueva llamada al servidor, entiendo que no ha lugar a que se actualicen las variables... Si es así, ¿cómo se soluciona?

Creo que voy a dar mucho la lata por aquí, jeje...

Saludos.

@manugarciaeu si el valor es "undefined" es que la variable aun no tiene datos, es decir, intentas ver que valor tiene antes de que se haya guardado ningún valor en ella. Ten en cuenta que la subrutina para parsear los datos se ejecuta una vez se han recibido los datos del servidor, cualquier instrucción detrás de neoPhpExecSql se ejecutará antes de que esto suceda.

Es decir, la carga de datos desde el servidor es asíncrona. Esto permite que el programa se siga ejecutando mientras se piden y reciben los datos. Solo puedes estar seguro de que los datos están disponibles una vez que se ejecuta la subrutina que los parsea (callback).

Espero haberme explicado :)

Saludos.

Muchísimas gracias, ya he podido arreglarlo. Te has explicado perfectamente.

Muy contento con el entorno, poco a poco iré cogiendo práctica y con tu ayuda iré conociendo mucho mejor esta herramienta que me sigue pareciendo fantástica, y el soporte para las dudas es impresionante.

Saludos.

luishp has reacted to this post.
luishp