Source for file register.php

Documentation is available at register.php

  1. <?php
  2. /**
  3. * Registeration Script
  4. *
  5. * Validates the user information and registers new users
  6. * in the database.
  7. * @package Phone2Dev
  8. * @author Stanislav Miroshnikov
  9. */
  10. ?>
  11. <html>
  12. <head>
  13. <title>Phone2Dev Registration</title>
  14. </head>
  15. <body>
  16. <h1>Phone2Dev Registration</h1>
  17. <?php
  18. // create a self validating registration form
  19. /**
  20. * Requires PEAR HTML QuickForm package
  21. */
  22. require_once 'HTML/QuickForm.php';
  23. $form =& new HTML_QuickForm();
  24. $form->addElement('header','userInfo','User information');
  25.  
  26. // first name
  27. $form->addElement('text', 'firstName', 'First name: ');
  28. // "required" rule
  29. $form->addRule('firstName','Please enter your first name.', 'required');
  30. // "maxlength" rule
  31. $form->addRule('firstName'
  32. ,'First name longer than 10 letters in not accepted.',
  33. 'maxlength',10);
  34. // "lettersonly" rule
  35. $form->addRule('firstName'
  36. ,'Your first name can contain only letters.', 'lettersonly');
  37.  
  38. // last name
  39. $form->addElement('text', 'lastName', 'Last name: ');
  40. // "required" rule
  41. $form->addRule('lastName','Please enter your last name.', 'required');
  42. // "maxlength" rule
  43. $form->addRule('lastName'
  44. ,'First name longer than 20 letters is not accepted.',
  45. 'maxlength',20);
  46. // "lettersonly" rule
  47. $form->addRule('lastName'
  48. ,'Please enter only letters for you last name.', 'lettersonly');
  49.  
  50. // sip address
  51. $form->addElement('text', 'address', 'SIP address: sip: ');
  52. // "required" rule
  53. $form->addRule('address','Enter your SIP address.', 'required');
  54. // "maxlength" rule
  55. $form->addRule('address'
  56. ,'First name longer than 60 letters is not accepted.',
  57. 'maxlength',60);
  58. // "email" rule
  59. $form->addRule('address',
  60. 'Please enter a valid sip address e.g. john@server.com'
  61. , 'email');
  62.  
  63. // server
  64. $form->addElement('text', 'server', 'SIP server: ');
  65. // "required" rule
  66. $form->addRule('server','Please enter your server\'s address.', 'required');
  67. // "maxlength" rule
  68. $form->addRule('server'
  69. ,'Please enter a server name not longer than 30 letters.',
  70. 'maxlength', 30);
  71. // "regex" rule
  72. $form->addRule('server'
  73. ,'Please enter a valid domain name for your server',
  74. 'regex'
  75. ,"/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)*[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?$/");
  76.  
  77. $form->addElement('header','voiceLogin','Voice login');
  78.  
  79. // phone
  80. $form->addElement('text', 'phone', 'Phone number: ');
  81. // "required" rule
  82. $form->addRule('phone','Please enter your phone number.', 'required');
  83. // "maxlength" rule
  84. $form->addRule('phone'
  85. ,'Please enter a valid phone number e.g. 2125558888.',
  86. 'maxlength', 10);
  87. // pins
  88. $form->addElement('password','pin','4 digit pin:');
  89. // "required" rule
  90. $form->addRule('pin','Please enter your pin number.', 'required');
  91. // "maxlength" rule
  92. $form->addRule('pin'
  93. ,'Please enter a pin that is 4 digits long.',
  94. 'rangelength', array(4, 4));
  95. // "regex" rule
  96. $form->addRule('pin','Please enter only digits.',
  97. 'regex', "/[0-9]+/");
  98.  
  99. $form->addElement('password','pin2','Pin (again):');
  100. // "required" rule
  101. $form->addRule('pin2','Please enter your pin number.', 'required');
  102. $form->addRule(array('pin','pin2'),
  103. "Pin numbers don't match!",'compare');
  104.  
  105. $form->addElement('header','webLogin','Web login');
  106.  
  107. // username
  108. $form->addElement('text', 'username', 'Username: ');
  109. // "required" rule
  110. $form->addRule('username','Please enter your username.', 'required');
  111. // "maxlength" rule
  112. $form->addRule('username'
  113. ,'Please enter a username between 3 and 30 characters.',
  114. 'rangelength',array(3, 30));
  115. // "alphanumeric" rule
  116. $form->addRule('username'
  117. ,'Your username can contain only letters and numbers.'
  118. , 'alphanumeric');
  119.  
  120. // passwords
  121. $form->addElement('password','password','Password:');
  122. // "required" rule
  123. $form->addRule('password','Please enter your password.', 'required');
  124. // "maxlength" rule
  125. $form->addRule('password'
  126. ,'Please enter a password between 6 and 12 characters.',
  127. 'rangelength', array(6, 12));
  128. // "alphanumeric" rule
  129. $form->addRule('password'
  130. ,'Your password can contain only letters and numbers.'
  131. , 'alphanumeric');
  132. $form->addElement('password','password2','Password (again):');
  133. // "required" rule
  134. $form->addRule('password2','Please re-enter your password.', 'required');
  135. $form->addRule(array('password','password2'),
  136. "Passwords don't match!",'compare');
  137.  
  138. $form->addElement('submit', 'register', 'Register');
  139.  
  140. $form->applyFilter('__ALL__', 'trim');
  141. $form->addFormRule('unique_validate');
  142.  
  143. if ($form->validate()) {
  144. // If the form validates, freeze and process the data
  145. $form->freeze();
  146. $form->process('register');
  147. } else {
  148. $form->display();
  149. }
  150.  
  151. /**
  152. * Register the user in the database using the validated data
  153. * @param fields associative array containing the fields of form
  154. */
  155. function register($fields) {
  156. /**
  157. * Requires Phone2Dev class to access the database
  158. */
  159. require_once("phone2dev.php");
  160. $objP2D =& new Phone2Dev();
  161. $objP2D->dbConnect();
  162. $objP2D->registerUser($fields['firstName'],
  163. $fields['lastName'],
  164. $fields['username'],
  165. $fields['password'],
  166. $fields['phone'],
  167. $fields['pin'],
  168. $fields['server'],
  169. $fields['address']);
  170. $objP2D->dbDisconnect();
  171. print "<h3>Success.</h3>";
  172. }
  173.  
  174. /**
  175. * Verifies the uniqueness of the username and phone number
  176. * @param fields associative array containing the fields of form
  177. * @returns true if the username and phone number are valid, else
  178. * it returns an associative array of error messages
  179. */
  180. function unique_validate ($fields) {
  181. // Set up array to store any errors
  182. $errors = array();
  183. /**
  184. * Requires Phone2Dev class to access the database
  185. */
  186. require_once("phone2dev.php");
  187. $objP2D =& new Phone2Dev();
  188. $objP2D->dbConnect();
  189. //validation check for the user name
  190. if (preg_match('/^[a-zA-Z0-9]{3, 30}$/', $fields['username'])
  191. && $objP2D->userExists($fields['username'])) {
  192. $errors['username'] =
  193. "The username that you have entered is taken.";
  194. }
  195. if (preg_match('/^[0-9]{10, 10}$/', $fields['phone'])
  196. && $objP2D->phoneExists($fields['phone'])) {
  197. $errors['phone'] =
  198. "The phone number that you have entered is already registered.";
  199. }
  200. $objP2D->dbDisconnect();
  201. //Return the errors if we have any, or TRUE if not
  202. if (empty($errors)) {
  203. return true;
  204. }
  205. else {
  206. return $errors;
  207. }
  208. }
  209. ?>
  210. <p> Return to Phone2Dev <a href="login.php">login</a>.</p>
  211. </body>
  212. </html>

Documentation generated on Tue, 4 Jan 2005 13:48:08 -0500 by phpDocumentor 1.3.0RC3