Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver, que, quiero cogerle el punto (atentos argentinos queridos, cogerle el punto aquí significa lo que significa, ¡y nada más!).

Cita:
Empezado por Román
La única forma en que no se dé ese error es teniendo definida esa variable de sesión y eso lo hacemos al presentar el formulario. Si el listillo nos cambia la sesión pues el afectado es él porqué recibira el error.
Hum... o sea, tratar de aprovechar, precisamente, que no se puede mantener la sesión en condiciones. Pero, ¿esto cómo lo hacemos? Pongámonos en el caso.

El "script" (Snoopy) enviará, directamente, el formulario. Luego siempre estaremos "como en un principio". Siempre será "la primera vez" que se trata de envíar nuestro formulario. Si establecemos una variable de sesión ahí, de nada nos serviría, porque, no la tendríamos a nuestra disposición la siguiente vez. Pero, no sabríamos si es que es la siguiente vez (después de haberla establecido) o no, porque, como el "script" inicia una sesión nueva cada vez... siempre será como la primera vez (argentinos, que os veo con el cachondeíto).

No termino de verlo claro Román. El "script" (Snoopy) no quiere entrar en nuestro sistema, sólo quiere saber si el formulario se procesa bien o mal, si consigue autenticarse con unos datos de usuario, o no lo consigue. No es posible que mantenga (de hecho, ni querrá hacerlo) una sesión de usuario, luego nosotros no podemos basarnos en sesiones de usuario... simplemente es que no podemos... yo lo ví tan claro (que podía hacerse) que hasta me precipité en implementarlo, pero, en cuanto probé con Snoopy... caí en la cuenta de que no podía basarse algo así en variables de sesión: porque no podemos contar con una sesión de usuario.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
¿Te convenciste?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Haz la prueba David, no me digas nada más que no se puede. Sigue el flujo de lo que pasaría con el tal snoopy intentando acceder (#$@&%! perro, ¡cómo da lata! )

Caso A) Snoopy intenta acceder directamente a login.php. No importa si es la primera vez o la chorrocientas. Como el condenado perro cambia la sesión, para login.php será como si fuera la primera vez. Por tanto le da una patada.

Caso B) Snoopy intenta acceder primero a login-form.php. Ahí se establece la sesión, pero, como el condenado perro la cambia, al acceder a login.php estamos como en el caso (a) y le damos una patada.

La única posibilidad que tiene el animal, es preservando la sesión.

pd: Las patadas al perro son simuladas. En el desarrollo de este código no se ha lastimado a ningún cachorrito .

// Saludos
Responder Con Cita
  #4  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Jodó con el perrito.

¡Pero no digas que no lo probé! Inicié este mismo hilo porque lo había probado y, para mi sorpresa, no funcionaba...

Cita:
Empezado por Román
Caso A) Snoopy intenta acceder directamente a login.php. No importa si es la primera vez o la chorrocientas. Como el condenado perro cambia la sesión, para login.php será como si fuera la primera vez. Por tanto le da una patada.
El punto está en que "Como el condenado perro cambia la sesión, para login.php será como si fuera la primera vez". No es que el condenado chucho cambie la sesión, sino que no la inicia nunca, o, dicho de otra forma (pero igual resultado), siempre inicia una nueva. Y no podemos darle la patada a alguien que llega por primera vez a nuestro sitio... ¡ni aunque sea un chucho, que los hay podencos!

Cita:
Empezado por Román
Caso B) Snoopy intenta acceder primero a login-form.php. Ahí se establece la sesión, pero, como el condenado perro la cambia, al acceder a login.php estamos como en el caso (a) y le damos una patada.
En el caso de Gesbit existe un formulario, un "script", que, junto con la clase GbUser (y GbDb, entre otras, pero, es otra historia) se encargan de la autenticación del usuario. Pero, a todos los efectos, es como si fuera un solo "script". Creo que esto puede confundirte Román.

En efecto, si hubiese que pasar por dos "script", incluso si hubiera que pasar por el mismo, dos veces, el asunto pintaría de otra forma, podríamos usar la sesión de usuario, y, en caso de no encontrarla en el segundo "script", denegar el acceso al can. Esto sería una solución ideal, acaso, pero, recuerda que el perrito rellena y envía el formulario en un mismo punto.

No ha de pasar por dos lugares, por tanto, no puede usarse el primero para establecer la variable de sesión que comprobar en el segundo. En realidad sólo ha de pasar por un lugar. Y podemos establecer la variable de sesión que queramos, porque, como cuando vuelva a pasar, lo hará con otra sesión de usuario diferente, dicha variable no existirá, no podremos usarla, no nos servirá de nada.

