#!/usr/bin/perl use strict; use warnings; use CGI qw ( :standard ); use Fcntl qw ( :flock ); use XML::Parser; if (param) { my ($parser, $document, $users); local($::flag); $::flag=0; open(USERS, "../../xml_final/users/users.xml") || die "Could not open users.xml $!"; flock(USERS, LOCK_SH); print header, start_html(-title => "Login" ,-style => { -src => "../../xml_final/db.css"}), title ("please login"); print start_html; $parser= new XML::Parser(); $parser->setHandlers( Start => \&start_handler, Char => \&char_handler ); $document = $parser->parse (\*USERS); close (USERS); sub start_handler{ my ($expat, $element, %attributes) =@_; if ($::flag==0 && $element eq "username") { $::flag=1; } if ($::flag==1 && $element eq "password") { $::flag=2; } } sub char_handler { my ($expat, $text) =@_; if ($::flag==1 && $text eq (param("username"))) { $::flag=1; } if ($::flag==2 && $text eq (param("password"))) { print h1("LOGIN IN IS ALL GOOD"); print redirect("viewdb.pl?username=(param(username)"); print end_html; } elsif ($::flag==2 && $text ne (param("password"))) { print h1 ("incorrect password"); $::flag=0; print p({-align=>'CENTER'},a{-href=>"login.pl"},"Try Agian?"); print end_html; #print a link back to login.pl } } } else { print header, start_html(-title => "Login" ,-style => { -src => "../../xml_final/db.css"}), title ("please login"); print start_form; print h1({-align=>'CENTER'}, "Please login"); print p({-align=>'CENTER'},"username:", textfield( -NAME=>"username" )); print p({-align=>'CENTER'},"password:", password_field( -NAME=>"password" )); print p({-align=>'CENTER'},submit("send"),reset); print end_form; print p({-align=>'CENTER'},a{-href=>"newuser.pl"},"New User?"); print end_html; }