会话管理简介

Cookie:

  • cookie常用于识别用户。
  • cookie 是服务器留在用户计算机中的小文件,每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。
  • 通过PHP能够创建并取回cookie的值。
  • cookie只能读取所在域,单一域不能超过20个cookie,每个cookie文件长度上限位4k字节,浏览器最多储存300个cookie。

Session:

  • PHP中的session变量用于存储有关用户会话的信息,或更改用户会话的设置。
  • Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
  • Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

结合Cookie和Session

  • 使用Cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。
  • Session技术是一种将会话状态保存在服务器端的技术 ,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病历档案的结合方式 。
  • 客户端需要接收、记忆和回送 Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号。

会话管理实践

本部分代码已经上传到了git中,点我进入

1.建立一个利用cookie统计登录次数的页面session.html进行简单的测试:



2.实现会话管理部分的核心代码

  • 在logIn.php中
if(!isset($_COOKIE['userid']))//判断用户是否已经设置cookie,如果未设置$_COOKIE['userid']执行if下的代码。
{ }
else//如果用户已经登录,则执行else下的代码。
{ }
  • 在logOut.php中
<?php
if(isset($_COOKIE['userid'])){
//将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
setcookie('userid','',time()-3600);
setcookie('username','',time()-3600);
}
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>

3.通过使用cookie保存信息,实现登录页面不需再次登陆的功能,涉及到的代码已经上传git,点我进入

4.这个时候关闭浏览器,再次进入的时候也会出现已经登陆成功的界面,如果想要退出登录,点击log out即可。

登陆发帖功能

本部分代码已经上传到了git中,点我进入

1.这一部分采用了写入文件和读取文件从而实现发帖的方式,核心代码有

(1)将输入的帖子标题和内容写入文件保存

file_put_contents('data.txt',"title:".$title.",content:".$content."\n", FILE_APPEND);

(2)将文件中的数据进行读取,并将/n替换为换行符<br>

$content = file_get_contents("data.txt");
echo str_replace("\n", "<br>", $content);

(3)在loged.php界面添加一个超链接到test.html界面,即可将之前的登录、会话管理和发帖功能连接起来

echo '<a href="test.html">start a new post!</a>';

2.实现的效果如下

  • 登录成功

  • 点击start a new post发帖,进入如下界面

  • 提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录



20145212 罗天晨 WEB登陆发贴及会话管理功能的实现的更多相关文章

  1. 20145212罗天晨 WEB基础实践

    实验问题回答 1.什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等 表单 ...

  2. 20145212 罗天晨 Web安全基础实践

    一.实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据 ...

  3. 20145212罗天晨 逆向及Bof基础实践

    20145212罗天晨<网络对抗>第1周学习总结--逆向及Bof基础实践 逆向及Bof基础实践 一.实践目标 1.运行原本不可访问的代码片段 2.强行修改程序执行流 3.以及注入运行任意代 ...

  4. java web Servlet 学习笔记 -3 会话管理技术

     Cookie和HttpSession 什么是会话: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 每个用户在使用浏览器与服务器进行会话的过 ...

  5. 在web中使用shiro(会话管理,登出,shiro标签库的使用)

    在shiro的主配置文件中配置,登出的请求经过的过滤器就可以了,在shiro的过滤器中有一个名称为logout的过滤 器专门为我们处理登出请求: 一.shiro会话管理器 shiro中也提供了类似于w ...

  6. 20145212 罗天晨 MSF基础应用

    一.对exploit,payload,encode的理解 exploit是利用系统漏洞,相当于一个动态的过程. payload是攻击载荷,用于实现对漏洞的攻击,是实现漏洞攻击最核心的代码. encod ...

  7. 20145212 罗天晨 《网络对抗》Exp3 Advanced 恶意代码伪装技术实践

    恶意代码伪装技术实践 木马化正常软件. 啊哈--原本以为很复杂--然后我看了一下蔡野同学的博客,发现原理竟然如此简单-- 对原先生成病毒的代码稍作修改: 于是--把生成的后门软件改成骗人的名字:这里改 ...

  8. 20145212罗天晨 注入shellcode实验及Retuen-to-libc实验

    注入shellcode实验 实验步骤 一.准备一段shellcode 二.设置环境 Bof攻击防御技术 1.从防止注入的角度来看:在编译时,编译器在每次函数调用前后都加入一定的代码,用来设置和检测堆栈 ...

  9. 我的第一个python web开发框架(38)——管理员管理功能

    后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了. 我们先看看界面效果(也可以看着数据字 ...

随机推荐

  1. vue中定时器的使用方式

    就这么搞定 no no no  离开页面的时候还必须清楚定时器

  2. dubbo.provider和dubbo.consumer配置

    Configure service provider <?xml version="1.0" encoding="UTF-8"?> <bean ...

  3. 巧用CurrentThread.Name来统一标识日志记录(续)

    ▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...

  4. 浅析Web API中FromBody属性

    比较如下两段代码及测试结果: public class ValuesController : ApiController { // POST api/<controller> public ...

  5. SpringMVC注解式开发之接收请求参数

    逐个接收(涉及注解@RequestParam) index.jsp的name必须和后端的名字一致,第一种才可以实现. 以对象形式整合接收 域属性参数的接收 数组或集合参数的接收 restfull风格传 ...

  6. websocket服务器握手协议

    测试网页代码如下 <!DOCTYPE html> <html> <head> <title>测试 websocket 世界最简单案例</title ...

  7. html5-微格式-时间的格式

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. 开源IOT平台

    用于IoT应用程序开发的10大开源软件: 1. DeviceHive DeviceHive基于AllJoyn的Data Art设备,同时也是AllSeen的联盟成员.这一款免费开源机器和机器通信(M2 ...

  9. 从零开始学习cocoStudio(1)--cocoStudio是什么?

    一.cocoStudio是什么? CocoStudio是一套专业的永久免费的游戏开发工具集,帮助开发者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作,CocoStudio包含了游戏开 ...

  10. python range函数

    这个函数很简单,就不写例子了,看看语法,拿来即用 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数 ...