23. juni 2003 - 12:06Der er
13 kommentarer og 1 løsning
Har problemer med at aktiver en profil
Hej
Jeg er i gang med at lave så man skal klikke på et link som der bliver tilsendt til sin mail for at aktiver sin profil. Mit problem er så at jeg i db'en gemmer folks password som MD5 og mit aktiverings link ser sådan ud: aktiver_bruger.php?nick=mpj86&pass=243e61e9410a9f577d2d662c67025ee9
Hvor at hvis den finder i table brugere nick=mpj86 og password=243e61e9410a9f577d2d662c67025ee9 så skal den så ændre 0 til 1 i feltet aktiv. problemet er så bare at de ikke altid er ens passwordenes når det er MD5 hvordan kan man så lave det? det skal ikke være sådan at man kan se ens password i linket altså ikke noget med aktiver_bruger.php?nick=mpj86&pass=hejsa
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Slettet bruger
23. juni 2003 - 12:08#1
"problemet er så bare at de ikke altid er ens passwordenes når det er MD5 "
- Hvad mener du med det?
En md5 hash af 'et eller andet' vil altid give det samme resultat.
linket som der bliver tilsendt ser passwordet sådan ud: 243e61e9410a9f577d2d662c67025ee9 men i db'en ser det sådan ud: 541c57960bb997942655d14e3b9607f9
Ja, så må du have lavet en fejl, for mercur8 har jo ret i at md5 ikke sådan ændrer sig.
Synes godt om
Slettet bruger
23. juni 2003 - 12:18#5
Jeg forstår slet ikke, der kan være foreskel. For når du skal sende den mail ud, der indeholder det aktiverings-link, så henter du vil password fra databasen?! Og der er det jo md5'et allerede.
if (empty($nick) OR empty($password) OR empty($password2) OR empty($mail)) { echo '<font face="verdana" style="font-size: 11px;">Du skal udfylde alle felterne.<br><a href="java script:history.go(-1)">Tilbage</a>'; } elseif (strlen($password) > 15) { echo '<font face="verdana" style="font-size: 11px;">Password må max være på 15 tegn<br><a href="java script:history.go(-1)">Tilbage</a>'; } elseif ($password != $password2) { echo '<font face="verdana" style="font-size: 11px;">De to passwords skal være ens.<br><a href="java script:history.go(-1)">Tilbage</a>'; } elseif (strlen($nick) > 15) { echo '<font face="verdana" style="font-size: 11px;">Brugernavn må max være på 15 tegn<br><a href="java script:history.go(-1)">Tilbage</a>'; } else { $result_nick = mysql_query("SELECT nick FROM brugere WHERE nick = '$nick'") or die (mysql_error()); $number_nick = mysql_num_rows($result_nick); $result_mail = mysql_query("SELECT mail FROM brugere WHERE mail = '$mail'") or die (mysql_error()); $number_mail = mysql_num_rows($result_mail); if ($number_nick > 0) { echo '<font face="verdana" style="font-size: 11px;">Desværre brugernavnet <b>'.$nick.'</b> er optaget.<br><a href="java script:history.go(-1)">Tilbage</a></font>'; } elseif ($number_mail > 0) { echo '<font face="verdana" style="font-size: 11px;">Der er allerede oprettet en bruger med e-mail adressen '.$mail.'!<br><a href="java script:history.go(-1)">Tilbage</a></font>'; } else { $dato = date('d/m-Y - H:i:s'); $ip = $_SERVER['REMOTE_ADDR']; mysql_query("INSERT INTO brugere (nick,password,mail,dato,ip,sidste_aktivitet) VALUES ('$nick',md5('$password'),'$mail','$dato','$ip','NULL')") or die (mysql_error()); echo '<font face="verdana" style="font-size: 11px;">Brugernavnet <b>'.$nick.'</b> er oprettet!<br>klik <a href="login.php">her</a> for at logge ind</font>'; $msg = 'aktiver_bruger.php?nick='.$nick.'&pass='.md5('$password').''; $recipient = $mail; $subject = 'Aktivering af profil'; mail($recipient, $subject, $msg); } }
echo '</td></tr></table></center></div>'; ?>
Men passwordet i linket som bliver sendet til en bliver ikke det samme som i db'en
Denne måde som den her er det ikke også en god måde til glemt password så man skal kligge på et link før der bliver skiftet password?
For der er desvære man idioter som syntes det er sjovt at sende nye passwords til nogle af brugerne :(
Synes godt om
Slettet bruger
23. juni 2003 - 12:36#11
For det første er der ingen grund til at tage md5 2 gange. Den første gang med MySQL's md5() funktion den anden gang med PHP's md5 funktion.
Sikkerheden er jo ikke så meget større ved at sende brugerens password som md5 end som plain-text i dit setup.
Hvis man alligevel kan logge ind med md5 passwordet. Den eneste fordel er så, at brugerens "rigtige" password er skjult, skulle han anvende dette på andre sites. Men man kan jo stadig logge ind med md5 passwordet, eftersom dette i dit system, er det "rigtige" password.
Hvor at så nick og oldpass skulle være i db'en før den laver passwordet om til det der er i newpass?
Synes godt om
Ny brugerNybegynder
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.