我正在为课程建立一个简单的登录/注册网站。 (即没有md5,sha等)其中一个参数是不允许新注册的密码在注册时等于之前的3。我是写一个函数,如果是这样的话,返回true。我无法弄清楚如何做到这一点。我的数据库上的主键是user_id(自动递增)。这是一个函数,如果用户名已经存在,则返回true:
function user_exists ($username) {
return (mysql_result(mysql_query("SELECT COUNT(`user_id`)
FROM `users` WHERE `username` = '$username'"), 0) == 1) ? true : false;}
我以为我会从这开始,添加一些代码只回顾前三个用户名
function returns true if password exists database
function password_exists ($password) {
$password = sanitize($password);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) `FROM `users`
WHERE `password` = '$password' AND `user_id <'$user_id' ORDER BY user_id DESC, LIMIT 3"), 0) == 1) ? true : false ;
我是否试图用一个功能做太多事情?即我需要先在一个函数中隔离最后3个记录,然后搜索该集合吗?我应该添加一个按顺序编号条目的列吗?即如果有5个记录1,2,3,4,5和'2'被删除,那么该列将读取1,2,3,4。在我看来,搜索这种方式会更容易。任何帮助非常感谢!感谢
}
答案 0 :(得分:0)
您可以通过嵌套选择表单来执行此操作:
SELECT x FROM (SELECT ...) as y;
您的内部选择(SELECT ...)将返回记录,按日期排序(最近的第一个)并且LIMIT为3.
您的外部选择将从内部选择中选择用户名。
如果&gt;返回0条记录,你知道用户名不好。
答案 1 :(得分:0)
这样做没有意义。
检查整个数据库或根本不检查。
此外,这样的功能将对安全性产生巨大影响,意味着这样的错误可能暗示某人的其他密码。
(如果家庭作业需要它,难怪为什么每个人都讨厌PHP。即使在课堂上,他们教你编写可怕的代码)