Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:06 Der 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
Avatar billede 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.
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:12 #2
linket som der bliver tilsendt ser passwordet sådan ud: 243e61e9410a9f577d2d662c67025ee9 men i db'en ser det sådan ud: 541c57960bb997942655d14e3b9607f9
Avatar billede Slettet bruger
23. juni 2003 - 12:13 #3
Hvorfor er der forskel?
Avatar billede detox Nybegynder
23. juni 2003 - 12:16 #4
Ja, så må du have lavet en fejl, for mercur8 har jo ret i at md5 ikke sådan ændrer sig.
Avatar billede 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.

Tager du md5 2 gange?
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:23 #6
Det må være en fejl jeg har lavet.

Når man opretter sig ser det sådan ud:

<?php
require_once('topbar.php');
include('config.php');

echo '<div align="center"><center><table border="0" width="744" cellspacing="0" cellpadding="3" style="border: 1px solid #000000"><tr><td width="100%" bgcolor="#B9E1FD">';

$nick = $_POST['nick'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$mail = $_POST['mail'];

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

Hvad kan der være galt?
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:24 #7
Sådan ser feltet ud i db'en:

password varchar(32) NOT NULL default '',
Avatar billede Slettet bruger
23. juni 2003 - 12:25 #8
$dato = date('d/m-Y - H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$pw = md5($password);
mysql_query("INSERT INTO brugere (nick,password,mail,dato,ip,sidste_aktivitet) VALUES ('$nick','$pw','$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='.$pw;
$recipient = $mail;
$subject = 'Aktivering af profil';
mail($recipient, $subject, $msg);
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:29 #9
Hvorfor er det lige man skal gøre sådan før de bliver ens?

$pw = md5($password);
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:32 #10
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 :(
Avatar billede 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.
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:42 #12
Takker skriv lige som et svar....
Avatar billede Slettet bruger
23. juni 2003 - 12:43 #13
Ok.
Avatar billede mpj86 Nybegynder
23. juni 2003 - 12:46 #14
btw. for at lave det rigtigt sikkert kunne man så ikke lave glemt password sådan?

update_bruger.php?nick=mpj86&oldpass=541c57960bb997942655d14e3b9607f9&newpass=243e61e9410a9f577d2d662c67025ee9

Hvor at så nick og oldpass skulle være i db'en før den laver passwordet om til det der er i newpass?
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