关于session的使用补充

更新时间:2018-02-11 19:56:42 附件大小:90.15MB 语言种类:简体中文 所属分类:值得一看 运行平台:Window 投稿作者:小柒生活网 围  观:1716次 获得点赞:0次 评论回复:0次
简要介绍

以前的代码是


session_start();/*开启session*/
	$sessionid = session_id();
	$sqls = "select * from session where session_id='".$sessionid."'";/*查询SESSIONID是否存在*/
	$rows = mysql_query($sqls);
	$result = mysql_fetch_assoc($rows);
if($result['lasttime']!="")
	{
		
		$sqltime = "select * from info";/*获得后台配置的INFO时间*/
		$rowstime = mysql_query($sqltime);
		$resulttime = mysql_fetch_assoc($rowstime);
		$shijian = (time() - $result['lasttime']);/*检测时间是否过期*/
		if($shijian > $resulttime['gctime'])
		{
			echo "<script>alert('登录状态已经过期,请重新登录')</script>";
			echo "<script>location.href='login.html'</script>";
			exit();
			}
	}
	else
	{	//为登录
		echo "你还未登录,请<a href='login.html'>登录</a>";
		exit();
	}


此代码会在设置的session过期时间后提示登录过期
中间不管你有没有操作,都会在session过期事件后结束
要解决这个办法,可以这样写


session_set_cookie_params('1200','/');/*设置过期时间*/
 session_start();

 $sessionid = session_id();
 echo "<script>alert('".$sessionid."')</script>";
 $sqls = "select * from session where session_id='".$sessionid."'";/*查询SESSIONID是否存在*/
	$rows = mysql_query($sqls);
	$result = mysql_fetch_assoc($rows);
if($result['lasttime']!="")
	{
		$sqltime = "select * from info";/*获得后台配置的INFO时间*/
		$rowstime = mysql_query($sqltime);
		$resulttime = mysql_fetch_assoc($rowstime);
		$shijian = (time() - $result['lasttime']);/*检测时间是否过期*/
		if($shijian > $resulttime['gctime'])
		{
			echo "<script>alert('登录状态已经过期,请重新登录')</script>";
			echo "<script>location.href='login.html'</script>";
			exit();
			}else{
		$id = session_id();
		$sql = "insert into `session` (session_id,lasttime)
values('".$id."',unix_timestamp()) on duplicate key update lasttime = unix_timestamp()";
		 mysql_query($sql);
				}
	}
	else
	{	//为登录
		echo "你还未登录,请<a href='login.html'>登录</a>";
		exit();
	}

注意这行语句



insert into `session` (session_id,lasttime)
values('".$id."',unix_timestamp()) on duplicate key update lasttime = unix_timestamp()



$sql = "replace into `session` (session_id,session_content,lasttime)values
('".$id."','".$content."',unix_timestamp())";
/*一定要把session_id作为主键,否则replace这个语句不起作用,他是用逐渐来判断是否存在,
存在则更新,不存在则写入*/
他们两个的区别是第二个会把其他不更新的代码变为空,而第一个则不会


同类推荐
我要评论 0条评论,0条回复
请先登录后再评论
匿名用户
    热门评论
    最新评论
查看更多评论