Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda con validación de usuario

Estas en el tema de Ayuda con validación de usuario en el foro de Programación General en Foros del Web. Hola, tengo hecho un script pero me da error y no sé donde :/ el código es el siguiente: Código: foreach $trozo (split /&/, $ENV{QUERY_STRING}) ...
  #1 (permalink)  
Antiguo 16/02/2004, 07:16
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Antigüedad: 20 años, 2 meses
Puntos: 1
Ayuda con validación de usuario

Hola, tengo hecho un script pero me da error y no sé donde :/
el código es el siguiente:
Código:
foreach $trozo (split /&/, $ENV{QUERY_STRING})
{
	($c,$v)=split /=/, $trozo;
	$p{$c}=$v;
}
$sw=0; 
open FILE, "usuarios.txt";
while(<FILE>)
{
	chop;
	@user=split /:/;
	if($user[4] eq $p{usuario})&&($user[5] eq $p{pass})){ $sw=1; else $sw=0; }
}
close FILE;
if($sf==0)
{
 print<<Error;
  content-type: text/html

  <html><head><title>::Panel de Control de $p{usuario}::</title></head>
  <body>
  <h1>Bienvenido $user[0]</h1><br>
  - Desde este panel usted podrá : <a href='modificar.pl?login=$p{usuario}'> Cambiar datos</a> | 
  <a href='bajas.pl?login=$p{usuario}'>Darse de baja</a><br><br>
  -Si deseá ver las noticias seleccionadas pulse <a href='noticias.pl?login=$p{usuario}'>aquí</a><br>
  </body></html>
  Error
  
}
if($sw==1)
{
  print<<Menu;
  content-type: text/html

  <html><head><title>::Panel de Control de $p{usuario}::</title></head>
  <body>
  <h1>Bienvenido $user[0]</h1><br>
  - Desde este panel usted podrá : <a href='modificar.pl?login=$p{usuario}'> Cambiar datos</a> | 
  <a href='bajas.pl?login=$p{usuario}'>Darse de baja</a><br><br>
  -Si deseá ver las noticias seleccionadas pulse <a href='noticias.pl?login=$p{usuario}'>aquí</a><br>
  </body></html>
  Menu
	
}
A través de un formulario donde se pide usuario y pass, este script, "valida" a ese usuario q esta en un archivo, el campo user[4] y user[5], corresponden al usuario y pass.
He probado en cambiar cosas y no sé porque no me va :/.
Gracias

Última edición por ToRu; 16/02/2004 a las 07:22
  #2 (permalink)  
Antiguo 16/02/2004, 08:04
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
tienes mal unos paréntesis!!!!!

aquí veo que habres un parentesis y cierras 2!!!!

if($user[4] eq $p{usuario})&&($user[5] eq $p{pass})){ $sw=1; else $sw=0; }

tendría que quedar

if(($user[4] eq $p{usuario})&&($user[5] eq $p{pass})){ $sw=1; else $sw=0; }....ó...

if ($user[4] eq $p{usuario} && $user[5] eq $p{pass}){ $sw=1; else $sw=0; }

Espero que el error sea ese y que no tengas más inconvenientes en el código...Suerte

MonoSwim
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 16/02/2004, 08:52
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Antigüedad: 20 años, 2 meses
Puntos: 1
hola, sip, ese error tb lo vi, se me paso al modificar unas cosas, pero tampoco eso :/.
Tambien donde hago una comparación de que si "sf==1" tendría que ser "sw==1", q tamien lo modifique, pero sigue sin ir
  #4 (permalink)  
Antiguo 16/02/2004, 11:46
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
como hago yo!!!

mirá, yo cuando tengo un problema así hago lo que llamo hacer resusitar al script...pon # al inicio de cada linea asta que te deje de tirar error, una ves que el script volvio a la vida, debes ir quitando los # de las estricturas lógicas como ser if{}else{}

