| Category: | CGI programming |
| Author/Contact Info | T.R. Fullhart, kayos@kayos.org |
| Description: | If you have a "membership" area that uses HTTP Basic Auth, then you probably have to edit the .htpasswd file pretty often. This module let's you treat the .htpasswd file as a Tied hash. This module uses Apache::Htpasswd. Example:
|
# $Id: Htpasswd.pm,v 1.3 2000/05/24 20:27:48 kayos Exp $
package Tie::Htpasswd;
use strict;
use vars qw($VERSION);
use Apache::Htpasswd;
$VERSION = sprintf("%d.%02d",q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/);
my $F_FILENAME = 0;
my $F_DATA = 1;
sub TIEHASH {
my ($pkg, $filename) = @_;
my $obj = [];
$obj->[$F_FILENAME] = $filename;
$obj->[$F_DATA] = new Apache::Htpasswd($filename);
return (bless $obj, $pkg);
}
sub FETCH {
my ($self,$key) = @_;
return $self->[$F_DATA]->fetchPass($key);
}
sub STORE {
my ($self,$key,$value) = @_;
if($self->[$F_DATA]->fetchPass($key)) {
$self->[$F_DATA]->htpasswd($key,$value,1);
} else {
$self->[$F_DATA]->htpasswd($key,$value);
}
return $self->[$F_DATA]->fetchPass($key);
}
sub DELETE {
my ($self,$key) = @_;
my $prev_value = $self->[$F_DATA]->fetchPass($key);
$self->[$F_DATA]->htDelete($key);
return $prev_value;
}
sub EXISTS {
my ($self,$key) = @_;
my $result = $self->[$F_DATA]->fetchPass($key);
return ( $result );
}
sub DESTROY {
my ($self) = @_;
undef $self->[$F_DATA];
}
1;
|
|
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
RE: Tie::Htpasswd
by KM (Priest) on May 20, 2000 at 04:03 UTC | |
by kayos (Sexton) on May 24, 2000 at 19:05 UTC |