Hallo allezusammen ..!
ich habe mir überlegt, ein login script für den internen bereich meiner homepage zu machen. nun komm ich aber beim wichtigsten teil des scripts nicht weiter ..:
#!/usr/bin/perl
$AccessDenied = "http://www.az-clan.at/error/login/user_pass.html";
$AccessAllowed = "http://www.az-clan.at/intern/intern.html";
$ForeignCall = "http://www.az-clan.at/error/login/foreign_call.html";
#_______________________________________________________________
&Server;
&ReadParse;
$Username = $in{'user'};
$Password = $in{'pass'};
&CheckFields;
&AuthLogin;
print "Location: $AccessAllowed\n\n";
exit;
#_______________________________________________________________
sub ReadParse { local (*in) = @_ if @_;
local ($i, $key, $val); if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val; } return length($in); }
#_______________________________________________________________
Sub CheckFields {
if (!$Username || $Username eq ' ') {&Error;}
if (!$Password || $Password eq ' ') {&Error;}
}
Sub Error {
print "Location: $AccessDenied\n\n";
exit;
}
#_______________________________________________________________
Sub Server {
if ($ENV{'HTTP_REFERER'}) {
foreach $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$check_referer = '1';
last;
}}}
else {$check_referer = '1';}
if ($check_referer != 1) {
print "Location: $ForeignCallr\n\n";
exit;
}}
#_______________________________________________________________
Sub AuthLogin {
so das ist das Script. Jetzt möchte ich, dass die cgi $Username und $Password in das format bringt: $Username:$Password (aaa:bbb) und dann mit den einträgen in der datei ".members" vergleicht. Wenn Username:Password mit den kombinationen aus der datei übereinstimmt kommt dann:
print "Location: $AllowedAccess\n\n"
wenn es nicht übereinstimmt dann:
print "Location: $DeniedAccess\n\n"
Das wäre mal das erste!
Als nächstes möchte ich, dass $Password in unix (?? bin mir nicht sicher wie es genau heißt ??) verwandelt wird und dann erst verglichen!
Als letztes würde ich noch gern $Username auf der internen seite verwenden: da sollte dann stehen: Willkommen $Username !! kann man das in eine normale html einbauen oder muss der letzte teil per "print" befehl generiert werden ??
Danke im voraus !
Mfg