新手小白求教session方面问题
程序员文章站
2022-05-01 21:00:43
...
我想实现的功能是,防止用户重复登录,太高深的方法我不懂,我只会用自己能理解的方法,高手见谅!
首先登录页
这样写有问题 似乎是没有session_start() 就使用$_SESSION["username"] 产生的问题?
如果删掉 }else if(!empty($_SESSION["username"])); 会好一些 但是任有其他问题
下面是登录跳转后的页面
现在的问题是 不管怎么登录 都会提示"掉线了",即时清空缓存也是一样!
如果删掉登录页的 }else if(!empty($_SESSION["username"])); 部分 会正常
但是,同浏览器多开的问题还是存在,不同的浏览器似乎有效!
本人自学小白,高手勿喷
求解!
首先登录页
if(!$username){ $aa= '账号不存在'; }else if($password != $bb){ $aa= '密码错误'; }else if(!empty($_SESSION["username"])){ $aa= '该账号已登录'; }else{ session_start(); $_SESSION["md5"] = md5($time); $_SESSION["username"] = $account; DB::query("UPDATE ".DB::table('abc')." set a='$time' , b=' {$_SESSION["username"]}' , md5='{$_SESSION['md5']}' where name='$account'"); $aa= '成功登陆'; }
这样写有问题 似乎是没有session_start() 就使用$_SESSION["username"] 产生的问题?
如果删掉 }else if(!empty($_SESSION["username"])); 会好一些 但是任有其他问题
下面是登录跳转后的页面
session_start(); $md5 = $_SESSION["md5"]; $username = $_SESSION["username"]; $aa= DB::get_one("SELECT * FROM ".DB::table('abc')." WHERE b='$username' and md5='$md5'"); if(!$aa){ session_destroy(); echo ""; echo "" ; exit () ; }}
现在的问题是 不管怎么登录 都会提示"掉线了",即时清空缓存也是一样!
如果删掉登录页的 }else if(!empty($_SESSION["username"])); 部分 会正常
但是,同浏览器多开的问题还是存在,不同的浏览器似乎有效!
本人自学小白,高手勿喷
求解!
回复讨论(解决方案)
最好贴上后报错的信息,然后如果判断$_SESSION时,如果是原生的话,是要先session_start(),当然判断的时候,最好是isset($_SESSION['xx'])是否存在的,你这问题很乱,查询也要先调试看看查询结果是什么,如果有错,那么看看查询语句最终是什么?,防止重复登录的话,用SESSION的话,只要判断SESSION是否存在,SESSION是否符合,就行了
你这个写得很乱啊
登录页 获取输入的用户名和密码,查询数据是否正确,正确就写入session,然后跳转到登录后的页面
登陆后的页面只要判断是否有该用户的session 数据就行了,若没有,就跳到登录页提示登录
上一篇: PHP实现读取由JavaScript设置的Cookie
下一篇: C#中调用MySQL存储过程的方法
推荐阅读