前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php案例:统计用户在线时长

php案例:统计用户在线时长

作者头像
贵哥的编程之路
发布2022-09-29 12:52:20
2.2K0
发布2022-09-29 12:52:20
举报
文章被收录于专栏:用户7873631的专栏

作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主

文章目录


什么是session?

在专业术语中,Session是指会话控制,是保存在服务器上一种机制,当客户端访问服务器的时候,服务器会把信息以某种形式记录在服务器上,恰恰和Cookie相反。cookie是保存数据在客户端。

问题?

session关闭浏览器后,能自动登录吗? 关了浏览器session当然仍然存在,因为session是储存在服务器端的,而服务器是不可能知道你有没有关掉浏览器。

cookie与session的区别是啥?

session是存储数据在服务器。 cookie是存储数据在客户端上(浏览器端)上,

cookie与session的共同点是啥?

关闭浏览器并不会消失。由过期时间控制的.

什么是会话控制?

简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中 跟踪一个变量,通过这个变量, 系统能识别出相应的用户信息, 根据这个用户信息可以得知用户权限, 从而展示给用户适合于其相应权限的页面内容。 目前最主要的会话跟踪方式有cookie, session。

time_login.php

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
    <title>用户登陆</title>
	<link rel='stylesheet' type='text/css' href='style.css'>
	<style>
		#showTime{
			width:291px;
			border:1px solid #ccc;
			line-height:23px;
			position:absolute;
			left:500px;
			top:48px;
			text-align:center;
		}
	</style>
</head>
<body>

<div id="login">
	<ul>
		<form id="myForm" name="myForm"  method="post" action='login_session.php'>
			<li>
				<input id="login_type" name="login_type" type="hidden"/>
				<tt>
					<label id="log_type" for="email">用&nbsp;&nbsp;&nbsp;户:</label>
				</tt>
				<div>
					<input id="username" name="username" type="text" class="cell" />
				</div>
			</li>
			<li>
				<tt>
					<label for="password">密 码:</label>
				</tt>
				<div>
					<input id="password" name="password" type="password" class="cell" />
				</div>
			</li>
			<li>
				<div>
					<input id="auto_login" name="auto_loginmberme" type="checkbox"/>
					<label for="auto_login">下次自动登录</label>
				</div>
			</li>
			<li>
				<div>
					<input id="sub" type="submit" value='提交'/>
				</div>
			</li>
</form>
</ul>
</div>

</body>
</html>

login_session.php

代码语言:javascript
复制
<?php
session_start();
	function session_login_time() {//登录时间
		if(!isset($_SESSION['start'])&&!isset($_SESSION['result'])){//如果session里面上面都没有的话.isset函数代表是否存在
			$_SESSION['start'] = time();//把当前时间赋值给session数组里面的start
			$_SESSION['result'] = 0;//把0赋值给session数组里面的result
		}
	}
	function session_logout_time() {//退出时间
		if(!isset($_SESSION['end'])){//在点击注销的情况下。如果end不存在
			$_SESSION['end']=time();//把当前时间赋值给session里面的end
			$_SESSION['result']=$_SESSION['end']-$_SESSION['start'];//把退出时的时间减去一开始登录成功的时间(得出一共在线多长时间)
			return $_SESSION['result'];
		}
	}
	function clear_sessions() {//清空session里面的所有数据
		unset($_SESSION['start']);
		unset($_SESSION['end']);
		unset($_SESSION['result']);
	}
	if(!empty($_POST['username'])){
		$name = $_POST['username'];//获取输入的用户名
		$pwd = $_POST['password'];//获取输入的密码
		if($name == 'admin' && $pwd == 'admin'){//如果用户名和密码都等于admin的话.进入if
			session_login_time();//执行session_login_time函数
			echo "<script>alert('登陆成功!');location='login_in_out.php'</script>";
		}else{
			echo "<script>alert('登陆失败!');location='time_login.php'</script>";
		}
	}
	if($_GET['logout']){//有值的话
	?>
	<!doctype>
	<div style='width:300px;line-height:30px;margin:auto;border:1px solid #ccc;text-align:center;color:white;font-size:14px;background:#ccc;'>统计用户在线时长</div>
	</div>
	<div style="width:300px;line-height:30px;margin:auto;border:1px solid #ccc;text-align:center;color:blue;font-size:14px;background:white;">
	<?php
	$re = session_logout_time();//执行退出时的函数就能知道你一共在线多长时间
		echo "注销登陆前您一共在线<b><font color='red'>".($re)."</font></b>秒!";//输出在线多长时间
		clear_sessions();//清空session里面的所有数据(start end result)
	?>
	</div>
	<?php
	}
	?>

login_in_out.php

代码语言:javascript
复制
<?php
echo "登录成功后的页面";
echo "<a href='login_session.php?logout=on'>注销登陆</a>";//如果您选择退出的话.跳转到login_session.php文件里面
?>

效果:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 什么是session?
    • 问题?
      • cookie与session的区别是啥?
        • cookie与session的共同点是啥?
        • 什么是会话控制?
        • time_login.php
        • login_session.php
        • login_in_out.php
        • 效果:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档