Ya digo. vBulletin lo implementa apoyándose en la base de datos. PhpBB ni siquiera lo implementa... si pudiera hacerse usando sesiones de usuario, de alguna manera, sería bastante sencillo de implementar, y, sin embargo, no se hace, porque no funciona. Funciona para personas, pero, con los cánidos parece que no pueden usarse sesiones de usuario, al menos no para lo que nos ocupa ahora.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hum... ¿y si forzáramos tanto a cuadrúpedos como a personas a pasar dos veces por el "script"? Dicho de otro modo, mirar si existe la variable de sesión cuando se envía el formulario, y, si no existe, mandar a quien sea a freír espárragos. Huy, huy, huy, que me parece que tú ibas por aquí y no lo he sabido captar hasta ahora...

Claro que habrá que pensar en los posibles inconvenientes... pero, da que pensar.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
¡Pero no digas que no lo probé! Inicié este mismo hilo porque lo había probado y, para mi sorpresa, no funcionaba...
Lo que tú probaste no es lo mismo que yo propongo, ojo.

Cita:
Empezado por dec
Y no podemos darle la patada a alguien que llega por primera vez a nuestro sitio...
Claro que podemos, y lo haremos, si no llega por la puerta adecuada.

Cita:
Empezado por dec
En el caso de Gesbit existe un formulario, un "script", que, junto con la clase GbUser (y GbDb, entre otras, pero, es otra historia) se encargan de la autenticación del usuario. Pero, a todos los efectos, es como si fuera un solo "script". Creo que esto puede confundirte Román.
Al contrario, si hablo de dos scripts es sólo para facilitar la charla y no decir: el script en una petición GET y el script en una petición POST, por ejemplo

Cita:
Empezado por dec
En efecto, si hubiese que pasar por dos "script", incluso si hubiera que pasar por el mismo, dos veces, el asunto pintaría de otra forma, podríamos usar la sesión de usuario, y, en caso de no encontrarla en el segundo "script", denegar el acceso al can. Esto sería una solución ideal, acaso, pero, recuerda que el perrito rellena y envía el formulario en un mismo punto.
No es el mismo punto. Aunque uses un mismo archivo user-login.php, se trata de momentos distintos:

1. Cuando se despliega el formulario (y se establece la variable de sesión)
2. Cuando se procesa el formulario (y se checa la existencia de la variable)

Ya también te puse el ejemplo de ese caso (un sólo script)

Cita:
Empezado por dec
No ha de pasar por dos lugares
Que sí, hombre, que sí.

Esto es como el espacio-tiempo (¿recuerdas a Carl Sagan?). La puerta de tu casa hoy no es el mismo lugar que la puerta de tu casa mañana. En términos del espacio-tiempo son dos ubicaciones distintas. No es lo mismo el script en una petición GET que el script en una petición POST, son dos ubicaciones distintas en el HTTP-tiempo

Cita:
Empezado por dec
vBulletin lo implementa apoyándose en la base de datos.
// Saludos
Responder Con Cita
  #7  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Que sí, que sí, ahora lo veo un poco más claro. No sé si es que me he ofuscado en contra del uso de variables de sesión, pero, en efecto, como has explicado, se trataría de no aceptar en nuestra casa a nadie que entrara a trompicones. ¿No te limpiaste los pies en el felpudo de la entrada? Pues no entras. ¿Te los limpiaste? Deja que lo vea... vale, pasa pa'dentro.

Tiene cierta lógica y, en efecto, le encuentro sentido. Ahora, lo que me llama la atención es que sistemas populares no implementan algo así, si, como parece, es bastante sencillo... (aunque no evidente) ¿acaso habrá alguna razón que se nos escapa? Pero, sea como sea, es cierto, tengo que probarlo de nuevo teniendo todo lo que has explicado en cuenta. ¡Gracias Román!
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 12-03-2009 a las 02:06:29.
Responder Con Cita
  #8  
Antiguo 12-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Estoy haciendo pruebas, no me quiero ilusionar, pero, ¡parece que podría valer!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mmmm.

Se me ocurre que podemos amaestrar un perro y hacer que se comporte mordiendo sólo tres veces. Pero, podemos amaestrar más de un perro ¿no?



// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Acceso a Outlook 2003 Reminders y error "Invalid Variant Operation" saldanaluis Providers 2 24-05-2007 21:17:58
Implementar una nueva opción para la propiedad "FormStyle" JM75 OOP 3 15-02-2007 15:53:44
Implementar "FloodFill" en CLX salvica Gráficos 1 07-09-2004 19:52:45


La franja horaria es GMT +2. Ahora son las 14:12:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi