• Publicidad

Cómo recibir parámetros desde un cgi

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Cómo recibir parámetros desde un cgi

Notapor lisandro » 2008-07-25 13:43 @613

¡ Hola a todos !

Tengo que hacer un script que responda al servidor de un banco; éste me envía variables pero no sé por qué método; yo las tengo que tomar y meterlas en una db y despues de horas y horas de probar no he logrado nada. Tengo un código básico que lo saqué de este foro e intento modificar; tengo cero conocimientos de Perl, así que espero una mano :roll:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/local/bin/perl

push(@INC,"/kunden/homepages/htdocs/miweb/cgi-bin/");
require("cgi-lib.pl");

use strict;
use DBI;

my $importe = $in{'importe'};
my $operacion = $in{'num_operacion'};

# Funcion conectar
sub db_connect{

my $db_user = "";
my $db_pass = "";
my $host_name = "";
my $db_name = "";



my $q_string = "DBI:mysql:host=$host_name;database=$db_name";


        return (DBI->connect ($q_string, $db_user, $db_pass,
                                                        {PrintError => 1, RaiseError => 1}))  ;

}
# Fin funcion conectar

my $dbh = db_connect();

    my $sth = $dbh->prepare('INSERT INTO tipos SET operacion=?,importe=?') or die("Couldn't prepare statement: " . $dbh->errstr);
   $sth->execute($operacion,$importe) or die("Couldn't execute statement: " . $sth->errstr);
   $sth->finish;

$dbh->disconnect;
 

 
print "content-type: text/html \n\n";
print "<html>\n";
print "<head>\n";
print "<TITLE>Respuesta correcta a la comunicación ON-LINE</TITLE> \n";
print q($*$OKY$*$);
print "</BODY>\n";
print "</HTML>\n";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
lisandro
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-07-25 13:34 @607

Publicidad

Notapor kidd » 2008-07-25 13:59 @624

Hola:

Bienvenido a los foros de Perl en Español.

El cgi-lib.pl ya no se debería de usar, en vez de eso te recomiendo que uses el módulo CGI.pm.

A continuación te pongo la versión modificada de tu script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/local/bin/perl

use strict;
use DBI;
use CGI;

my $query = new CGI;
my %Input = $query->Vars;


my $dbh = db_connect();
my $sth = $dbh->prepare('INSERT INTO tipos SET operacion=?,importe=?') or die("Couldn't prepare statement: " . $dbh->errstr);
$sth->execute($Input{'num_operacion'},$Input{'importe'}) or die("Couldn't execute statement: " . $sth->errstr);
$sth->finish;
$dbh->disconnect;



print "content-type: text/html \n\n";
print "<html>\n";
print "<head>\n";
print "<TITLE>Respuesta correcta a la comunicación ON-LINE</TITLE> \n";
print q($*$OKY$*$);
print "</BODY>\n";
print "</HTML>\n";


# Funcion conectar
sub db_connect{

my $db_user = "";
my $db_pass = "";
my $host_name = "";
my $db_name = "";



my $q_string = "DBI:mysql:host=$host_name;database=$db_name";


        return (DBI->connect ($q_string, $db_user, $db_pass,
                                                        {PrintError => 1, RaiseError => 1}))  ;

}
# Fin funcion conectar
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor lisandro » 2008-07-25 14:24 @642

Funciona perfectamente, te lo agradezco mucho de verdad, me salvaste las papas ;)

¿ Funciona tanto para POST como para GET ?

Gracias otra vez, saludos
lisandro
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-07-25 13:34 @607

Notapor lisandro » 2008-07-25 15:09 @672

Perdón, tengo una duda más, espero no sea mucho para un día...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $id = '[email protected]';

my $dbh = db_connect();
my $sth = $dbh->prepare('INSERT INTO fichas SET num_operacion=?  WHERE email=?') or die("Couldn't prepare statement: " . $dbh->errstr);
$sth->execute($Input{'Num_operacion'}, $id) or die("Couldn't execute statement: " . $sth->errstr);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo único que cambió fue la consulta SQL ya que ahora tiene un WHERE por lo tanto tengo que pasar dos parámetros. Se me complica porque solo recibo un error 500 en el servidor.

¿ Alguna idea ?
lisandro
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-07-25 13:34 @607

Notapor lisandro » 2008-07-25 15:11 @674

Bueno, parece que me equivoqué feo en la consulta, ¿ no ? :ops:
lisandro
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-07-25 13:34 @607

Notapor kidd » 2008-07-25 16:06 @712

Sí, el problema está en la línea de SQL:
Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
INSERT INTO fichas SET num_operacion=? WHERE email=?
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Me parece que lo que quieres hacer es un UPDATE:

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
UPDATE fichas SET num_operacion=? WHERE email=?
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Web

¿Quién está conectado?

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

cron