Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Cómo recibir parámetros desde un cgi Responder al tema
Nuevo tema


Página 1 de 1  [ 6 mensajes ] 
 
Nota 2008-07-25 13:43 @613

Perlero Nuevo
Registrado: 2008-07-25 13:34 @607
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 :roll:

Syntax: [ Download ] [ Hide ]
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";


Nota 2008-07-25 13:59 @624
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
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:

Syntax: [ Download ] [ Hide ]
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

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2008-07-25 14:24 @642

Perlero Nuevo
Registrado: 2008-07-25 13:34 @607
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


Nota 2008-07-25 15:09 @672

Perlero Nuevo
Registrado: 2008-07-25 13:34 @607
Mensajes: 4
Perdón, tengo una duda más, espero no sea mucho para un día...

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
my $id = <!-- e --><a href="mailto:'usuario@gmail.com">'usuario@gmail.com</a><!-- e -->';

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 ?


Nota 2008-07-25 15:11 @674

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


Nota 2008-07-25 16:06 @712
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Sí, el problema está en la línea de SQL:
Syntax: [ Download ] [ Hide ]
Using sql Syntax Highlighting
INSERT INTO fichas SET num_operacion=? WHERE email=?


Me parece que lo que quieres hacer es un UPDATE:

Syntax: [ Download ] [ Hide ]
Using sql Syntax Highlighting
UPDATE fichas SET num_operacion=? WHERE email=?

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Responder al tema  [ 6 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO