Cita:
|
Empezado por seoane
Exactamente esa cookie se utiliza para identificar la sesión. La cosa funciona así, la primera vez que acedes a la pagina, este te devuelve la cookie con un identificador. Tu navegador cada vez que accedes a esa misma pagina o a otra del mismo sitio, manda esa cookie, de esa forma el servidor puede rastrear la sesión. Si cierras el navegador y vuelves a acceder a la pagina, el servidor mandara un identificador diferente para identificar la nueva sesión.
Ahora pensemos en un ejemplo. Accedemos a la pagina de login, entonces recibimos una cookie con el identificador de sesión. Enviamos el nombre de usuario y contraseña por POST, y también enviamos la cookie. Ahora estamos identificados en esa sesión, de esta forma cada vez que accedamos a una pagina en ese servidor en esa misma sesión el servidor sabrá que estamos logueados.
Esto puede parecer complicado, pero es tan simple como decirle idHttp que acepte cookies, o usar Wininet. Ellos se encargaran de manejar las cookies sin que tengas tu que hacer nada.
|
Amigo aqui esta el pedacito e código que estoy intentando implementar sin conseguir resultados positivos aun, he puesto las propiedades en true del idhttp1 para haceptar las cookies, me parece que ahora estoy fallando en lo que envío en el post, el action de la etiqueta del form dice action="/md" method="post" como debería armar el post...en el fiddler me figura
http://www.alfabeta.net/md-downloads...mdat=miusuario
Código Delphi
[-]
var
datosPost: TIdMultiPartFormDataStream;
begin
datosPost := TIdMultiPartFormDataStream.Create;
try
datosPost.AddFormField('cmd', 'login');
datosPost.AddFormField('stylesheet', 'md.xls');
datosPost.AddFormField('Usuario', 'mi_usuario');
datosPost.AddFormField('pwd', 'mi_contraseña');
datosPost.AddFormField('x', '0');
datosPost.AddFormField('y', '0');
try
idhttp1.AllowCookies := true;
idHttp1.Request.Referer := 'http://www.alfabeta.net/md.xtp';
memo1.Clear;
memo1.lines.Add(idHttp1.Post('http://www.alfabeta.net/md.xtp', datosPost));
finally
idHttp1.Free;
end;
finally
datosPost.Free;
end;