当前位置:Gxlcms > PHP教程 > 新手小白求教session方面问题

新手小白求教session方面问题

时间:2021-07-01 10:21:17 帮助过:7人阅读

我想实现的功能是,防止用户重复登录,太高深的方法我不懂,我只会用自己能理解的方法,高手见谅!

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

人气教程排行