Vie Jul 25, 2008 12:43 pm
|
 |
lisandro
Perlero Nuevo

|
Registrado: 25 Jul 2008
Mensajes: 4
|
|
| Cómo recibir parámetros desde un cgi |
|
|
¡ 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
| Perl: | #!/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"; |
|
|
|
|

Vie Jul 25, 2008 12:59 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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:
| Perl: | #!/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
|
|
|

Vie Jul 25, 2008 1:24 pm
|
 |
lisandro
Perlero Nuevo

|
Registrado: 25 Jul 2008
Mensajes: 4
|
|
|
|
|
Funciona perfectamente, te lo agradezco mucho de verdad, me salvaste las papas
¿ Funciona tanto para POST como para GET ?
Gracias otra vez, saludos |
|
Vie Jul 25, 2008 2:09 pm
|
 |
lisandro
Perlero Nuevo

|
Registrado: 25 Jul 2008
Mensajes: 4
|
|
|
|
|
Perdón, tengo una duda más, espero no sea mucho para un día...
| Perl: | my $id = 'usuario@gmail.com';
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); |
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 ? |
|
Vie Jul 25, 2008 2:11 pm
|
 |
lisandro
Perlero Nuevo

|
Registrado: 25 Jul 2008
Mensajes: 4
|
|
|
|
|
| Bueno, parece que me equivoqué feo en la consulta, ¿ no ? :ops: |
|
Powered by phpBB © 2001, 2005 phpBB Group
|