欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

新手小白求教session方面问题

程序员文章站 2022-05-01 21:00:43
...
我想实现的功能是,防止用户重复登录,太高深的方法我不懂,我只会用自己能理解的方法,高手见谅!

首先登录页
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 数据就行了,若没有,就跳到登录页提示登录