<%args> $recaptcha_challenge_field => undef $recaptcha_response_field => undef $current => undef $new1 => undef $new2 => undef <%perl> #print "
 $current, $new1, $new2\n
"; if( ! defined($session{'userid'}) ) { Bad User!

You can't change your password if you're not logged in!

<%perl> } else { unless( defined($new2) && defined($new1) && defined($current) ) { Password Change
<%perl> # reCaptcha Output form # Public key print $c->get_html( '6Lf1RwAAAAAAANZIsJS0Ra-ycdARlCNMTzOkkC-v' );
Current Password
New Password
New Password (Confirm)
<%perl> # Check the form results (both of them) } else { # Verify ReCaptcha submission my $result = $c->check_answer( # Private key '6Lf1RwAAAAAAAP6IcWCSHjdtZ5yh1y2muHE7f1Zy', $ENV{'REMOTE_ADDR'}, $recaptcha_challenge_field, $recaptcha_response_field ); # Munge just like login.html $current =~ y/A-Za-z/N-ZA-Mn-za-m/; my $current_check = $dbh->selectrow_array("SELECT userid FROM users WHERE username=? AND password=?", undef, $session{'username'}, md5_hex($current)); #print "
 $current_check\n
"; if ( $current_check && ($new1 eq $new2) ) { Password Changed <%perl> # Munge it the same way the login form does my $dbpassword = $new1; $dbpassword =~ y/A-Za-z/N-ZA-Mn-za-m/; $dbh->do("UPDATE users SET password = ? WHERE userid = ?", undef, md5_hex($dbpassword), $current_check ); } else { if( $result->{is_valid} ) { ReCaptcha correct, but input invalid, sorry. Try again. <%perl> } else { ReCaptcha failed, sorry. Try again. <%perl> } } } } <%method title> Password Change <%init> our($dbh,%session); use utils; use Unicode::String; use Digest::MD5 qw(md5_hex); $r->content_type("text/html; charset=utf-8"); use Captcha::reCAPTCHA; my $c = Captcha::reCAPTCHA->new;