Retroceder   Foros del Web > Programación para sitios web > Perl y CGI

Respuesta
 
Herramientas Desplegado
Antiguo 16-feb-2004, 06:16   #1 (permalink)
ToRu está en el buen camino
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Enviar un mensaje por ICQ a ToRu
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-feb-2004 a las 06:22.
ToRu está desconectado   Responder Citando
Antiguo 16-feb-2004, 07:04   #2 (permalink)
$moderador{'Esteban'}
monoswim llegará a ser famoso muy prontomonoswim llegará a ser famoso muy pronto
 
Avatar de monoswim
 
Fecha de Ingreso: noviembre-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 7.642
Enviar un mensaje por MSN a monoswim Enviar un mensaje por Yahoo  a monoswim
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
monoswim está desconectado   Responder Citando
Antiguo 16-feb-2004, 07:52   #3 (permalink)
ToRu está en el buen camino
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Enviar un mensaje por ICQ a ToRu
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
ToRu está desconectado   Responder Citando
Antiguo 16-feb-2004, 10:46   #4 (permalink)
$moderador{'Esteban'}
monoswim llegará a ser famoso muy prontomonoswim llegará a ser famoso muy pronto
 
Avatar de monoswim
 
Fecha de Ingreso: noviembre-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 7.642
Enviar un mensaje por MSN a monoswim Enviar un mensaje por Yahoo  a monoswim
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
monoswim está desconectado   Responder Citando
Antiguo 16-feb-2004, 11:02   #5 (permalink)
ToRu está en el buen camino
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Enviar un mensaje por ICQ a ToRu
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
ToRu está desconectado   Responder Citando
Antiguo 16-feb-2004, 16:42   #6 (permalink)
ToRu está en el buen camino
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Enviar un mensaje por ICQ a ToRu
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
ToRu está desconectado   Responder Citando
Antiguo 17-feb-2004, 08:48   #7 (permalink)
kidd está en el buen camino
 
Avatar de kidd
 
Fecha de Ingreso: mayo-2003
Mensajes: 322
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-feb-2004 a las 10:26.
kidd está desconectado   Responder Citando
Antiguo 17-feb-2004, 09:12   #8 (permalink)
ToRu está en el buen camino
 
Fecha de Ingreso: febrero-2004
Ubicación: desde aqui
Mensajes: 64
Enviar un mensaje por ICQ a ToRu
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-feb-2004 a las 09:58.
ToRu está desconectado   Responder Citando
Antiguo 17-feb-2004, 10:25   #9 (permalink)
kidd está en el buen camino
 
Avatar de kidd
 
Fecha de Ingreso: mayo-2003
Mensajes: 322
Hola:

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

Aprende Perl en Perl en Español.
kidd está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:44.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93