################################################################### # password.pl # # # # copyright 1998 Kenneth Ruyter for The Graphic Age. # # http://www.graphicage.com mailto:keny@graphicage.com # # # # Email me if you have modifications to this script or # # suggestions to make it better. Oh, Yeah and the bug thing too.. # # # # General Description: # # a utility to verify a password against a database of passwords # # requires parseform.pl # # you should call sub VerifyLogin from ParseForm # # # # sub Authenticate prints out the password screen, # # sub VerifyLogin checks it against a file # # # # Key Features: # # allows the user to werify password and gain entry to a cgi # # this is acheived by calling another subroutine if the # # password is good. # # # ################################################################### # sub Authenticate sub Authenticate { # Gets user information print "Content-type: text/html\n\n"; print <<"HTML"; RiverWeb Entry Point

Welcome to the RiverWeb Water Quality Simulator.

Please enter your name and password,
select whether you want to retrieve
a session or create a new session,
and click on submit.

Login:

Password:


Session



If you are a student in a class, please follow your teacher's directions for logging in.

If you are a visitor, you can use your email address for both login username and password.
If that doesn't work, by chance someone else is using that login. Choose something else. Have fun!

If you are taking the RiverWeb Tour, login and then follow the instructions on the left side of your screen.
HTML } # sub VerifyLogin sub VerifyLogin { # open datafile of login/passwords open (DATA, "<$datafile"); # Set a number to count lines in file $d = 1; # While reading in data, do this while () { # count the lines in the file $d += 1; # ditch the newline chop; # split the information on that line on the ands, # assign each to a variable. ($login, $password, $order) = split("&",$_); # Send the info to a doubly subscripted array, giving each line a home. push(@database, { Login => $login, Password => $password, Order => $order, }); } # close datafile close (DATA); # get the login and password info from the form, assign it to variables if ( $form{"login"} ){ $logging = $form{"login"}; } if ( $form{"password"} ){ $pussword = $form{"password"}; } # $imin is a test to see whether you entered the right data $imin = 0; # loop through array and test for password (it's not the most secure script!) # for each of the lines in the password file do this.. for ($c = 0; $c <= $d ; $c++){ # if the login is correct, do this.. if ($database[$c]{Login} eq $logging){ $logged = "oui"; # if the password is correct, do this.. if ($database[$c]{Password} eq $pussword){ # if the password is a string, not nothing do this.. (fixes a bug) if ($pussword){ # set the imin to 1, saying you got in $imin = 1; ################################################################### if ($form{"edit"} eq "New"){ $user = $form{login}; &ResetOrderInDatabase; &PrintArrayToDatabase; &PrintMap; } else { # print "Honey I'm Home"; # Order is stored in $database[$c]{Order} # Login is stored in $database[$c]{login} # Password is stored in $database[$c]{password} &PrintMap; } ################################################################### # end good password action loop } # end password test loop } # end login test loop } # end loop through array } # now if that didn't work if ($imin == 0){ if ($logged eq "oui"){ $error = "Authentication Failed, Please enter a correct password for user $form{login}"; &PrintError; } else { # if user wants to retrieve, error/record does not exist if ($form{"edit"} eq "Retrieve"){ $error = "record does not exist - perhaps you entered the wrong login information"; &PrintError; } else { # Add user to database $user = $form{login}; &ApendDatabase; &PrintMap; # Login is stored in $form{"login"} # Password is stored in $form{"password"} } } # close bad password loop } # close the subroutine } 1;