summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlezvous.ca>2008-06-22 12:32:41 -0400
committerEvan Prodromou <evan@controlezvous.ca>2008-06-22 12:32:41 -0400
commit8a170ed8fd014cb7640b04c535a359b3275681fd (patch)
tree9dcfbd67db4df4d5930d92b8d13d60002a2ba37d
parent1906237ddc5c74e385dd6c722457dfc819937114 (diff)
special function for generating confirmation codes
darcs-hash:20080622163241-34904-199b3654328d78c0b9fe2fa85a3ecc1ab0b1262a.gz
-rw-r--r--actions/profilesettings.php2
-rw-r--r--actions/register.php2
-rw-r--r--lib/util.php15
3 files changed, 17 insertions, 2 deletions
diff --git a/actions/profilesettings.php b/actions/profilesettings.php
index c14a3f640..95f625de9 100644
--- a/actions/profilesettings.php
+++ b/actions/profilesettings.php
@@ -140,7 +140,7 @@ class ProfilesettingsAction extends SettingsAction {
$confirm = new Confirm_address();
- $confirm->code = common_good_rand(16);
+ $confirm->code = common_confirmation_code(128);
$confirm->user_id = $user->id;
$confirm->address = $email;
$confirm->address_type = 'email';
diff --git a/actions/register.php b/actions/register.php
index 862ca2a78..31c8fea70 100644
--- a/actions/register.php
+++ b/actions/register.php
@@ -121,7 +121,7 @@ class RegisterAction extends Action {
if ($email) {
$confirm = new Confirm_address();
- $confirm->code = common_good_rand(16);
+ $confirm->code = common_confirmation_code(128);
$confirm->user_id = $user->id;
$confirm->address = $email;
$confirm->address_type = 'email';
diff --git a/lib/util.php b/lib/util.php
index 49349a72f..18043e867 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -927,3 +927,18 @@ function common_notice_uri(&$notice) {
return common_local_url('shownotice',
array('notice' => $notice->id));
}
+
+# 36 alphanums - lookalikes (0, O, 1, I) = 32 chars = 5 bits
+
+define('CODECHARS', '23456789ABCDEFGHJKLMNPQRSTUVWXYZ');
+
+function common_confirmation_code($bits) {
+ $chars = ceil($bits/5);
+ $code = '';
+ for ($i = 0; $i < $chars; $i++) {
+ # XXX: convert to string and back
+ $num = hexdec(common_good_rand(1));
+ $code .= CODECHARS[$num%32];
+ }
+ return $code;
+}