Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2006
jjaen26 jjaen26 is offline
Miembro
 
Registrado: sep 2006
Posts: 19
Poder: 0
jjaen26 Va por buen camino
Acceso simultaneo a MySQl por internet

Voy a tratar de ser lo mas claro.

1) Estoy programando mi primera ISAPI dll.
2) Para esto estoy haciendo pruebas para desarrollar en Delphi una aplicación ISAPI (*.dll) para que los usuarios puedan acceder a una base de datos desde Internet.
3) Como servidor de base de datos estoy utilizando MySQL.
4) Para conectarme a la bd desde delphi utilizo componentes Zeos TZConnection, TZQuery.
5) La seguridad (en cuanto a accesos no autorizados) la manejo directamente con los usuarios propios de la base de datos, entonces en resumen para otorgar o restringir el acceso a través de la isapi dll lo hago de la siguiente manera:


En la pagina de inicio el usuario asigna su usuario, password y base de datos a la que se quiere conectar, si con estos datos el usuario logra establecer una conexión a través del Zconnection el usuario podrá realizar consultas o actualizaciones en la bd en otras partes de la dll, en caso de que no se establezca una conexión el usuario simplemente no podrá ejecutar ninguna sentencia sql.

Esto me funciona bien para un solo usuario, el problema es que a la hora de ponerlo a prueba con varios usuarios pasa lo siguiente:

1) Se logea el usuario1 exitosamente;
2) Si se intenta logear un segundo usuario (usuario2) con una clave incorrecta desconecta también al usuario1.


Por lo que logro deducir que todas las conexiones a la base de datos se estan haciendo a travez del mismo TZConnection, esto implica que

1) Si hay un usuario que ingresó exitosamente a la base de datos, pudiera ingresar otro usuario que sin asignar su usuario y contraseña pudiera acceder a la Base de datos (debido a que usaría la misma conexión que ya esta establecida).
2) Todos los usuarios van a estar usando el mismo usuario con sus privilegios (Este usuario seria el ultimo que se logro conectar exitosamente).
3) Si un usuario se intenta entrar al sistema con una contraseña incorrecta, me va desconectar a todos los demás usuarios que en su momento si lograron establecer una conexión.
4) Mas todos los problemas que de ahí resulten…


Adicionalmente me di cuenta a través del comando de mysql Show processlist que la conexión a la bd no se cierra junto con el browser

En conclusión: Lo que me gustaría lograr es que cada usuario que ingrese a través de la dll lo haga con su propia conexión independiente a los demas usuarios, (como lo haria cualquier cliente.exe en un ambiente de red)

Mi pregunta es como puedo resolver esto, no se si la respuesta sea creando y destruyendo varios TZconnection en tiempo de ejecución (1 por cada usuario que ingrese al sistema) si es así me podrían dar una pista de cómo hacerlo?

De antemano Gracias.

*****************************************************************************
Este es el codigo html de la pagina de inicio
*****************************************************************************
<html>
<head>
<meta http-equiv="Content-Language" content="es-mx">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Inicio de Session</title>
</head>
<body>
<form method="POST" Action="http://ServidorWeb/aplicacion/alpacasweb.dll/validar" name="Usuario">
<p><b><font size="5">Inicio de Session</font></b></p>
<p>Usuario&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="myUsuario" size="20" id="fp1"></p>
<p>Contraseña&nbsp;&nbsp;&nbsp;&nbsp;
<input type="password" name="myClave" size="20"></p>
<p>Base de Datos&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="mybd" size="20"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
</form>
</body>
</html>
*****************************************************************************

En el WebModule Tengo un componente TZconnection para conectarme a MySQL server, y tengo el siguiente código en una TAction que valida el tipo de respuesta (Response.Content) dependiendo si la conexión a la base de datos fue exitosa o nó
*****************************************************************************
este es el evento que establece la conexión con la bd
*****************************************************************************

procedure TWebModule1.WebModule1ValidarAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
try
zconnection1.Disconnect; // aseguramos que no haya conexión a la base de datos
Zconnection1.User := request.QueryFields.Values['myUsuario']; //Asignamos el nombre de usuario
Zconnection1.Password := Request.QueryFields.Values['myClave']; // Asignamos la clave
Zconnection1.Database := Request.QueryFields.Values['myBD']; //Asignamos la base de datos
// hay algunas otras propiedades como la ip que asigné en tiempo de diseño (Inspector de Objetos)
Zconnection1.Connect; // intenta establecer una conexión con los valores asignados
if zconnection1.Connected then
Response.Content:=PageMenu.Content //aqui logro acceder al sistema
except
Response.Content:=Pageerror.Content; // aqui no logro acceder al sistema
end;

end;

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
Acceso al internet explorer vicrati Varios 5 16-08-2006 14:51:22
Nuevo Acceso ala Internet AGAG4 Noticias 0 02-08-2006 04:31:13
Configuracion de LAN y acceso a internet con PPPoE Phacko Redes 5 19-06-2006 22:28:09
Bloquean el acceso a Internet en empresas españolas Sasuke_Cub Noticias 0 17-05-2006 18:46:14
IB problemas por acceso simultaneo al mismo campo Giniromero Conexión con bases de datos 17 21-04-2004 11:17:20


La franja horaria es GMT +2. Ahora son las 16:53:35.


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