Avatar billede henrik_79 Nybegynder
22. juni 2004 - 12:30 Der er 10 kommentarer og
1 løsning

Hvordan forbedres dette loginscript ?

Jeg har lavet dette loginscript som egentliger funker ok...

Men har lidt problemer på enkelte computere rundt omkring...

Nogen der har nogle forslag til hvordan scriptet kan optimeres ???


<? 
if ($log && $usr_1 == "") {

        $fejl .= "<font color=#FF0000><B>Brugernavn skal udfyldes !</b></font>";
}
if ($log && $pswd == "") {
    if ($fejl) {
        $fejl .= "<br>"; }
        $fejl .= "<font color=#FF0000><B>Kode skal udfyldes !</b></font>";
}
if ($pswd != "" && $usr_1 != "") {

    $password = md5($pswd);
    $login_sql = mysql_query("select * from admin where username = '$usr_1' and password = '$password'");
    $login_tjek = mysql_num_rows($login_sql);

if ($login_tjek) {
    if ($husk) {
    setcookie("emj", $usr_1 . "|" . $password . "|" . $husk, time()+31536000); // gem login i 1 år
    header("location: $PHP_SELF"); // reload siden for at benytte cookie
    }
    else {
      setcookie("emj", $usr_1 . "|" . $password, time()+600);
      header("location: $PHP_SELF");
    }
}
else { $fejl = "<font color=#FF0000><B>Ugyldige login oplysninger !!</b></font>";  }
}
if (!$HTTP_COOKIE_VARS['emj']) {
    ?>
            <CENTER><BR><FONT SIZE="+2" COLOR=""><B><I>LOGIN</I></B></FONT>
    <FORM METHOD=POST>
    <? if ($fejl) { echo $fejl . "<br><BR>"; } else { echo "<br><BR>"; }?>
Brugernavn:    <INPUT TYPE="text" NAME="usr_1"><BR>
Kode: <INPUT TYPE="password" NAME="pswd"><BR><BR><INPUT TYPE="checkbox" NAME="husk" value="1" onclick="alert('Denne funktion er på egen ansvar !!\n\nAlle brugere med adgang til din pc vil kunne logge ind i systemet');"> Husk Login<BR><BR>
<INPUT TYPE="submit" value="Login" name="log">
    </FORM></CENTER>
    <? exit; }

    if ($HTTP_COOKIE_VARS['emj']) {
$data = explode("|", $_COOKIE["emj"]);
$tjek_login_sql = mysql_query("select * from admin where username = '$data[0]' and password = '$data[1]'");
$tjek_resultat = mysql_num_rows($tjek_login_sql);

  if ($tjek_resultat < 1) {
    setcookie("emj","", time());
header("location: $PHP_SELF");
echo "Du har ikke adgang til siden";
} else { setcookie("emj", $data[0] . "|" . $data[1], time()+600); }
    }
?>


Det er måske noget rodet... men er bestemt heller ik nogen php haj !!
Avatar billede chries Nybegynder
22. juni 2004 - 12:49 #1
bruger $_GET, $_POST... osv istedet for at referere direkte til $usr_1, $password.
sikre $usr_1, $password hvis der ikke er magic_quotes.
hvis det kører på et system, hvor det er deaktiveret, ville det være katatrofalt med
$login_sql = mysql_query("select * from admin where username = '$usr_1' and password = '$password'");

f.eks hvis nogen tastede ' OR 1=1 OR ''=' ind i user feltet:
$login_sql = mysql_query("select * from admin where username = '' OR 1=1 OR ''='' and password = '...'");
Avatar billede henrik_79 Nybegynder
22. juni 2004 - 13:03 #2
Hmm... mit største problem troede jeg var mit brug af cookie.... meen... det ser ud til man bliver klogere på sikkerheden også *LOL*

Fatter bare ik helt hvordan man bruger $_GET & $_POST
Avatar billede the_ghost Nybegynder
22. juni 2004 - 13:26 #3
Hvis variablerne kommer fra en POST-form, skal du tilgå dem vha. $_POST['variable-navn'] og hvis det er en GET-form tilgår du dem vha. $_GET['variable-navn']

eks.
$usr_1 = $_POST['usr_1']
Avatar billede henrik_79 Nybegynder
22. juni 2004 - 13:28 #4
Oki..... har i så nogle forslag til min cookie funktion... syns ik selv den er den bedste løsning ?
Avatar billede henrik_79 Nybegynder
22. juni 2004 - 18:14 #5
hmm.... ingen indvendinger ???
Avatar billede m_els Nybegynder
22. juni 2004 - 18:16 #6
istedet for cookies kan du bruge sessions...
Avatar billede henrik_79 Nybegynder
22. juni 2004 - 18:38 #7
Jamen er der ik noget med at der kan gå kludder i sessions ???

Bruger sessions også cookies ??
Avatar billede m_els Nybegynder
22. juni 2004 - 18:43 #8
er ikke verdens største haj til php, men så vidt jeg ved så er sessions en form for cookie, som bliver lagret midlertidigt på serveren. Herved undgår man problemer brugere, der har slået brugen af cookies fra...

Jeg ved ikke om der kan gå kludder i dem...men jeg ved at du skal huske at skrive "session_start();" som den første line i dine scripts, hvis du vil druge sessions
Avatar billede henrik_79 Nybegynder
24. juni 2004 - 12:08 #9
chries >> smider du lige et svar ??

Hvis det da er ok med de andre at det er dig der får points :-)
Avatar billede henrik_79 Nybegynder
26. juni 2004 - 01:23 #10
Hmm....


Sker der noget her ??
Avatar billede henrik_79 Nybegynder
23. oktober 2004 - 13:55 #11
Nå så svarer jeg selv for at få lukket !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester