• Publicidad

Comparar usuario y login con BD en PostgreSQL

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Comparar usuario y login con BD en PostgreSQL

Notapor thegame » 2011-11-21 15:12 @675

Aquí está el código

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use CGI::Carp qw(fatalsToBrowser);
  3. use DBI;
  4. use DBD::Pg;
  5. print error;
  6.  
  7. print "Content-type: text/html\n\n";
  8.  
  9. my @pote;
  10. my @log;
  11. local ( $buffer, @pairs, $pair, $name, $value, %FORM );
  12.  
  13. # Read in text
  14. $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
  15. if ( $ENV{'REQUEST_METHOD'} eq "POST" ) {
  16.     read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
  17. }
  18. else {
  19.     $buffer = $ENV{'QUERY_STRING'};
  20. }
  21.  
  22. # Split information into name/value pairs
  23. @pairs = split( /&/, $buffer );
  24. foreach $pair (@pairs) {
  25.     ( $name, $value ) = split( /=/, $pair );
  26.     $value =~ tr/+/ /;
  27.     $value =~ s/%(..)/pack("C", hex($1))/eg;
  28.     push( @pote, $value );
  29. }
  30. $login = @pote[0];
  31. $pass  = @pote[1];
  32.  
  33. my $dbh = DBI->connect( "DBI:Pg:dbname=directorio;host=10.16.105.174;port=5432" . "directorio", "directorio",
  34.     "directorio" );
  35. my $sth = $dbh->prepare("SELECT login, clave, nombre FROM admin WHERE login=? AND clave=?");
  36. $dbh->{PrintError} = 1;
  37.  
  38. #$sth->bind_param(1,$login);
  39. #$sth->bind_param(2,$pass);
  40. $sth->execute( $login, $pass );
  41. while ( @log = $sth->fetchrow_array() ) {
  42.     print @log;
  43. }
  44.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


En el código me traigo un usuario y login del formulario que las metí en $login y $pass.
Ahora quiero comparar ese usuario y login con la BD... lo hago pero no me muestra resultado... no sé si estoy haciendo el execute bien o qué problema tengo... Una vez más requiero de su ayuda.

Gracias.
Última edición por explorer el 2011-11-21 15:31 @688, editado 2 veces en total
Razón: Marcas de código Perl. Eliminación de abreviaturas.
thegame
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2011-11-08 11:19 @513
Ubicación: Venezuela

Publicidad

Re: Comparar usuario y login con BD en PostgreSQL

Notapor explorer » 2011-11-21 15:47 @699

Yo no veo nada raro... la consulta me parece correcta... Si no sale nada, es que la consulta no devuelve nada.

Pero...

Líneas que sobran:
  • La 4. Con la 3 es suficiente.
  • La 5.
  • La 14, ya que es mejor usar la función uc() en la línea siguiente:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1. if ( 'POST' eq uc $ENV{'REQUEST_METHOD'} ) {
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
  • De la 13 a la 29. Si usases el módulo CGI, te ahorrarías todo eso.
Líneas con errores:
  • La 11. Ese no es el uso correcto de la función local().
  • La 30 y 31. El acceso a los elementos de un array es con '$', no con '@'.
  • La 33. Unir la palabra 'directorio' al número de puerto, con el operador '.'. Lo más seguro es que querías poner una ',', en lugar de un '.' (aquí creo que está el error principal).
  • La 33 (otra vez). connect() requiere de exactamente 4 argumentos: el DSN, el nombre de usuario, la contraseña, y una referencia a un hash con las opciones que queremos (des)activar en el motor.
Líneas que se pueden abreviar.
  • La 7. Con el módulo CGI queda reducida a print header(); .
  • La 22 a 29. Con el módulo CGI se puede escribir así: $login = param('login'); , $pass = param('pass');.
  • La 36 se puede meter en la 33.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar usuario y login con BD en PostgreSQL

Notapor thegame » 2011-11-21 17:26 @768

¡Gracias de nuevo!
thegame
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2011-11-08 11:19 @513
Ubicación: Venezuela


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados