我正在为一个网站创建WebService,其中我必须从user
的email
/name
生成UID
。此过程应仅在用户注册步骤中进行。就像这样,我们有我们的推特唯一ID。我心里有几个问题:
-
这应该是客户端的责任还是 Web 服务的责任?
- 我认为它应该是WebService的。
-
如果 Web 服务负责,那么从
myname@example.com
生成UID
的逻辑应该是什么。- 一种解决方案可能是从电子邮件中提取
myname
并将user_id附加到其最后一个。但对于auto-generated user_id
(MYSQL(,这不是一个解决方案。此外,使用 UID 的整个想法是在浏览器中隐藏 URL 中的 user_id(整数(,因此此解决方案将再次公开user_id。 - 另一种解决方案可能是在
myname
末尾附加一些随机数,如果发生ConstraintViolation
,请尝试使用其他数字。但这只会花费大量时间进行用户注册操作。
- 一种解决方案可能是从电子邮件中提取
处理此要求的理想和有效方法是什么?
这是我的 MySql 表架构:
CREATE TABLE IF NOT EXISTS `user` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`unique_id` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`password` VARCHAR(500) NULL,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`created_on` DATETIME NOT NULL,
`gender` VARCHAR(2) NULL COMMENT 'M - malenF - femalenO - other',
UNIQUE INDEX `unique_id_UNIQUE` (`unique_id` ASC),
UNIQUE INDEX `email_UNIQUE` (`email` ASC),
PRIMARY KEY (`user_id`))
ENGINE = InnoDB;
您可以使用php uniqid函数来创建用户的唯一ID,并将其保存在用户选项卡的列unique_id中。这将是独一无二的 您可以使用以下代码生成一些唯一 ID。
<?php
echo uniqid("username");
?>