【判断用户登录】PHP这么判断流程是否正确?每次都查询数据库 存COOKIE
【判断用户登录】PHP这样判断流程是否正确?每次都查询数据库 存COOKIE
我自己来做的PHP判断用户是否登录:
【流程】
1 先判断有没有cookie('uid') && cookie('uid') 如果没有跳出循环检测
2 如果有,连接数据库查询该uid对应的记录,如果没有改记录则跳出循环检测并且注销所有用户cookie
3 如果有,检测cookie('upwd')== md5($rs[pwd].cookie('salt')),如果不相等,提示密码发生修改需要重新登录
4 如果相等,检测cookie('email') == md5($rs[email]),如果不相等,提示邮箱发生更改,需要重新登录
5 如果相等 => 正确,该用户是当前登录用户。
但是!
【问题】
1 每次都要连接数据库,减少数据库查询是用户优化的关键,如果每次都去数据库查询,真的会影响性能。
2 如何优化才最好,这个登录判断流程是否有误。
【另外一种思路】
1 存放到SESSION,保存$uid,$uname,$lastactive(最后响应时间)到session中。
2 如果有session('uid') && session('uname') 检测time()-$lastactive > 3600 ,那么连接数据库查询(如上面的cookie判断),否则直接用(session存放位置php.ini默认配置的位置)
【问题】
1 如果存放到SESSION中,那么高并发的情况下,是否会受影响?
------解决方案--------------------
当采用第二种方案时你顾虑高并发的情况
那么采用第一种方案就可不考虑高并发的情况了吗?
在你的第一方案中,用户的口令和Email都放在cookie中,这些数据总是在网络中跑来跑去,你认为很安全吗?
数据库应该是广义的
虽然基于文件系统的关系型数据库(SQL)速度可能稍有逊色,但他们都提供有基于内存的内存表
何况数据库还有另一分支:基于内存的noSQL
所以数据库查询带来的额外开销是可以忽略不计的
判断用户是否登录的流程是:
如果 cookie('uid') 不存在 转要求登录处理
否则查询数据库,检查该 uid 上次登录地点是否与本次相同:
相同则确认
不同则发出提示,有条件转要求登录处理
------解决方案--------------------
我的做法是这样的。
1.用户login,连接数据库判断是否成功,如成功后把用户id,用户name等需要用到判断的信息,写入session和cookies,cookies设置一个时间(例如1天~2周,这个登入时给用户自己选择),另外,我是把存入cookies的数据做一个json_encode,然后加密处理。
例如 {"uid":1,"username":"fdipzone"} 加密成可逆的字符串。
2.当用户访问时,会有以下几种情况
1.判断session是否存在->是->通过
2.判断session是否存在->否->判断cookies是否存在->是->判断cookies解密是否成功->是->把cookies写入session->通过
3.判断session是否存在->否->判断cookies是否存在->是->判断cookies解密是否成功->否->跳转到login页面
4.判断session是否存在->否->判断cookies是否存在->否->跳转到login页面
------解决方案--------------------
更正一下。
当session过期,把cookies写入session时。在这个位置会连数据库判断用户是否被禁止登入。
session有自己的过期时间,所以,每次连数据库检查的时间间隔就是session的生命周期。
判断session是否存在->否->判断cookies是否存在->是->判断cookies解密是否成功->是->检查是否禁止登入->否->把cookies写入session->通过
判断session是否存在->否->判断cookies是否存在->是->判断cookies解密是否成功->是->检查是否禁止登入->是->清除用户cookies->跳转到通知页面

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

螢幕亮度是使用現代計算設備不可或缺的一部分,尤其是當您長時間注視螢幕時。它可以幫助您減輕眼睛疲勞,提高易讀性,並輕鬆有效地查看內容。但是,根據您的設置,有時很難管理亮度,尤其是在具有新UI更改的Windows11上。如果您在調整亮度時遇到問題,以下是在Windows11上管理亮度的所有方法。如何在Windows11上變更亮度[10種方式解釋]單一顯示器使用者可以使用下列方法在Windows11上調整亮度。這包括使用單一顯示器的桌上型電腦系統以及筆記型電腦。讓我們開始吧。方法1:使用操作中心操作中心是訪問

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

在iOS17中,Apple為其行動作業系統引入了幾項新的隱私和安全功能,其中之一是能夠要求對Safari中的隱私瀏覽標籤進行二次身份驗證。以下是它的工作原理以及如何將其關閉。在執行iOS17或iPadOS17的iPhone或iPad上,如果您在Safari瀏覽器中開啟了任何「無痕瀏覽」標籤頁,然後退出會話或App,Apple的瀏覽器現在需要面容ID/觸控ID認證或密碼才能再次訪問它們。換句話說,如果有人在解鎖您的iPhone或iPad時拿到了它,他們仍然無法在不知道您的密碼的情況下查看您的隱私

著名的激活腳本MAS2.2版本重新支援數位激活,方法源自@asdcorp及團隊,MAS作者稱之為HWID2。 https://github.com/massgravel/Microsoft-Activation-Scripts下載gatherosstate.exe(非原版,已改造),帶參數運行它,生成門票GenuineTicket.xml。先看一下原先的方法:gatherosstate.exePfn=xxxxxxx;DownlevelGenuineState=1再對比一下最新方法:gatheros

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

PHPSession跨域問題的解決方法在前後端分離的開發中,跨域請求已成為常態。在處理跨域問題時,我們通常會涉及session的使用和管理。然而,由於瀏覽器的同源策略限制,跨域情況下預設無法共享session。為了解決這個問題,我們需要採用一些技巧和方法來實現session的跨域共享。一、使用cookie跨域共享session最常
