我正在创建一个表单,它将捕获所有表单数据并将其存储在数据库中,我想要做的是使用一些表单数据来创建自定义md5用户ID以防止多个条目,我知道这很可能不是最理想的做法,所以如果有更好的方法来创建我可以为每个用户使用的唯一md5 uid,请赐教。
我考虑使用随机数并根据电子邮件和名字检查数据库,但我很想知道是否有更好的方法。
提前Thanx!
答案 0 :(得分:1)
等等......您是否想要使用唯一的MD5来创建用户ID? ...为什么不使用auto_increment整数字段?每次运行INSERT时,它都会增加1,因此始终是唯一的。而且因为它是一个整数,如果你正在对它进行任何搜索,它会快得多。
答案 1 :(得分:1)
您可以让MySQL使用“UNIQUE”为您完成工作。假设你有一个表user_data(user_data_id,名称,文本,内容,日期),并希望名称和文本作为元组独特:
CREATE user_data (
user_data_id INTEGER,
name VARCHAR(50),
text TEXT,
date DATE,
PRIMARY_KEY(user_data_id),
UNIQUE(name,text)
);
答案 2 :(得分:1)
我认为您的意思是希望避免同一个人重复输入。
在使用strtolower()
对其进行规范化并删除空格等之后,您应该检查数据库中输入的电子邮件+名字+姓氏。
除此之外,您无法确定表格中输入数据的人是否已经完成此操作。由于代理和网关,甚至计算机是相同的(共享计算机),您无法安全地依赖ip是相同的。如果你在这两个方面都很咄咄逼人,那么很可能会让很多沮丧的合法用户无法使用你的系统。
您最好的选择是假设您的数据库有重复的条目,然后决定如何处理它们。如果他们在系统上的帐户有一些智能来检查他们是否根据他们的行为重复,则标记未使用的那些。