用户注册类

发布于 2024-10-01 17:59:17 字数 266 浏览 0 评论 0原文

我是用 PHP 编写的,但是一般来说,用户(注册?)类有哪些方法和属性?我知道我可以使用 PEAR 中的 MDB2 进行数据库抽象,并且我能想到的一项功能是确保用户名有效。

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

还有人能想到更多吗?

谢谢。

编辑

用户名验证本身就是一个类(Validator 类或其他类)?

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)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

枕梦 2024-10-08 17:59:17

好吧,您应该检查

  • 用户名是否已在使用中
  • 密码是否足够强大
  • 用户的邮件地址是否有效

您还需要

  • 创建新帐户
  • 的方法更改用户的数据
  • 删除现有帐户?
  • 允许用户恢复忘记的密码

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
伴我心暖 2024-10-08 17:59:17

根本不应该有这样的班级。注册是接收数据、验证数据以及最后在验证成功时处理验证数据的整个过程。换句话说:注册是使用某个对象来解决给定问题的代码部分。

你需要什么?

  1. 代表单个用户的对象。
  2. 一个接受 User 对象并保存它的对象。
  3. 一些验证机制(它将使用至少几个对象)。

我们来设计一个界面。我们将如何使用我们要编写的代码?

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
}

这当然只是一个例子——它可以以完全不同的方式设计。

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.

青萝楚歌 2024-10-08 17:59:17

ValidForm,它是一个很好的类,可以在客户端/服务器端处理表单。然而,没有MySQL通过表单传递。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文