Passwortabfrage - wichtig - Probleme


L

lynyrd

Ich brauche für meine Homepage eine Passwortabfrage. Ich habe mehrere User und die Namen + Passwörter. Sie sind in einer Text datei gespeichert. Ich habe das script wie folgt in meinen Formular eingebunden:
Code:
<form Action="../cgi-bin/members.pl" method="POST">
wenn ich es ausführe erhalte ich folgende Fehlermeldung:(

Code:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
:(
Hier ist noch der quelltext
Code:
#! perl
# $eingabe="&".$ENV{'QUERY_STRING'}."&";
read(STDIN, $eingabe, $ENV{'CONTENT_LENGTH'});
$name=&suche($eingabe,"name");
$password=&suche($eingabe,"password");
$richtig=0;
$right_url = "URL";
$wrong_url = "URL";
open(MEMBERS,"<members.txt");
while(<MEMBERS>)
{
@daten=split(/,/,$_,2);
if ($daten[0] eq $name && $daten[1] eq $password){$richtig=1};
}
close(MEMBERS);
if($richtig eq 1)
{
print "Location: $right_urlnn";
}
else
{
print "Location: $wrong_urlnn";
}
sub suche
{
$zeile=$_[0];
$suchenach=$_[1];
$nr=index($zeile,"&".$suchenach)+length($suchenach)+2;
$in=substr($zeile,$nr,length($zeile));
$nr=index($in,"&");
$in=substr($in,0,$nr);
return $in;
}
Ich hoffe ihr könnt mir helfen. Wenn ihr noch mehr informationen braucht, dann postet es bitte
:( :(
 

barney

Mitglied
hi,

ich habe auch eine frage. hast du schon mehrere perl scripts?
wenn ja schau dir bitte die erste zeile mit der pfadangabe von
perl an, normalerweise müsste es lauten:

#!/usr/bin/perl

und eine zweite. warum so umständlich willst du kein htaccess ,
oder kein fertiges script verwenden?
und noch eine wie schaut dein textfile aus (wie hast du es formatiert?)

hoffe es funkt dann.
mfg barney
 

barney

Mitglied
lösung

hi,

da ich heute einen guten tag hatte hab ich eine pwabfrage geschrieben:
aber nochmals als hinweis so eine pw abfrage ist sehr unsicher!!!
nimm lieber htaccess.

also gut im htmlfile folgende form einfügen:

Code:
<form name="eing" method="post" action="../cgi-bin/members.pl">
              <div align="center"><br>
                <input type="text" name="name">
                <br>
                <input type="password" name="password">
                <br>
                <input type="submit" name="Abschicken" value="Abschicken">
              </div>
            </form>
und das script sieht so aus:

Code:
#!/usr/bin/perl

#dies ist ein standardtext der mir die gelieferten daten in das hash FORM schreibt:
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
  $buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $name =~ tr/+/ /;
  $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value;
}
print "Content-type: text/html\n\n";
#Hier werden die variablen definiert!
$right_url = "RICHTIG";
$wrong_url = "FALSCH";
$PWfile = "members.txt";
$richtig = 0;

#Öffnet mir die datei und schreibt sie mir in das array @members
open(DATEI,"<$PWfile") || die "Fehler beim Öffnen\n";
@members = <DATEI>;
close(DATEI);

#für jede zeile die kontrolle durchführen ob user und pw stimmen:
foreach $member(@members)
{
$semi = index($member,";");
chomp($USER = substr($member,0,$semi));
chomp($PW = substr($member,$semi +1));
if ($USER eq $FORM{name} && $PW eq $FORM{password})
{
$richtig=1;
break;
}
}

# naja und die abfrage auf die richtigkeit:
if($richtig eq 1)
{
print "Location: $right_url";
}
else
{
print "Location: $wrong_url";
}
das format mit deinem user und pw file muss folgendermassen aussehen:

user1;pw1
user2;pw2
user3;pw3
. .
. .
. .

jeder user in eine eigene zeile dann ein ';' und das pw gleich hinten nach.

hoffe geholfen zu haben
mfg barney
 

Neue Beiträge