理解会话控制的概念:

阅读过HTTP协议相关资料的同学都会知道HTTP协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议,所谓无状态,指的是不会维护http请求数据,http请求是独立的,不持久的。也就是说HTTP协议没有一个内建的机制来维护两个事务之间的状态或者说是关系吧。当一个用户在请求一个页面后再去请求另外一个页面时,HTTP将无法告诉我们这两个请求是否来自同一个用户。

由此我们就会觉得很奇怪了,平时我们在论坛逛帖子或电商网站购物时,只要我们在这个站点内,不论我们怎么跳转,从一个页面跑到另一个页面,网站总会记得我是谁,比如告诉你购买车里选了哪几样东西。这就是运用了HTTP会话控制。在网站中跟踪一个变量,通过对变量的跟踪,使多个请求事物之间建立联系,根据授权和用户身份显示不同的内容、不同页面。看登入者是谁,给他不一样的内容

会话控制的两个计数:

session

1.保存在服务器且每个人一份

2.可以存储任何类型的数据

3.有一个默认的过期时间

优点:安全

缺点:容易造成服务器压力过大

cookie

1.保存在客户端

2.只能存储字符串

3.不会过期

优点:不会对服务器造成很大的压力

缺点:安全没有session好;

session用法

首先创建一个存储页面(赋值):

session_start();
//注意:在所有使用session页面最顶端要开启session--"session_start()";前面不许放东西 $_SESSION["name"]="张三";//存储;
//echo $_SESSION["name"];

开启(取值):

session_start();//开启session

echo $_SESSION["name"];

只要不关掉游览器他就一直存在

cookie用法:

首先创建一个存储页面(赋值):

session_start();
//注意:在所有使用session页面最顶端要开启session--"session_start()";前面不许放东西
$_COOKIE["name"]="张三";//存储;
setcookie("shao","5")
//setcookie(设置cookie),第一个参数是你要存储的名字,第二个是你要往里面存的值 ?>

开启(取值):

<?php

session_start();//开启session

echo $_COOKIE["shao"];

cookie不要要开启cookie

session每个页面都需要开启

以上就是两种方法的用法

例子:

先来一个登入页面:

<body>
<form action="chuli.php" method="post">
<div>帐号:<input type="text" name="zhang"/></div>
<div>密码:<input type="text" name="mi"/></div>
<input type="submit" value="登入"/>
</form>
</body>

登入处理:

<?php
session_start();
//开启session
include ("db.class.php");
//引用封装类
$db = new db();
$zhang = $_POST["zhang"];
$mi = $_POST["mi"];
$sql = "select mi from mydb WHERE zhang='{$zhang}'";
$arr = $db->Query($sql);
if($arr[0][0]==$mi && !empty($mi))
//如果用户传的密码一致,且不为空
{
//即将跳转页面之前,把帐号存到session里面
$_SESSION["zhang"] = $zhang;
header("location:main.php");
}
else
{
echo "输入错误";
}

我们要求通过登入页面,进入主页面;

如果直接访问主页面地址也可以进入程序,这样是不合理的;

我们需要控制用户必须通过登入,才能访问,不登入不能访问并传送到登入页面

在主页面:

<body>

<?php
//登入一定要取用户名!取用户名
session_start();
//echo $_SESSION["zhang"];
//试一下:已取到帐号,知道是这个帐号登入了 //根据session
if(empty($_SESSION["zhang"]))
{
header("location:dengru.php");
//如果为空 跳转到登入页面
exit;
//中断
} ?>
</body>

这样的话 我输入网址:

不可以强登!这种方式是经常使用的,也是必须要使用的

注销登入:

1.清除session;

2.跳转到登入页面

注销SESSION时不能用unset($_SESSION),可以使用$_SESSION = array()或则$_SESSION = null,正确注销session的方法如下:

//正确的注销session方法:
//1开启session
session_start(); //2、清空session信息
$_SESSION = array(); //3、清楚客户端sessionid
if(isset($_COOKIE[session_name()]))
{
setCookie(session_name(),'',time()-3600,'/');
}
//4、彻底销毁session
session_destroy();

.

PHP会话控制Session与Cookie的更多相关文章

  1. PHP......会话控制SESSION与COOKIE

    一.SESSION Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 ...

  2. PHP中的会话控制—session和cookie(实现数据传值功能)

    1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session ...

  3. 会话控制:SESSION,COOKIE

    1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...

  4. PHP处理会话函数session和cookie总结

    本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.sess ...

  5. php 会话控制(关于cookie的维护与生命周期)

    cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件中. cookie内容的存储是键值对的方式,键和值都只能是字符串. 函数原型:setcoo ...

  6. 会话控制Session的应用

    Session技术与Cookie相似,都是用来存储使用者的相关资料.但是最大不同之处在于Cookie是将数据存放于客户端计算机中,而Session则是将数据存放于服务器系统下. 在Web技术发展史上, ...

  7. 会话控制session,cookie(0521)

    简单介绍: 一.什么是session? 1. 定义: Session,在计算机中,尤其是在网络应用中,称为“会话”.在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常 ...

  8. php 会话控制(禁用cookie后session为什么会失效?)

    首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...

  9. php 会话控制(了解cookie与session之间的区别与联系)

    相同点: 都可以在解决HTTP无状态的问题,使同一个客户端在访问网站的多次请求中,可以保存,设置信息,并且在请求事物之间建立联系. 不同点: 简单的说cookie的信息保存在客户端,session的信 ...

随机推荐

  1. ArcGisServer根据最大最小坐标换算瓦片行列号(转载)

    ArcGisServer根据最大最小坐标换算瓦片行列号 1.前言 在上一节中我们知道了屏幕上一像素等于实际中多少单位长度(米或经纬度)的换算方法,而知道这个原理后,接下来我们要怎么用它呢?它和我们前端 ...

  2. var d = document.getElementById 错误

    var d = document.getElementById; var s = d("demo").innerHTML; alert(s); // IE 没有问题,其他浏览器必须 ...

  3. JMeter 连接数据库报错No suitable driver found for jdbc:xxxxxxxxx

    添加JDBC Connection Configuration 和 JDBC Request 组件,添加相关信息 注意两个组件里面输入的Variable Name 必须一致 运行查看结果树出现如下错误 ...

  4. cf734 E. Anton and Tree

    这个题的题意还是很劲的.搞了好久才知道是怎么变得. (假设已经缩好了点,每次边中间颜色不同的,然后和就和他外面的相同,继续再变这个大的,依次类推,最多就是树的直径D/2) (还是英语水平太弱了(吐槽+ ...

  5. poj 1013(uva 608) Counterfeit Dollar

    #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #in ...

  6. underscore 1.7.0 api

    它是这个问题的答案:“如果我在一个空白的HTML页面前坐下, 并希望立即开始工作, 我需要什么?“ http://www.css88.com/doc/underscore/#

  7. 无限“递归”的python程序

    如果一个函数直接或者间接调用了自己,那么就形成了递归(recursion),比如斐波那契数列的一个实现 def fib(n): if n <= 2: return 1 else: return ...

  8. 通过Spring Data Neo4J操作您的图形数据库

    在前面的一篇文章<图形数据库Neo4J简介>中,我们已经对其内部所使用的各种机制进行了简单地介绍.而在我们尝试对Neo4J进行大版本升级时,我发现网络上并没有任何成型的样例代码以及简介,而 ...

  9. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 ...

  10. JAVA中的char类型

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a';  //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=1 ...