webForumDet fria alternativet

Login

Perl & Rubyur Perl, Python, Ruby och övrig CGI

7 svar · 432 visningar · startad av Kent

KentMedlem sedan juli 2000355 inlägg
#1

Hur bygger man ett login system i perl,
man ska kunna logga in på ett unikt id samt lösen.
Någon som råkar ha ett sådant script.

HansenMedlem sedan aug. 2000374 inlägg
stevenetMedlem sedan juni 20001 251 inlägg
#3

Så här kanske?

#!/usr/bin/perl

        my($buffer, @par, $i);

        # Lds informationen
        $buffer = "";
        $buffer = $ENV{'QUERY_STRING'}
                if $ENV{'REQUEST_METHOD'} eq 'GET';
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'})
                if $ENV{'REQUEST_METHOD'} eq 'POST';

        # Omvandla + till mellanslag
        $buffer =~ tr/+/ /;

        # Bygg en lista av namn och vdrden
        @par = split /[&=]/, $buffer;

        # Tolka kodade tal
        foreach $par (@par)
                {$par =~ s/%([0-9A-F]{2})/chr(hex($1))/egi;}

        # Ldgg in i tabellen %form
        for ($i=0; $i<$#par; $i+=2)
        {
                if ($FORM{$par[$i]})
                        {$FORM{$par[$i]}.= "\n".$par[$i+1];}
                else
                        {$FORM{$par[$i]} = $par[$i+1];}
                        }

$LOCK_EX = 2;
$LOCK_UN = 8;
$fil = "fil.dat";
$action = $FORM{'action'};

print "Content-type: text/html\n\n";

&in if ($action eq 'in');

print "<h3><font face=\"Verdana\"Logga in</font></h3><p>\n";
print <<HTML;
 V.g. ange Era uppgifter för att logga in.
<FORM METHOD="POST" ACTION="index.cgi">
<INPUT TYPE="hidden" NAME="action" VALUE="in">
 ID-nummer:<BR>
<INPUT TYPE="text" NAME="id"><BR>
 Lösenord:<BR>
<INPUT TYPE="text" NAME="losen"><BR>
<INPUT TYPE="submit" VALUE="Logga in">
</FORM>
HTML
exit;

sub in {
$in_id = $FORM{'id'};
$in_losen = $FORM{'losen'};
$hittat = 0;
open(meddb, "$fil");
&lock(meddb);
while(<meddb> ) {

$filen = $_;

($id,$losen) = 
split(/&#0124;/, $filen); 

if (($id eq $in_id) && ($losen eq $in_losen)){

$hittat++;

}
}  

if($hittat == 0) {
print "<h3><font face=\"Verdana\">FEL! </font></h3><p>\n";
print "Lösenordet och/eller ID-nummret Ni angav var fel. V.g. försök igen genom att trycka på TILLBAKA-knappen din webbläsare och rätta till felet.\n";
exit;
}
print "Inloggad";
exit;
}

sub lock {
  local($file)=@_;
  flock($file, $LOCK_EX);
}

sub unlock {
  local($file)=@_;
  flock($file, $LOCK_UN);
}

[r]Glömde ett subprogram.[/r]

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

[Redigerat av stevenet den 18 sep 2000]

stevenetMedlem sedan juni 20001 251 inlägg
#4

Kent, fungerade det?

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

KentMedlem sedan juli 2000355 inlägg
#5

Har ej haft tid att prova än,
hur lagras användarnamnet och lösenordet.

CssonMedlem sedan feb. 2000438 inlägg
#6

Om jag inte ser fel hämtas namnet och lösenordet ur en fil med en användare per rad med utseendet:

namn|lösenord

Det finns dock ingen funktion för att spara en ny användare i det här scriptet.

/Csson

stevenetMedlem sedan juni 20001 251 inlägg
#7

Nej, det finns ingen funktion för att spara nya användare i scriptet. Jag kan göra en sådan, om du säger hur du vill ha det upplagt.

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

jakobMedlem sedan aug. 200017 inlägg
#8

Varför inte bara använda .htaccess ?

129 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
125 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)