Cuando todo eso anda, enpiezxa con lo que hay dentro de cada bloque...
{&get_url;
...
}

así puedes seccionar el script por partes y probarlas individualmente asta que lleges a encontrar el error.

Espero que te sirva
MonoSwim
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 16/02/2004, 12:02
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Antigüedad: 20 años, 2 meses
Puntos: 1
Gracias, yap conseguí que me funcionara el script :)
Ahora ando liado con las bajas de los usuarios, lo mismo tengo que pedir otra vez ayuda cuando me haya tirao de los pelos una vez más.
Un saludo
  #6 (permalink)  
Antiguo 16/02/2004, 17:42
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Antigüedad: 20 años, 2 meses
Puntos: 1
Wenas de nuevo, pues me temo que por más que le doy vueltas a este otro script, no consigo q me funcione, seguro que es una tontería como la de antes, pero se me pasa por alto.
Código:
foreach $trozo(split /&/, $ENV{QUERY_STRING})
{
  ($c,$v)=split /=/, $trozo;
  $p{$c}=$v;
}

if(-e "usuarios.txt")
{
 open FILE1, ">>usuarios.txt";
 open FILE2, ">temp.txt";
 while(<FILE1>)
  {
     chop;
     @user=split /:/;
     if($user[4] ne $p{id})
      {
	     print FILE2 $linea;
      }
  }
}
close(F1);
close(F2);
rename "temp.txt","usuarios.txt";
#Luego muestra el resultado del usuario eliminado en una pagina web
Lo que intento hacer es eliminar a un usuario del fichero usuarios.txt, para ello recorro el fichero y si veo que el user[4] es distinto al parametro del id (el usuario a eliminar), que lo guarde en el fichero temporal, una vez terminado de recorrer el fichero, renombro el fichero temporal a usuarios.
No sé si eso estara bien así, pero no se me ocurre otro método.

Un saludo
  #7 (permalink)  
Antiguo 17/02/2004, 09:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola ToRu:

A mi se me ocurre algo así:

Código:
#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my %p;

foreach my $trozo(split /&/, $ENV{QUERY_STRING}){
  my ($c,$v)=split /=/, $trozo;
  $p{$c}=$v;
}

if(-e "usuarios.txt"){

 open FILE1, "usuarios.txt";
 my @usuarios_activos = <FILE1>;
 close(FILE1);

 open FILE2, ">usuarios.txt";

  foreach my $usuario_activo(@usuarios_activos){
       chomp($usuario_activo);

          my @user= split(/\:/, $usuario_activo);

          if($user[4] ne $p{id}){
             print FILE2 "$usuario_activo\n";
          }
     }
  close(FILE2);

}


#Luego muestra el resultado del usuario eliminado en una pagina web
print "Content-type: text/html\n\n";
print "El usurio eliminado fue " . $p{id} . "\n";

exit(1);
SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.

Última edición por kidd; 17/02/2004 a las 11:26
  #8 (permalink)  
Antiguo 17/02/2004, 10:12
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Antigüedad: 20 años, 2 meses
Puntos: 1
Hola kidd!
Gracias por la respuesta!! de verdad muchas gracias, ya sé que para algunos es una tontería, pero weno, me he tirado horas con este error :(.



Solo cabe destacar que cuando vas añadiendo los nuevos usuario, "usuario_activos", de la forma que indicas los coloca todos en una misma fila, lo cual luego para poder hacer login otros usuarios es imposible, para que quede cada usuario en una linea, solo se tendía que poner:
Código:
 if($user[4] ne $p{id})
          {
             print FILE2 $usuario_activo;
	     print FILE2 "\n"; #<-- El salto de linea y ya funciona todo bien!
          }
GRACIAS!


Última edición por ToRu; 17/02/2004 a las 10:58
  #9 (permalink)  
Antiguo 17/02/2004, 11:25
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola:

Tienes razón se me paso ese pequeño detalle...jeje
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:05.