2010-12-02 19:29 @854 |
|
|
kernelito
Perlero Nuevo
|
Registrado: 2010-10-28 17:52 @786 Mensajes: 5
|
|
|
Cómo validar los datos de un formulario con CGI
|
¡¡Hola a todos!! Soy electrónico infiltrándome en informática. Tengo una web en la cual existe un formulario (nombre, apellidos, enviar, borrar todo) el cual consulta a una base de datos (MySQL). El problema radica en que los datos que se ingresan al formulario no se validan y al momento de dar clic en el enviar, siempre presenta los datos según la sentencia SQL. He leído sobre la función param() para validar, pero no estoy muy claro de cómo usarla. CÓDIGO HTML (Acá está el formulario): Using html4strict Syntax Highlighting <form action="/cgi-bin/mostrar.pl" method="post">
Nombre <input name="nombre" maxlength="14" size="15" type="text">
Apellidos <input name="apellidos" maxlength="14" size="15" type="text">
<input name="enviar" value="Enviar" type="submit"><input name="Borrar" value="Borrar Todo" type="reset">
</form> Acá expongo el archivo.pl Using perl Syntax Highlighting #!/usr/bin/perl
use warnings;
use strict;
use CGI ':standard';
use DBI;
# Imprimiendo las cabeceras
print "content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>Resultados</title>\n";
print "</head>\n";
print "<body>\n";
print h2("Conexión a MySQL con script de Perl");
#print "<h2><center>\n";
#<b>Ejemplo de conexión a MySQL con script de Perl</b>
#</center></h2>";
print "<pre>";
# Conectando a la bd MySQL, cuyo nombre es usuarios, usuario root y clave diti2010
my $dbh = DBI->connect("DBI:mysql:usuarios", "root", "diti2010");
die "connect failed: " . DBI->errstr() unless $dbh;
# Preparando para obtener la consulta de datos de la tabla clientes
my $sth = $dbh->prepare("SELECT id,nombre,apellidos, ip FROM clientes")
or die "prepare failed: " . $dbh->errstr();
$sth->execute() or die "execute failed: " . $sth->errstr();
my($id, $nombre, $apellidos, $ip );
# Observando a través de cada fila de data
while (($id, $nombre, $apellidos, $ip) = $sth->fetchrow()) {
print "$id : $nombre : $apellidos: $ip\n";
}
# Se desconecta de la bd
$sth->finish();
$dbh->disconnect();
# Se escriben las cabeceras de fin
print "</pre>\n";
Gracias.
|
2010-12-03 09:21 @431 |
|
|
kernelito
Perlero Nuevo
|
Registrado: 2010-10-28 17:52 @786 Mensajes: 5
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
|
Gracias por responder, voy a explicarme mejor.
Es lo último que digo: comprobar que los datos pasados por el usuario están en la base de datos y así responder la consulta.
Porque así como está, se pone cualquier cosa en el form y siempre responde sin importar que los datos existen en la base de datos.
Saludos.
|
2010-12-03 11:01 @501 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10249
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
Entonces, lo único que te falta es recuperar los parámetros pasados por el usuario y agregarlos a la sentencia SQL con una cláusula WHERE. Algo así: Using perl Syntax Highlighting my $par_nombre = param('nombre' );
my $par_apellidos = param('apellidos');
my $sth = $dbh->prepare(
"SELECT id,nombre,apellidos,ip FROM clientes WHERE nombre = ? AND apellidos = ?"
)
or die "prepare failed: " . $dbh->errstr();
$sth->execute($par_nombre, $par_apellidos) or die "execute failed: " . $sth->errstr();
Otra cosa... estás cargando el módulo CGI, pero no te estás aprovechando de sus ventajas. Mira mi CGI mínimo para que veas un ejemplo.
_________________ JF^D Perl programming
|
2010-12-06 08:52 @411 |
|
|
kernelito
Perlero Nuevo
|
Registrado: 2010-10-28 17:52 @786 Mensajes: 5
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
|
Gracias explorer,
Probaré, luego aviso cómo me fue.
Saludos
|
2010-12-09 08:44 @405 |
|
|
kernelito
Perlero Nuevo
|
Registrado: 2010-10-28 17:52 @786 Mensajes: 5
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
Hola nuevamente. Modifiqué el script, agregué lo recomendado, realicé la consulta desde la página web y no recupera los parámetros que se ponen en el campo del formulario (nombre y apellidos). Es decir, coloco cualquier dato en nombre y apellido y luego muestra solamente la frase "Conexión a MySQL con Script de PERL". Abajo está el script completo, si hay alguna duda de lo que hice. Saludos y gracias por el apoyo. Using perl Syntax Highlighting #!/us/bin/perl
use warnings;
use strict;
use CGI qw(:standard);
use CGI qw(param());
use DBI;
my $par_nombre = param('nombre' );
my $par_apellidos = param('apellidos' );
my ( $dbh, $sth );
# Imprimiendo las cabeceras
print "content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>Resultados</title>\n";
print "</head>\n";
print "<body>\n";
print h2("Conexion a MySQL con Script de PERL");
print "<pre>";
# Conectando a la bd mysql, cuyo nombre es usuarios, usuario root y clave xxxx
$dbh = DBI->connect("DBI:mysql:host:=localhost;database=usuarios", "root", "xxxx");
die "connect failed: " . DBI->errstr() unless $dbh;
# Preparando para obtener la consulta de datos de la tabla clientes
$sth = $dbh->prepare("SELECT id,nombre,apellidos,ip FROM clientes WHERE nombre = ? AND apellidos = ?")
or die "prepare failed: " . $dbh->errstr();
$sth->execute($par_nombre, $par_apellidos) or die "execute failed: " . $sth->errstr();
#my($id, $nombre, $apellidos, $ip );
$sth->finish();
$dbh->disconnect();
# Se escriben las cabeceras de fin
print "</pre>\n";
|
2010-12-09 14:29 @645 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10249
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
No sale nada porque has quitado el bucle while(). Además, tienes un ':' delante de un '=' en la conexión a la base de datos. Esta es mi versión: Using perl Syntax Highlighting #!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use CGI qw':standard *pre ';
use CGI::Carp qw'fatalsToBrowser'; # avisos y errores a la página
use DBI;
$|++; # no caché de salida
## Leemos los argumentos
my $par_nombre = param('nombre');
my $par_apellidos = param('apellidos');
## Si no nos han pasado argumentos, avisamos con un error
if (not $par_nombre and not $par_apellidos) {
print
header,
start_html('Resultados: ERROR en la consulta'),
h1('ERROR: Debe indicarnos nombre y apellidos'),
p("Nombre: [$par_nombre]"),
p("Apellidos: [$par_apellidos]"),
end_html,
;
exit;
}
## Nos conectamos a la base de datos
my $dbh = DBI->connect('DBI:mysql:host=localhost;database=usuarios', 'root', 'xxx')
or
die 'connect failed: ' . DBI->errstr();
## Preparando para obtener la consulta de datos de la tabla clientes
my $sth = $dbh->prepare('SELECT id,nombre,apellidos,ip FROM user WHERE username = ? AND domain = ?')
or
die 'prepare failed: ' . $dbh->errstr();
$sth->execute($par_nombre, $par_apellidos)
or
die 'execute failed: ' . $sth->errstr();
## Presentación de los resultados
print
header,
start_html('Resultados'),
h2('Conexión a MySQL con programa de Perl'),
;
## Bucle por los resultados
print start_pre;
while (my ($id, $nombre, $apellidos, $ip) = $sth->fetchrow()) {
print "$id : $nombre : $apellidos : $ip\n";
}
print end_pre;
## Fin de página
print end_html;
## Fin de la consulta
$sth->finish();
$dbh->disconnect();
__END__
_________________ JF^D Perl programming
|
2010-12-09 15:12 @675 |
|
|
kernelito
Perlero Nuevo
|
Registrado: 2010-10-28 17:52 @786 Mensajes: 5
|
|
|
Re: Cómo validar los datos de un formulario con CGI
|
|
Muy agradecido, explorer,
Solo modifiqué la contraseña y funcionó al 100%.
Buscaré la manera de documentarme y leer más para poder sacarle provecho a este lenguaje de programación.
Saludos.
|
|
Página 1 de 1
|
[ 8 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
|
|
Socializa |
 |
|