hash
Hi,
könntest du mir vieleicht das mit dem hash besse erklären?
statt der email übergibst du eine prüfsumme der email und die user-id
zb aktivieremich.php?user=123&hash=8ca8891ccd348612a54b62366b5ca7fc
in der datenbank steht dann folgendes
user | email | confirmed | hash
-----+--------------------+-----------+---------------------------------
123 | random@example.com | 0 | 8ca8891ccd348612a54b62366b5ca7fc
du setzt dann den confirmed, dessen hash UND benutzerid mit den gegebenen parametern übereinstimmt
die lösung mit der mailadresse ist wie gesagt fehlerhaft
ich melde mich zb für einen newsletter an, bekomm eine bestätigunsmail und bestätige die mail dann mit der mail-adresse?
dh ich registriere mich mit billgates@example.com und kann diese bestätigen, ohne dass mir die mailadresse geschweige denn die domain gehört - dämliche lösung
darum: beim registrieren wird ein hash aus irgendwelchen werten erzeugt - zb aktuelle zeit plus aktuelle haarfarbe von nina hagen plus e-mail-adresse des benutzers - er darf nur nicht reproduzierbar sein, auch wenn der algorithmus bekannt ist - dafür ist eine kombination mit time() oder microtime() oder einer zufallszahl interessant, da es sogut wie unmöglich ist, dass ein potentieller spammer (oder was auch immer), der eine falsche adresse registrieren will exakt den zeitpunkt der hashgenerierung am server in sekunden oder millisekunden
wenn das geschafft ist, erwarte ich von dir, dass du deine benutzereingaben nicht ungeprüft an ein sql-statement übergibst - mysql_query schützt dich zwar prinzipiell vor einfachen injections die aus einer mehrere abfragen machen, aber nicht gegen komplexere dinge - darum: escapen und wie schon erwähnt nicht nachher sondern JETZT