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 "";