'Congratulations your account has been created, you can now log in.', SIGNUP_ERROR_USERNAME_TAKEN => 'This username has already been taken.', SIGNUP_ERROR_EMAIL_TAKEN => 'We already have a user registered with this email address.', SIGNUP_ERROR_DB => 'Your account could not be created. Try again later.', ); require_once 'html_form.php'; $form = new Form(uri_self()); $form->addText('username', 'Username (5-20 characters)'); $form->addPassword('password', 'Password (5-20 characters)'); $form->addText('fullname', 'Name', ' '); $form->addText('email', 'Email'); $form->addCheckbox('email_priv', 'Hide my email'); $form->addSubmit('Sign up'); $form->addRule('username', 'range:5:20', 'Enter your username, between 5 and 20 characters.'); $form->addRule('password', 'range:5:20', 'Enter your passeword, between 5 and 20 characters.'); $form->addRule('email', 'email', 'Not a valid email.'); $form->addRule('email', 'required', 'Your email is required.'); $form->addFilter('_ALL_', 'db'); if ($form->valid()) { signup($form, $error_messages); } else { $form->display(); } function signup(&$form, &$error_messages) { global $db, $user; $err = new HTML_Form_Error($error_messages); $processed = $form->getProcessed(); $email_priv = isset($processed['email_priv']) ? "'y'" : "'n'"; $name = isset($processed['fullname']) ? $processed['fullname'] : "''"; $cookie = $GLOBALS['user']->generateCookie(); $sql = "INSERT INTO member " . "(username, password, cookie, registered, name, email, email_priv) VALUES " . "($processed[username], md5($processed[password]), '$cookie', CURRENT_DATE, " . "$name, $processed[email], $email_priv)"; $db->pushErrorHandling(PEAR_ERROR_RETURN); $result = $db->query($sql); if (DB::isError($result)) { if ($result->getCode() == DB_ERROR_ALREADY_EXISTS) { $db->popErrorHandling(); $sql = "SELECT id FROM member WHERE username = $processed[username]"; $result = $db->query($sql); if ( $result->numRows() == 1 ) { $err->addError(SIGNUP_ERROR_USERNAME_TAKEN); } $sql = "SELECT id FROM member WHERE email = $processed[email]"; $result = $db->query($sql); if ( $result->numRows() == 1 ) { $err->addError(SIGNUP_ERROR_EMAIL_TAKEN); } } if ( $err->isError() ) { echo $err->getMessage(); $form->display(); } else { $err->addError(SIGNUP_ERROR_DB); } return ; } if ($db->affectedRows() != 1) { $err->addError(SIGNUP_ERROR_DB); echo $err->getMessage(); die ($db->getMessage()); } else { echo $err->getMessage(); $sql = "SELECT subject, message FROM mail WHERE description='signup' "; list($subject, $message) = $db->getRow($sql, DB_FETCHMODE_ORDERED); $message = str_replace('$name', $form->getValue('fullname'), $message); $message = str_replace('$username', $form->getValue('username'), $message); $message = str_replace('$password', $form->getValue('password'), $message); $message = mail_them($form->getValue('email'), $subject, $message); echo "

$message

"; $user->_checkLogin($processed['username'], $processed['password'], true); if (isset($_SESSION['log_to'])) { echo '

You can now proceed to the ' . "page you were headed to.

"; } } } ?>