PHP 如何做登录功能
不少做网站的朋友,刚开始都会卡在“怎么让用户登录”这个小问题上——毕竟如果用户没法登录,网站的个性化内容、用户专属功能都没法用。用PHP做登录功能其实没那么复杂,只要跟着步骤一步步来,用生活化的例子就能轻松搞懂。
第一步:先准备好“登记本”和“核对表”
做登录的核心,就是要先把用户的信息存起来,再验证输入的信息对不对。这里说的“登记本”就是数据库,“核对表”就是PHP里的验证逻辑。

举个例子,你开了一家小咖啡店,会把会员的手机号和暗号(密码)记在一个小本子上,这就是用户信息存储;顾客来买咖啡时,报手机号说暗号,你要核对和本子上的是不是一样,这就是登录验证。
具体到PHP里,要先建个简单的数据库表,比如叫users,至少存两个东西:username(用户名,比如手机号或者昵称)和password(加密后的密码,不能直接存明文,就像你不会把顾客的暗号直接写在本子上,而是换个只有你能看懂的编码)。这里可以用PHP自带的password_hash()函数加密密码,比如用户注册时,把密码加密后存进数据库,这样就算数据库被人拿到了,也没法直接看到真实密码。
第二步:做一个能填信息的“小窗口”
接下来要做个登录页面,也就是HTML表单,让用户能输入用户名和密码。这个表单要简单,就像咖啡店门口的登记台,让顾客把自己的信息填进去。
举个例子,表单里有两个输入框:一个让用户写用户名,一个写密码,还有个“提交”按钮。要注意,密码输入框要用type="password",这样用户输入的内容会变成圆点,就像顾客报暗号时不想被旁人听见一样。
比如代码可以这么写:
`html
<form action="login.php" method="post">
<input type="text" name="username" placeholder="请输入用户名">
<input type="password" name="password" placeholder="请输入密码">
<button type="submit">登录</button>
</form>
`
这里的action="login.php"就是说,用户点提交后,信息会传给login.php文件处理,就像顾客填完登记表后,把纸递给吧台的收银员。
第三步:核对信息,给用户“入场凭证”
用户把信息提交到login.php后,要做的就是核对和数据库里的信息对不对。这就像收银员拿着顾客填的纸,和小本子上的登记信息比对——对了,就给顾客一张“入场券”(也就是会话),错了就说“暗号不对,请再试试”。
首先,要连接数据库,用PHP的mysqli或者PDO都可以,就像收银员要先拿到自己的小本子才能核对。然后取出用户输入的用户名,去数据库里找对应的加密密码,再用password_verify()函数把用户输入的密码和数据库里的加密密码比对,就像把顾客说的暗号和本子上的编码比对。
如果比对成功,就要启动会话,把用户名存在会话里。会话就像临时入场券,用户只要没关浏览器,就能带着这张券进网站的专属页面,不用每次都重新登录;如果比对失败,就显示“用户名或密码错误”,就像收银员说“你报的暗号不对哦”。
第四步:保护好“入场券”,防止别人蹭进
最后要注意一些小细节,就像咖啡店要防止有人偷拿顾客的入场券混进去。比如,提交表单时要做简单的防重复提交,防止有人刷请求;还要用session_start()开启会话,并且设置会话的有效期,比如用户30分钟没操作就自动退出,避免别人用了临时会话。
另外,不要直接把用户输入的内容当SQL语句用,不然会被人钻空子(也就是“SQL注入”),就像咖啡店不要让顾客随便改自己的登记规则,不然可能有人乱填信息混进来。
按照这四步做下来,一个简单的PHP登录功能就完成了,不管是做个人博客还是小型网站,都能快速用上。