* * This file is part of e-DoKo. * * e-DoKo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * e-DoKo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with e-DoKo. If not, see . * */ /* make sure that we are not called from outside the scripts, * use a variable defined in config.php to check this */ if(!isset($HOST)) exit; /* new user wants to register */ if(myisset('Rfullname','Remail','Rtimezone') ) { global $HOST,$INDEX; /* is this name already in use/ */ $ok=1; if(DB_get_userid('name',$_REQUEST['Rfullname'])) { echo _('Please chose another name').'
'; $ok=0; } /* check if email address is already used */ if(DB_get_userid('email',$_REQUEST['Remail'])) { echo _('This email address is already used?!').'
'; $ok=0; } /* need either openid or password */ if(!myisset('Rpassword') && !myisset('Ropenid')) { echo _('I need either a Password or an Openid url.').'
'; $ok=0; } /* check for password length */ if(myisset('Rpassword') && strlen(trim($_REQUEST['Rpassword']))==0 ) { echo _('Password cannot be empty!').'
'; $ok=0; } /* check against robots */ $robots=0; /* at least one anti-robot question needs to be answered */ if(myisset('Robotproof0')) { if($_REQUEST['Robotproof0']!=42) $ok=0; else $robot=1; } else if(myisset('Robotproof1')) { if($_REQUEST['Robotproof1']!=35) $ok=0; else $robot=1; } else if(myisset('Robotproof2')) { if($_REQUEST['Robotproof2']!=28) $ok=0; else $robot=1; } else if(myisset('Robotproof3')) { if($_REQUEST['Robotproof3']!=21) $ok=0; else $robot=1; } else if(myisset('Robotproof4')) { if($_REQUEST['Robotproof4']!=14) $ok=0; else $robot=1; } if($robot==0) { echo _('You answered the math question wrong.').'
'."\n"; $ok=0; } /* everything ok, go ahead and create user */ if($ok) { if(myisset('Rpassword')) { // create a password hash using the crypt function, need php 5.3 for this // create a random salt $salt = substr(str_replace('+', '.', base64_encode(sha1(microtime(true), true))), 0, 22); // hash incoming password using 12 rounds of blowfish $hash = crypt($_REQUEST['Rpassword'], '$2y$12$' . $salt); if(strlen($hash)>13) { $r=DB_query('INSERT INTO User VALUES(NULL,'.DB_quote_smart($_REQUEST['Rfullname']). ','.DB_quote_smart($_REQUEST['Remail']). ','.DB_quote_smart($hash). ','.DB_quote_smart($_REQUEST['Rtimezone']).',NULL,NULL)'); } else /* hash function didn't work */ $r=0; } else if(myisset('Ropenid')) { $password = $_REQUEST['Rfullname'].preg_replace('/([ ])/e', 'chr(rand(33,122))', ' '); $r=DB_query('INSERT INTO User VALUES(NULL,'.DB_quote_smart($_REQUEST['Rfullname']). ','.DB_quote_smart($_REQUEST['Remail']). ','.DB_quote_smart(md5($password)). ','.DB_quote_smart($_REQUEST['Rtimezone']).',NULL,NULL)'); if($r) { include_once('openid.php'); $myid = DB_get_userid('email',$_REQUEST['Remail']); DB_AttachOpenID($_REQUEST['Ropenid'], $myid); } } else { echo 'Error during registration, please contact '.$ADMIN_NAME.' at '.$ADMIN_EMAIL; } if($r) { /* Set session, so that new user doesn't need to log in */ $myname = DB_get_name('email',$_REQUEST['Remail']); $_SESSION['name'] = $myname; echo ' Welcome to e-DoKo, you are now registered, please visit the'. ' homepage to continue.'; } else echo " Something went wrong, couldn't add you to the database, please contact $ADMIN_NAME at $ADMIN_EMAIL."; } else { echo '
Could not register you. Please try again!
'."\n"; } } else { echo "Test test test... hmm, this page shouldn't really be here, should it? Go back here :)
\n"; } ?>