5月21 回话控制SESSION COOKIE
百科
HTTP普及(无状态性)
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
一:SESSION的定义及特点
定义:
Session,在计算机中,尤其是在网络应用中,称为“会话”。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。
具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。(摘自百度百科)
特点:
1.存储在服务端的(服务器上),
2每个人存一份,
3可以存储任意类型的数据,
4默认的过期时间15分钟
会加重服务端的服务开销,但是安全性高
用法及注意事项
无论什么时候用到SESSION时都需要在php的最顶端开启才可以使用:session_start();
eg:
<?php
session_start();//开启session
$_SESSION["uid"] = "zhangsan";//写入session
echo $_SESSION["uid"];//获取session数据
?>
代码中的实例:jk.php
- <?php
- session_start();//开启SESSION要写在php代码的最顶端
- $_SESSION["uid"] = "张三";//写入SESSION
- echo $_SESSION["uid"];
- ?>
- <a href="jk1.php">跳转</a>
跳转页面:jk1.php
- <?php
- session_start();
- echo $_SESSION["uid"];//不关浏览器页面时就不会报错,
- ?>
实施跳转时候能获取到第一个页面存入的zhangsan,但是直接点开第二个时候会报错,但是只要有浏览器的页面开着再去浏览第二个时会取到
SESSION的案例应用
1.登录界面显示要求:
登录页面:
- <!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=utf-8" />
- <title>登录</title>
- </head>
- <body>
- <form action="login3chuli.php" method="post">
- <div>用户名:<input type="text" name="uid" /></div>
- <div>密码:<input type="text" name="pwd" /></div>
- <div>登录:<input type="submit" value="登录" /></div>
- </form>
- </body>
- </html>
登录处理页面:
- <?php
- session_start();
- include("../DBDA.php");
- $db = new DBDA();
- $uid = $_POST["uid"];
- $pwd = $_POST["pwd"];
- $sql = "select count(*) from Users where Uid = '{$uid}' and Pwd = '{$pwd}'";
- $r = $db->StrQuery($sql);//登录成功返回1
- if($r==1)
- {
- $_SESSION["uid"] = $uid;
- header("location:main3.php");
- }
- else
- {
- header("location:login3.php");
- }
主页面:主要是返回用户者的信息:特别注意安全性,因此会加判断
- <!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=utf-8" />
- <title>登录返回用户名</title>
- </head>
- <body>
- <?php
- session_start();
- //直接输出虽然可以看到,但是也会有告诉直接登录主界面查看信息
- //要加个判断
- if(empty($_SESSION["uid"]))
- {
- header("location:login3.php");
- }
- echo $_SESSION["uid"];
- ?>
- </body>
- </html>
2.添加购物车案例
显示水果所有的信息:showlist4.php
- <!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=utf-8" />
- <title>显示水果的所有信息</title>
- </head>
- <body>
- <table width="100%" border="1" cellpadding="0" cellspacing="0">
- <tr>
- <td>水果名称</td>
- <td>水果价格</td>
- <td>水果产地</td>
- <td>水果库存</td>
- <td>操作</td>
- </tr>
- <?php
- include("../DBDA.php");
- $db = new DBDA();
- $sql = "select * from fruit";
- $attr = $db->Query($sql);
- foreach($attr as $v)
- {
- echo "<tr>
- <td>{$v[1]}</td>
- <td>{$v[2]}</td>
- <td>{$v[3]}</td>
- <td>{$v[4]}</td>
- <td><a href='addgwc4.php?code={$v[0]}'>加入购物车</a></td>
- </tr>";
- }
- ?>
- </table>
- <a href="gouwuche4.php">查看购物车</a>
- </body>
- </html>
购物车详细信息内容列表:gouwuche4.php
- <!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=utf-8" />
- <title>购物车详细信息</title>
- </head>
- <body>
- <table width="100%" border="1" cellpadding="0" cellspacing="0">
- <tr>
- <td>水果名称</td>
- <td>水果价格</td>
- <td>数量</td>
- </tr>
- <?php
- session_start();
- include("../DBDA.php");
- $db = new DBDA();
- $attr = $_SESSION["sg"];
- foreach($attr as $v)
- {
- $sql = "select Name,Price from fruit where Ids = '{$v[0]}'";
- $arr = $db->Query($sql);
- echo "<tr>
- <td>{$arr[0][0]}</td>
- <td>{$arr[0][1]}</td>
- <td>{$v[1]}</td>
- </tr>";
- }
- ?>
- </table>
- </body>
- </html>
添加购物车处理:addgwc4.php
- <?php
- session_start();
- $code = $_GET["code"];
- //如果是第一次点击的时候session里面没有值直接将数组的值传过去
- if(empty($_SESSION["sg"]))
- {
- $attr = array(array($code,1));
- $_SESSION["sg"] = $attr;
- }
- else
- {
- //第n次点击 n!=1
- $attr = $_SESSION["sg"];//将session中的值取出交给数组
- //但是也分情况,当水果存在或水果不存在
- //判断水果是否存在,写方法的
- if(iscunzai($code))//点击同样的
- {
- foreach($attr as $k=>$v)
- {
- if($v[0]==$code)//判断水果的代号$v[0]是否等于传过去的code
- {
- $attr[$k][1] = $v[1]+1;//$v[1]是其数量
- }
- }
- $_SESSION["sg"] = $attr;
- }
- else
- {
- $arr = array($code,1);
- array_push($attr,$arr);
- $_SESSION["sg"] = $attr;
- }
- }
- function iscunzai($c)//需要的是code的值进行判断
- {
- $attr = $_SESSION["sg"];
- $b = false;//定义bool型的变量
- foreach($attr as $v)
- {
- $b = $b || in_array($c,$v);
- }
- return $b;
- }
- header("location:showlist4.php");
运行结果:
二:COOKIE的定义及特点
定义:
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦阁下从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 cookie。
特点:
1存储在客户端,
2每个人存一份,
3只能存储字符串,
4默认永不过期的
因此相对于SESSION来说相对安全性要低
用法:不会在当前页面查看数据
<?Php
setcookie("uid","zhangsan");//设置cookie
echo $_COOKIE["uid"];//当前会延迟取值的时间,第一次刷新失败,后几次是好的
?>
代码中实例操作:
- <?php
- //setcookie("uid","zhangsan");//设置cookie
- //echo $_COOKIE["uid"];//会延迟取值的时间,第一次刷新失败,后几次是好的
- setcookie("uid","zhangsan");//其他页面可以取到
- ?>
- <a href="jk1.php">跳转</a>
跳转页面:
- <?php
- echo $_COOKIE["uid"];//不关浏览器页面时就不会报错,
- ?>
5月21 回话控制SESSION COOKIE的更多相关文章
- 会话控制:SESSION,COOKIE
1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...
- 会话控制session,cookie(0521)
简单介绍: 一.什么是session? 1. 定义: Session,在计算机中,尤其是在网络应用中,称为“会话”.在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常 ...
- 代码练习之 登陆 PHP会话控制 session cookie
log.html <html> <head><title>Home Page</title></head> <body> < ...
- Redis+Django(Session,Cookie)的用户系统
一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...
- Redis+Django(Session,Cookie、Cache)的用户系统
转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...
- [转载]JavaEE学习篇之——Session&&Cookie
原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- session cookie原理及应用
一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,中 ...
- 会话跟踪session cookie
会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在 ...
随机推荐
- TCGA phenotype各列的含义
Property name Description kind The resource type. aliquots[] List of barcodes of aliquots taken from ...
- Spring Boot 2 入门
Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 参考网上资料,一路踩了几个坑,终于搞出了 ...
- Java基础【基本数据类型包装类、int与String 之间的相互转换】
为什么会有基本类型包装类? 将基本类型数据类型封装成对象,这样的好处可以在对象中定义更多方法操作该数据. 包装类常用的操作就是用于基本数据类型与字符串之间的转换 问题:int a=100; 为什么不能 ...
- 洛谷P1164 小A点菜 DP入门
原题传输门>>https://www.luogu.org/problem/show?pid=1164<< 前几天开始联系DP的,一路水题做到这,发现这题套不了模板了QAQ 在大 ...
- dynamic web module讲解
一.java的web系统有多种类型,比如静态的和动态的,然后动态的java web project要设置dynamic web module,也就是动态网页模型,他必须要和对应的服务器搭配好了才能跑, ...
- JavaScript 调试常见报错以及原因
JavaScript 调试常见报错以及原因 测试环境 chrome 版本 66.0.3359.170(正式版本) (64 位) TypeError 类型错误 不是操作符所接受的数据类型. //---- ...
- Codeforces Round #219 (Div. 2) D. Counting Rectangles is Fun 四维前缀和
D. Counting Rectangles is Fun time limit per test 4 seconds memory limit per test 256 megabytes inpu ...
- Spring Boot的数据访问 之Spring Boot + jpa的demo
1. 快速地创建一个项目,pom中选择如下 <?xml version="1.0" encoding="UTF-8"?> <project x ...
- typeScript入门基础 (2): 数据 类型, 函数定义
1. number , boolean, string, null, undefind 枚举, any, array数组, 元祖, 2...枚举,需要的注意点, 下一个图,就是为什么yello ...
- try catch对Spring事务的影响
一.Spring 的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚. 异常中unchecked异常包括error和runtime异常.需要try catch或向上 ...