Avatar billede mpj86 Nybegynder
07. juni 2003 - 00:55 Der er 15 kommentarer og
2 løsninger

Er dette sikkert nok lavet?

Hej

Har jeg lavet det sikkert nok?

kode:

<?php

    if (empty($mail))
    {
    echo 'Du skal skrive din email';
    }
    else
    {
    $post_mail = mysql_escape_string($_POST['mail']);

    $password = substr(ereg_replace("[^A-Za-z2-9]", "", crypt(time())),0,10);
   
    $result_mail = mysql_query("SELECT mail FROM brugere WHERE mail = '$post_mail'") or die (mysql_error());
   
    $array_mail = mysql_fetch_array($result_mail);

    mysql_query("UPDATE brugere SET password=MD5('$password') WHERE mail='$post_mail'") or die (mysql_error());
       
    $query = mysql_query("SELECT * FROM brugere WHERE mail = '$mail'");
    while($row = mysql_fetch_array($query))
    {
    $pw = $row['password'];
    }
        if($array_mail['mail'] == $mail) {
        $msg = 'Dit nye password er: '.$password;
        $recipient = $array_mail['mail'];
        $subject = 'Password';
        mail($recipient, $subject, $msg);
        echo 'Password sendt!';
    }
    else
    {   
        echo 'Forkert mail';
    }
    }
?>
Avatar billede mpj86 Nybegynder
07. juni 2003 - 00:57 #1
det er til glemt password :)
Avatar billede zeled Nybegynder
07. juni 2003 - 02:04 #2
Tjae... hvis det virker, så er det skam godt nok....
Avatar billede ohmish Nybegynder
07. juni 2003 - 02:22 #3
det ser fint ud.. men måske burde du checke brugeren på mere end emailadressen :)
Avatar billede ohmish Nybegynder
07. juni 2003 - 02:26 #4
men det er ikke vigtigt.. kun hvis du frygter at en person laver rav i den.. evt. kender en masse brugeremails. så ka han nulstille (forny) andres kodeord. det skader ikke men er da irriterende hvis det sker.
Avatar billede mpj86 Nybegynder
07. juni 2003 - 12:32 #5
Det er ikke muligt at oprette en profil med 2 ens mails.
Så der kan ikke være 2 personer der har den samme mail.
Avatar billede myplacedk Nybegynder
07. juni 2003 - 17:09 #6
Nejnej, men hvad sker der hvis man indtaster en andens email-adresse?

Hvad sker der hvis jeg bliver sur på en eller anden, og sætter en maskine til én gang i døgnet at "indtaste" personens email-adresse? Ja, så får personen vel et nyt password hver dag?
Avatar billede myplacedk Nybegynder
07. juni 2003 - 17:11 #7
Du får lige en løsning på det problem... :)

Når et nyt password er genereret overskriver det ikke det gamle password, men placeret i et andet felt i databasen. Brugereren kan nu logge ind med begge passwords.
Logger man ind med det gamle password, bliver det nye slettet.
Logger man ind med det nye password, bliver det flyttet "oven i" det gamle, så kun det nye kan bruges for eftertiden.
Avatar billede mpj86 Nybegynder
07. juni 2003 - 17:14 #8
Hvordan vil du lave det? det kan jeg ikke finde ud af...

Hvad så med f.eks forummet phpBB der skal du dog også skrive ens brugernavn men det kan du jo finde ved de ting folk skriver....
Avatar billede myplacedk Nybegynder
07. juni 2003 - 17:22 #9
Hvordan? Æh, præcist som der står, bare skrevet om til PHP og SQL... Er der noget bestemt af det, du ikke kan finde ud af?

Jeg ved ikke hvordan phpBB gør, jeg har ikke prøvet dens glemt-password-funktion.
Avatar billede mpj86 Nybegynder
07. juni 2003 - 17:26 #10
Jeg ved ikke hvordan man laver så dette kommer til at virke:

Logger man ind med det gamle password, bliver det nye slettet.
Logger man ind med det nye password, bliver det flyttet "oven i" det gamle, så kun det nye kan bruges for eftertiden.
Avatar billede myplacedk Nybegynder
07. juni 2003 - 17:32 #11
Slette det nye: UPDATE tabel SET nypassword=NULL WHERE userid=...
Overskrive det gamle med nyt: UPDATE tabel SET password=nypassword, nypassword=NULL WHERE userid=...
Avatar billede mpj86 Nybegynder
07. juni 2003 - 17:37 #12
Fatter jeg ikke helt hvor mange points skal du have for at lave så det virke som du skrev med:

Logger man ind med det gamle password, bliver det nye slettet.
Logger man ind med det nye password, bliver det flyttet "oven i" det gamle, så kun det nye kan bruges for eftertiden.
Avatar billede myplacedk Nybegynder
07. juni 2003 - 17:43 #13
Hvis jeg skal lave en færdig løsning til dig, så er det ikke point jeg skal have. ;-)

Jeg prøver lige med noget pseudo-kode der ligger tættere på det færdige resultqat:

Nu har du sikkert noget i stil med:
if (kan logge ind) {
  $loggedin = true;
}

Det kan du ændre til:

if (kan logge ind med gammelt kodeord){
  Slet det nye
  $loggedin = true;
} elseif (kan logger ind med nyt kodeord) {
  Overskriv det gamle med det nye
  $loggedin = true;
}
Avatar billede mpj86 Nybegynder
07. juni 2003 - 17:47 #14
Jeg har lavet et helt brugersystem med login og opret osv. det er kun det med:

Logger man ind med det gamle password, bliver det nye slettet.
Logger man ind med det nye password, bliver det flyttet "oven i" det gamle, så kun det nye kan bruges for eftertiden.

Du skal hjælpe mig med skriv hvad du skal bruge af koder i mit brugersystem...
Avatar billede myplacedk Nybegynder
07. juni 2003 - 20:58 #15
Det var også det jeg regnede med. :)
Prøv, og spørg hvis du går i stå. Du har fået pseudo-kode, det skal "bare" oversættes til PHP. ;-)
Avatar billede beboc Nybegynder
08. juni 2003 - 14:47 #16
Du kan også vælge at lave et script, som når bruger trykker på et link du sender til ham pr. email på baggrund af indtastning af hans brugernavn, resetter passwordet. F.eks. resetpassword.php?username=whatever&pass=something (hvor pass f.eks. kunne være en md5 encoded værdi af en hemmlig string og brugernavnet). Hvis en bruger så indtaster en andens brugernavn eller email på "forgot password" siden så bliver det ikke automatisk nulstillet. Url'en kunne så "expire" efter et stykke tid. Dette er der mange forums der bruger.
Avatar billede mpj86 Nybegynder
08. juni 2003 - 19:41 #17
Takker beboc skriv lige som et svar hvis du vil have nogle af pointsne
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