A user registration class

无人久伴 提交于 2019-12-12 04:45:44

问题


I'm writing this in PHP, but, generally speaking, what methods and properties would a user (registration?) class have? I know I can use MDB2 from PEAR for database abstraction, and one feature I can think of is making sure the username is valid.

$user->validateUserName($username, $regex);

Can anybody think of any more?

Thanks.

Edit:

Username validation would be a class of its own right (Validator class or something)?


回答1:


There shouldn't be a such class at all. Registration is a whole process of receiving data, validating that data and finally, processing validated data if validation succeed. In other words: registration is that part of code which uses some object to solve a given problem.

What will you need?

  1. An object that represents a single user.
  2. An object that takes User object and saves it.
  3. Some validation mechanism (it will use at least several objects).

Let's design an interface. How will we use the code we're going to write?

try {
    $validator = new Validator($_POST);
    $validator->addRules(array(
        'username' => new LengthValidator(array('min' => 3, 'max' => 15)),
        'password' => array(
            new LengthValidator(array('min' => 6))
            new RegexpValidator(array('pattern' => '#...#'))
        ),
        'email'    => array(
            new EmailValidator(),
            new UniqueValidator(....)
         )
    ));

    $data = $validator->validate();

    $userService = new UserService($databaseHandler, $someOtherArguments);

    $user = new User();
    $user->setUsername($data['username']);
    $user->setPassword($data['password']);
    $user->setEmail($data['email']);
    $user->setFirstname($data['firstname']);
    $user->setLastname($data['lastname']);

    $userService->save($user);
} catch (ValidationException $ve) {
   // validation failed
}

That's of course only an example - it can be designed totally different way.




回答2:


Well, you should check if

  • Username is already in use
  • Password is strong enough
  • User's Mail address is valid

You also need methods to

  • create a new account
  • change User's data
  • delete an existing account?
  • allow Users to recover forgotten pws



回答3:


ValidForm, it's a great class structured to handle your forms both client/server-sided. However, no MySQL is passed through the form.



来源:https://stackoverflow.com/questions/4145720/a-user-registration-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!