PHP会话控制Session与Cookie
理解会话控制的概念:
阅读过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的更多相关文章
- PHP......会话控制SESSION与COOKIE
一.SESSION Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 ...
- PHP中的会话控制—session和cookie(实现数据传值功能)
1.session 登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器: (2)session每个人(登陆者)存一份: (3)session ...
- 会话控制:SESSION,COOKIE
1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...
- PHP处理会话函数session和cookie总结
本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.sess ...
- php 会话控制(关于cookie的维护与生命周期)
cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件中. cookie内容的存储是键值对的方式,键和值都只能是字符串. 函数原型:setcoo ...
- 会话控制Session的应用
Session技术与Cookie相似,都是用来存储使用者的相关资料.但是最大不同之处在于Cookie是将数据存放于客户端计算机中,而Session则是将数据存放于服务器系统下. 在Web技术发展史上, ...
- 会话控制session,cookie(0521)
简单介绍: 一.什么是session? 1. 定义: Session,在计算机中,尤其是在网络应用中,称为“会话”.在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常 ...
- php 会话控制(禁用cookie后session为什么会失效?)
首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...
- php 会话控制(了解cookie与session之间的区别与联系)
相同点: 都可以在解决HTTP无状态的问题,使同一个客户端在访问网站的多次请求中,可以保存,设置信息,并且在请求事物之间建立联系. 不同点: 简单的说cookie的信息保存在客户端,session的信 ...
随机推荐
- 7-1 vim 编辑器
1. vi:visual interface. 1. vim:vi improved 这些都属于全屏编辑器,又是模式化编辑器 vim模式(3种) 编辑模式(命令模式) 输入模式 末行模式 模式转换 编 ...
- RadioGroup
获取选中的Text radioGroup1.Properties.Items[radioGroup1.SelectedIndex].Description
- jQuery html text val方法使用
jQuery html text val方法使用 <%@ page language="java" import="java.util.*" pageEn ...
- webview 设置编码
WebSettings settings = webView.getSettings(); // 设置页面编码 settings.setDefaultTextEncodingName("ut ...
- Spring集合配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://ww ...
- vue原来可以这样上手
今儿与一群友讨论vue相关问题让我思量极深,1.我们是否在争对性解决问题或者说是帮助别人:2.我们是否在炫耀自己的技能.以下是被戏剧化的对白: "群友":最近按照vue官网示例学习 ...
- HDU1394(线段树||树状数组)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- 基于basys2驱动LCDQC12864B的verilog设计图片显示
话不多说先上图 前言 在做这个实验的时候在网上找了许多资料,都是关于使用单片机驱动LCD显示,确实用单片机驱动是要简单不少,记得在FPGA学习交流群里问问题的时候,被前辈指教,说给我最好的指教便是别在 ...
- [html5] 学习笔记-html5音频视频
HTML5 最大的新特色之一就是支持音频和视频.在 HTML5 之前,我们必须使用插件如 Silverlight 或 Flash 来实现这些功能.在 HTML5 中,可以直接使用新标签< au ...
- 制作jar文件
一.制作可运行jar文件 使用java的swing.awt制作了一个简单的界面交互模块.程序打成jar包后,能双击运行,制作过程: 1.eclipse →properties →Export,选择ja ...