Dom May 29, 2005 10:05 am
|
 |
diego_el_38
Perlero Nuevo

|
Registrado: 29 May 2005
Mensajes: 11
|
|
| Sesiones |
|
|
hola... me gustaria saber si en perl, al igual que en php, se pueden crear sesiones, o sea hacer un par de paginas que un usuario pueda recorrer una vez que accedio correctamente con su nombre de usuario y contraseña a la pagina principal...
desde ya muchas gracias
saludos
diego |
|
|
|
Dom May 29, 2005 2:47 pm
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
claro que se puede, yo uso una cookie en el cliente con el ID de la sesion y esa sesion la tengo en una base de datos temporal en donde está el nombre de usuairo y datos así que uso para la sesion...
Saludos |
|
Dom May 29, 2005 3:01 pm
|
 |
diego_el_38
Perlero Nuevo

|
Registrado: 29 May 2005
Mensajes: 11
|
|
|
|
|
hola monoswim... gracias por responde... pero me puedes decir como creas la sesion, y como tomas los valores de la cookie para ir activando las diferentes paginas en donde puede entrar el usuario...
desde ya muchas gracias
saludos
diego |
|
Dom May 29, 2005 3:07 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|

Dom May 29, 2005 4:10 pm
|
 |
diego_el_38
Perlero Nuevo

|
Registrado: 29 May 2005
Mensajes: 11
|
|
| sesion - login - metodo post |
|
|
hola kidd... gracias por contesta, he leido el tuto pero no encontre una verdadera respuesta a lo q necesito, quizas me haya equivocado en el termino "sesiones", es por ello q voy a tratar de explicarme mejor en lo q quiero y quizas me puedan orientar un poco mas... yo tengo un formulario donde el usuario ingre su username y su password, este hace coneccion con un archivo perl, el cual verifica la existencia del usuario y si es correcto arma una pagina web... hasta ahi bien, ahora esta pagina web q crea tiene a su vez hipervinculos a otras paginas webs, lo que yo quiero es q las demas paginas webs nada mas se pueden ver por el usuario registrado, o sea yo supuse q de la primer pagina creado tendria q pasar nuevamente el username y la password a cada link para que esos links no tengan acceso desde otra web... al mismo tiempo me surge otro problema, yo por ejemplo en la primer pagina perl creada tenia un link con el siguiente codigo: | Cita: | | <a href=http://www.pagina.com.ar/otroperl?username=var1&password=var2>link</a> | esto es claramente metodo get, pero me resulta muy inseguro, asiq quisiera saber si hay alguna forma de pasar las variables por metodo post utilizando ese link...
desde ya muchas gracias
saludos
diego |
|

Dom May 29, 2005 7:38 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola:
Para no estar pasando el nombre de usuario y la contraseña de esa manera lo que puedes hacer es lo siguiente:
1. Preguntas el username y contraseña.
2. Si son correctas creas un número único el cual va a ser la sesión del usuario. Entonces podrías guardar ya sea un database o en un archivo de texto la sesión, la hora en que fue creada y el username.
3. De esta manera en tus links todo lo que tienes que hacer es mandar el ID de la sesión:
| Código: |
| <a href=http://www.pagina.com.ar/otroperl?id=137463>link</a> |
4. Cada página checa si la sesión es válida, verificando con el database.
5. Checa cada minuto las sesiones y expira aquellas que tengan un x tiempo de ser creadas.
De ésta manera podrías crear un sistema bastante sencillo y algo seguro para controlar el acceso de tus usuarios.
También te recomiendo que cheques los siguiente módulos que automatizan el proceso más o menos similar al que te comento:
http://search.cpan.org/~jbaker/Apache-Session-1.6/Session.pm
http://www.ruby-doc.org/core/classes/CGI/Session.html
Y el siguiente artículo te puede ayudar:
http://ironbark.bendigo.latrobe.edu.au/subjects/WE/lectures/w10.d/Lect20.html
SALUDOS |
|

Dom May 29, 2005 7:50 pm
|
 |
diego_el_38
Perlero Nuevo

|
Registrado: 29 May 2005
Mensajes: 11
|
|
|
|
|
hola kidd... muchas gracias, la verdad q algo asi no se me habia ocurrido... te hago una preguntita mas, cuando pusiste | Cita: | | o en un archivo de texto la sesión, la hora en que fue creada y el username. | , te referis a una cookie, no??... bueno, me voy a tener q poner a leer mucho para lograr optimizar esto y encontrarle la vuelta...
nuevmente gracias por encaminarme
saludos
diego |
|

