> Hi all.
>
> This is what i've done:
> - I've created a table which allows to manage "sessions" (see code below).
> - The script which validates users creates a "session_id". I pass this token as a
>hidden field to scripts in order to validate user's data every time.
> This works like this: Users enter their ID and password, and the page calls the
>script which checks user data and creates a session ID. Once the user has been
>checked against
> the database, the work page is displayed. Each action the user takes calls a cgi
>script with the session ID field as a hidden value. Scripts use the session_ID field
>to retrieve
> user's data from the database and perform whichever action the user asked for.
>
> Here is part of the code:
>
> *----Read parameters*
> #lectura de parametros del form ----------------------------
> foreach ($cgi->param()) {
> $cgi->param($_,uc($cgi->param($_)));
> }
>
>
> $legajo = $cgi->param('legajo');
> $password = $cgi->param('password');
> *
> ----- Check user data*
> ## conectar a la base de datos ------------------------------
>
> my $dbh = DBI ->connect("dbi:$driver:dbname=$base_datos",$usuario,$clave)
> ||die "no se puede abrir la base: $base_datos $DBI::errstr\n";
>
> ####CONSULTAR Datos Usuario-----------------------------------------
> my $sth=$dbh->prepare("SELECT * FROM usuarios WHERE legajo='$legajo';");
>
> $sth->execute();
>
> my $existe=$sth->rows();
>
> #extraccion de datos
> if ($existe)
> {
> @usuariosis = $sth->fetchrow_array();
> } else
> {
> print $cgi->header('text/html');
> print $cgi->start_html();
> print $cgi->h1("Error en usuario");
> print "<A HREF='/acceso.html'><P>Volver</P></A>";
> exit;
> }
> $sth->finish();
>
> $grupo = $usuariosis[3];
> $codigo = ($resguardos{$legajo}?$_:"770");
> $tiporesg = $tipores{$codigo};
>
> $_ = $usuariosis[6];
> s/ //g;
> $usuariosis[6]=$_;
>
>
> if (crypt($password, $usuariosis[6]) ne $usuariosis[6]){
> print $cgi->header('text/html');
> print $cgi->start_html();
> print $cgi->h1("Error en clave");
> print "<A HREF='/acceso.html'><P>Volver</P></A>";
> exit;
> }
> else {
> $session = generar_id();
>
> $dbh->do ("insert into conexion values ('$legajo',
> '',
> '$fecha',
> '$horaacceso',
> '$grupo',
> '$codigo',
> '$tiporesg',
> '$session');");*#This inserts a record into the
>"conexion" table for session tracking*
>
> #Genera p�gina de trabajo --------------------------------
>
> print $cgi->header (-type=>"text/html",
> -target=>"abajo");
> print $cgi->frameset({-border=>'1', -frameSpacing=>'1',
> -cols=>'200,*', -frameBorder=>'1'},
>
>$cgi->frame({-name=>'iab',-src=>'trabajo.plx?sesion='.$session}),*#This calls the
>main work page*
>
> $cgi->frame({-name=>'derecha',-src=>'/blank.html'})
> );
>
> }
>
> $cgi->end_html;
> $dbh->disconnect();
>
>
> *This sub generates the session ID*
> sub generar_id{
> return sprintf("%08.8x",rand()*0xffffffff);
> }
>
>
> I hope this helps.
> I am new to perl so check the code for security issues.
>
> Pablo A. Castrillo
>
>
>
Reposting in plain text format.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]