use strict;
use warnings;
####
use CGI::Carp qw{ fatalsToBrowser };
####
use warnings FATAL => "all";
####
Use of unitialized value in numeric eq (==) at login.cgi line 50.
####
if($ref->{'counted'} == 1){
####
my $dbh = connectDB();
my $sth = $dbh->prepare("SELECT count(id) as counted FROM perl_users WHERE `username` = ? AND `password` = ?");
$sth->execute($uname, $pass_hash);
my $ref = $sth->fetchrow_hashref();
####
sub debug {
my ($msg) = @_;
my $lnum = (caller)[2];
print qq{Debug [line $lnum]: $msg
};
}
####
if($q->request_method eq "POST"){
debug("Yes, the request method WAS 'POST'");
####
my $uname = $q->param('uname');
my $pass = $q->param('pass');
debug("Passed values were: Uname=$uname Pass=$pass");
####
#!/usr/bin/perl
print "Content-type: text/html\n\n";
require 'learn/db_connect.pl';
use CGI;
use CGI::Session qw();
use CGI::Carp qw{ fatalsToBrowser };
use DBI;
use strict;
# use warnings; # Put this back in when done with FATAL => "all"
use warnings FATAL => "all";
my $username;
my $user_id;
use File::Basename;
my $prog = 'profile.cgi';
use Digest::SHA qw(hmac_sha512_hex);
my $q = new CGI;
my $cgi = new CGI;
my $meth = $q->request_method;
sub debug {
my ($msg) = @_;
my $lnum = (caller)[2];
print qq{Debug [line $lnum]: $msg
};
}
# If it's NOT POST, go back to index.pl
if($q->request_method ne "POST"){
print "";
exit;
}
# Get parameters
my $uname = $q->param('uname');
my $pass = $q->param('pass');
debug("Passed values were: Uname=$uname Pass=$pass");
# A better way to write if (!defined($uname) or $uname eq "") { ... }
# is if (!($uname || "")) { ... }
##
if (!($uname || "")) {
my $err = qq{error=please fill all fields};
print "";
exit;
}
my $pass_hash = hmac_sha512_hex($pass);
my $dbh = connectDB();
my $sql = qq{
SELECT count(id) as counted FROM perl_users
WHERE `username` = ? AND `password` = ?
};
$sth->execute($uname, $pass_hash);
my $ref = $sth->fetchrow_hashref();
if ($ref->{'counted'} != 1) {
my $err = qq{error=Invalid Username Or Password.};
print "";
exit;
}
# Successful up to this point -- note the lack of hard-to-read,
# multiply nested if ... else .. else ... else clauses.
##
$sql = qq{
SELECT * FROM perl_users WHERE `username` = ? AND `password` = ?
};
my $sql001 = $dbh->prepare($sql);
$sql001->execute($uname, $pass_hash);
my $result = $sql001->fetchrow_hashref();
$user_id = $result->{'id'};
$username = $result->{'username'};
my $s = CGI::Session->new;
$s->param("user_id" => $user_id);
my $id = $s->id;
print "";