2008-09-23 18:11 @799 |
|
|
|
|
|
Validación de usuario
|
 Hola de nuevo... estoy probando un CGI asociado a un formulario que pasa el password para ser validado... pero me muestra el siguiente mensaje: Código: No se puede mostrar la página Hay un problema con la página solicitada y no puede ser mostrada.. -------------------------------------------------------------------------------- HTTP 500 - Error interno del servidor Realmente este CGI es la unión de dos, en uno solo, que ejecutándolos independientemente me funcionan, pero al fusionarlos, ya no. Agradecería su ayuda... Gracias. El código del CGI es el siguiente: Using perl Syntax Highlighting #!/usr/bin/perl
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
use strict;
use DBI;
my $pruser = "GJR";
my $identif = " ";
my $nombre = " ";
my $dbuser = "maest_gonzalo";
my $dbpass = "gjr";
my $dbhost = "localhost";
my $dbname = "maest_ME3REGIS";
read(STDIN, my $buffer, $ENV{"CONTENT_LENGTH"});
my @pairs = split(/&/, $buffer);
foreach my $pair (@pairs)
{
(my $name, my $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost",$dbuser,$dbpass)|| die('No se puede conectar a la base de datos...');
my $query = $dbh->prepare( "SELECT nombre,identif FROM ME3REG WHERE identif = '$pruser'" );
$query->execute();
$query->bind_columns(\$nombre, \$identif);
while( $query->fetch() ) {
}
$query->finish();
if ( $FORM{"password"} eq $identif) {
print
header,
start_html('CGI MINIMO'),
h1('VALIDACION PASSWORD'),
hr,
p("El password es correcto"),
hr;
print end_html;
} else {
print
header,
start_html('CGI MINIMO'),
h1('VALIDACION PASSWORD'),
hr,
p("El password es Incorrecto"),
hr;
print end_html;
}
exit;
|
2008-09-24 07:11 @341 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10272
|
|
|
|
Usando el módulo CGI, las líneas Using perl Syntax Highlighting read(STDIN, my $buffer, $ENV{"CONTENT_LENGTH"});
my @pairs = split(/&/, $buffer);
foreach my $pair (@pairs)
{
(my $name, my $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
} te sobran. Con param() puedes obtener el valor de cada parámetro. ¿El mensaje de error no da más pistas? Quizás el CGI no tenga permisos de ejecución. Yo miraría los ficheros de actividad del servidor web.
_________________ JF^D Perl programming
|
2008-09-24 11:06 @504 |
|
|
|
|
|
|
Excelente la OBSERVACIÓN... así como está este código funciona. Me está retornando un mensaje por pantalla con la validación... correcta o incorrecta, realmente lo que quiero es retornar a la página que hizo el llamado del CGI y "mediante un parámetro que me retorne el CGI llamar otra página" no sé si esto es posible o no en este momento, por favor ¿puedes guiarme acerca de qué es lo que debo de hacer? Gracias por todo... Using perl Syntax Highlighting #!/usr/bin/perl
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
my $prus = " ";
my $pruser = " ";
my $identif = " ";
my @parametros = param();
foreach $prus ( @parametros ) {
$pruser = (param( $prus ));
}
use strict;
use DBI;
my $dbuser = "maest_gonzalo";
my $dbpass = "gjr";
my $dbhost = "localhost";
my $dbname = "maest_ME3REGIS";
my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost",$dbuser,$dbpass)|| die('No se puede conectar a la base de datos...');
my $query = $dbh->prepare( "SELECT identif FROM ME3REG WHERE identif = '$pruser'" );
$query->execute();
$query->bind_columns(\$identif);
while( $query->fetch() ) {
}
$query->finish();
if ( $pruser eq $identif) {
print
header,
start_html('ME3'),
h1('VALIDACION PASSWORD'),
hr,
p("El password es correcto"),
hr;
print end_html;
} else {
print
header,
start_html('ME3'),
h1('VALIDACION PASSWORD'),
hr,
p("El password es Incorrecto"),
hr;
print end_html;
}
exit; Cordial Saludo, Gonzalo.
|
2008-09-25 04:57 @247 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10272
|
|
|
|
Using perl Syntax Highlighting #!/usr/bin/perl
use strict;
use DBI;
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
my $prus = " ";
my $pruser = param('pruser') || '';
my $identif = " ";
my @parametros = param();
my $dbuser = "maest_gonzalo";
my $dbpass = "gjr";
my $dbhost = "localhost";
my $dbname = "maest_ME3REGIS";
my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost", $dbuser, $dbpass)
or die 'No se puede conectar a la base de datos...';
my $query = $dbh->prepare("SELECT identif FROM ME3REG WHERE identif = '$pruser'");
$query->execute();
$query->bind_columns(\$identif);
$query->fetch();
$query->finish();
print
header,
start_html('ME3'),
h1('VALIDACION PASSWORD'),
hr
;
print p( $pruser eq $identif ? "El password es correcto"
: "El password es incorrecto"
);
print
hr;
end_html
;
_________________ JF^D Perl programming
|
2008-09-25 17:26 @768 |
|
|
|
|
|
|
|
Hola gracias por las alternativas... Realmente tu recomendada es la más óptima por muchas cosas y por seguridad. Me decidí por el 'Location:' ... tengo una serie de estándares y complicada la cosa.
Me queda una pregunta, con el Redirect(), ¿no puedo pasar algún parámetro a la página?
Cordial Saludo,
Nota: Serraré los otros hilos, para quede solo este en observación...
GJR.
|
2008-10-03 09:16 @427 |
|
|
|
|
|
|
|
Ok. Gracias, explorer.
|
|
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 |
 |
|