博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP......会话控制SESSION与COOKIE
阅读量:4703 次
发布时间:2019-06-10

本文共 3614 字,大约阅读时间需要 12 分钟。

一、SESSION

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。

具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
需要注意的是,一个Session的概念需要包括特定的客户端,特定的 端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。
特点:
1.存储在服务端的
2.每个人存一份
3.可以存储任意类型数据
4.默认过期时间15分钟
5.比较安全,但会加大服务端压力
用法:
要使用session,无论是读取还是写入,都必须开启session。开启session使用session_start();而且必须写在php代码最顶端,中间不能有别的代码,否则会报错。
<?php
session_start();  //开启session
$_SESSION["uid"] = "zhangsan"; //写入session
echo $_SESSION["uid"];//获取
?>
例1:在第一个页面存入session,在第二个页面获取session
第一个页面:

第二个页面:

注意:在一个页面存入session,即使关闭该页面,其他页面也能获取到session,只要浏览器不关就行,一旦关闭浏览器,session就不存在了。

例2:登录时成功则跳转到主页面,若不登录,直接输入网址到主页面则会跳转到登录页面,这样就必须登录才能看到主页面,增加了安全性。
登录页面:

登录

用户名:
密码:  

登录处理页面:

StrQuery($sql,0,"weixin");if($r==1){ $_SESSION["uid"] = $uid; header("location:main.php"); }else{ header("location:login.php"); }

主页面:

例3:加入购物车,控制购买数量

水果展示页面:

水果列表

Query($sql);foreach($attr as $v){ echo "
"; //GET方法传主键值}?>
水果名称 水果价格 水果产地 水果库存 操作
{
$v[1]}
{
$v[2]}
{
$v[3]}
{
$v[4]}
加入购物车
查看购物车

加入购物车处理页面:

$v) { if($v[0]==$code) //找到该主键值,数量加1 { //改$v[1]不行,因为$v是赋值后的变量,它的变化与原数组$attr无关,所以必须用原数组去变化 $attr[$k][1]= $v[1]+1; } } $_SESSION["sg"]= $attr; } else //若不存在,追加一个数组,存入session { $arr = array($code,1); array_push($attr,$arr); $_SESSION["sg"] = $attr; } }//判断该水果是否已经存在的方法function iscunzai($c) //传入一个参数{ $attr = $_SESSION["sg"]; //获取session中的数据 $b = false; foreach($attr as $v) { $b= $b || in_array($c,$v); //$c是否在数组$v里面,返回true or false } return $b; //若存在,返回true,若不存在,返回false}header("location:showlist.php");

购物车页面:

无标题文档

购物车

Query($sql); echo "
"; } }?>
水果名称 水果价格 数量 操作
{
$arr[0][0]}
{
$arr[0][1]}
{
$v[1]}
删除
 

删除处理页面:

$v)//循环遍历二维数组{ if($v[0]==$code ) //找到与传过来的主键值相等的主键值 { //判断水果数量是否为1 if($v[1]>1) { $attr[$k][1] = $v[1]-1; } else //数量等于1 { unset($attr[$k]); } } }$_SESSION["sg"] = $attr; //将删除操作完成后的二维数组存入sessionheader("location:gouwuche.php");

二、COOKIE

“Cookie”是小量信息,由发 送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信 息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。

特点:

1.存储在客户端的

2.每个人存一份

3.只能存储字符串

4.默认永不过期的,除非清除掉

5.安全性较低

用法:

setcookie("uid","zhangsan");//设置cookie

echo $_COOKIE["uid"];//获取cookie,若是在本页面取值,第一次会报错。

例子:

跳转页面:

注意:设置cookie后,在其他页面也可以取到cookie的值:"zhangsan"。

 

转载于:https://www.cnblogs.com/xinghun/p/5527598.html

你可能感兴趣的文章
创建简单线程
查看>>
ASP.NET MVC 随想录——开始使用ASP.NET Identity,初级篇
查看>>
用纯JS实现双向数据绑定
查看>>
php 解决返回数据 数字 变成科学计数法后转换问题
查看>>
How-To-Secure-A-Linux-Server
查看>>
网络与多线程的设计例子
查看>>
ubuntu12.04 各种小问题及解决方案集锦【持续更新】
查看>>
如何更改silverlight datagrid header的背景
查看>>
Data Structure Binary Tree: Construct Full Binary Tree from given preorder and postorder traversals
查看>>
类和对象的系统函数和运算符
查看>>
Checkstyle
查看>>
go语言的数组
查看>>
【题解】士兵训练-C++
查看>>
C#设计模式(4)——抽象工厂模式
查看>>
高级基础知识 ObservableCollection 类
查看>>
20165101刘天野 2018-2019-2《网络对抗技术》Exp5 MSF基础应用
查看>>
LeetCode: Find Bottom Left Tree Value
查看>>
安装包签名
查看>>
流行的开源软件和技术
查看>>
iOS---去除url中的反斜扛
查看>>