Dom May 29, 2005 9:15 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola:
Si vas a pasar la sesión por las ligas no tienes la necesidad de un cookie:
| Código: |
| <a href=http://www.pagina.com.ar/otroperl?id=137463>link</a> |
A lo que me referia con el archivo. Digamos que el usuario pone bien su nombre de usuario y contraseña, entonces le asignas un número de id, tiempo de creación, y los datos del usuario y lo guardas en un archivo al cual le vamos a llamar sesiones.txt:
| Código: |
#!/usr/bin/perl -w
use strict;
use CGI;
#Recibimos los datos de la forma
my $query = new CGI;
my %Input = $query->Vars;
#La verificación que harías de username y contraseña
if($Input{'usuario'} eq "" && $Input{'pwd'} eq ""){
my $id_sesion = "ses" . (time() + int(rand(100)));
my $tiempo_sesion = time();
#Abrimos el archivo de sesiones
open(FILE,">>sesiones.txt");
print FILE join ":", $id_sesion, $tiempo_sesion, $Input{'usuario'};
print FILE "\n";
close(FILE);
}
|
Así ya se pone una nueva entrada al archivo sesiones.txt que se vería algo así:
| Código: |
| ses1117422682:1117422620:prueba |
El primer elemento es el número de sesión, el segundo es la hora en que fue creada, y el último el nombre del usuario.
Entonces en cada uno de tus scripts puedes verificar las sesiones haciendo algo así:
| Código: |
#!/usr/bin/perl -w
use strict;
use CGI;
#Recibimos los datos de la forma
my $query = new CGI;
my %Input = $query->Vars;
#Si es que tenemos sesion
if($Input{'id'}){
open(FILE,"sesiones.txt");
my @sesion = grep{ /^$Input{'id'}/ } <FILE>;
close(FILE);
if(defined($sesion[0])){
my @datos = split(/\:/, $sesion[0]);
print "Hola $datos[2]\n";
print "Tu número de sesión es $datos[0]\n";
}else{
#pedir contraseña
}
}else{
#pedir username y contraseña
}
|
El código es solamente un bosquejo de como podría funcionar, debes de mejorarlo y modificarlo según tus necesidades. De hecho no lo he probado, en mi mente funciona, y debe de funcionar
Pero más o menos te puede dar una idea de lo que podría hacer.
SALUDOS |
|

Lun May 30, 2005 12:46 pm
|
 |
diego_el_38
Perlero Nuevo

|
Registrado: 29 May 2005
Mensajes: 11
|
|
|
|
|
hola kidd... creo q ya me estoy empezando a poner molesto, no?? jejeje ... ya entendi lo que hiciste y estoy armandolo todo de a poco para no olvidarme de nada, te digo que estoy totalmente agradecido por la ayuda q me estas brindando... te hago una consulta, me podes explicar como se cuenta la hora, ya que para mayor seguridad, por ejemplo si el valor de la hora es 1117422620 le pondria un if evaluando un valor mayor a ese q corresponda a pasada la media hora, por eso me gustaria saber q numero le tendria q sumar a ese valor para tener el valor de la media hora pasadas...
saludos
diego |
|
Lun May 30, 2005 6:13 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|

Vie Jun 10, 2005 2:26 pm
|
 |
eiial
Perlero Nuevo

|
Registrado: 20 Nov 2003
Mensajes: 48
|
|
|
|
|
ja hace no mucho tiempo le envie a uriel un modulo completo de sesiones, que emulaba exactamente a PHP solo cargabas el modulo y lo usabas como una variable, mm lamentablemente se lo envie pensando que no habia otro ba' por lo menos cuando yo lo hice no habia ninguno así pero es muy parecido a en su manejo interno a http://search.cpan.org/~jbaker/Apache-Session-1.6/Session.pm , igualmente es más fácil de usar ya que se importa y se inicia con session_start(); automaticamente crea una variable de entorno llamada %SES donde se cargan los datos y estos se reflejan automaticamente en un archivo o entrada sql.
Bueno espero verlo publicado por ahi ya que las sesiones son muy utiles en temas de seguridad, pero un consejo con respecto a los comentarios anterires, si creas un id que este no sea consecutivo sino que sea randomizado.
Les mando un saludo a todos y lo felicito a uriel muy buena pagina.
Saludos |
|

Vie Jun 10, 2005 2:35 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola eiial:
Ahí tengo el módulo, estamos ahorita preparando todo para poner la nueva sección de "Módulos" en el sitio, donde el tuyo será de los primeros
SALUDOS |
|
Vie Jun 10, 2005 2:42 pm
|
 |
eiial
Perlero Nuevo

|
Registrado: 20 Nov 2003
Mensajes: 48
|
|
|
|
|
Dale, si necesitan algo me avisas a mi mail.
Un Abrazo y éxitos |
|
Vie Jun 10, 2005 3:38 pm
|
 |
Perl user
Maestro Honorario

|
Registrado: 03 Nov 2004
Mensajes: 385
|
|
|
|
|
Si quieres sesiones persistentes sin necesidad de mod_perl, recomiendo CGI::Session ( en cualquiera de sus sabores ), para mod_perl definitivamente Apache::Session está bien ( a mi me gusta Apache::Session::Postgres ).
Saludos, |
|
Powered by phpBB © 2001, 2005 phpBB Group
|